www.javfree.online
Open in
urlscan Pro
2606:4700:30::6818:6daa
Public Scan
- Internal
- urlscan.io (IP)
- urlscan.io (Domain)
- Effective Hostname
- VirusTotal
- SecurityTrails
- crt.sh
- RiskIQ
- Submitted URL
- Google Safe Browsing
- Archive.org
- Effective IP
- VirusTotal
- SecurityTrails
- RiskIQ
- Domaintools
- Censys
Add Verdict Report
https://www.javfree.online/UQ4aQGGlJ8fa/watch-meyd-455-i-liked-getting-fucked-by-my-husbands-friend-rika-ayumi
Submission: On March 20 via manual (March 20th 2019, 12:18:06 pm UTC) from JP
Summary
TLS certificate: Issued by COMODO ECC Domain Validation Secure S... on February 7th 2019. Valid for: 6 months.
This is the only time www.javfree.online was scanned on urlscan.io!
urlscan.io Verdict: No classification
Domain & IP information
IP Address | AS Autonomous System | ||
---|---|---|---|
21 | 2606:4700:30:... 2606:4700:30::6818:6daa | 13335 (CLOUDFLAR...) (CLOUDFLARENET - Cloudflare) | |
4 | 209.197.3.15 209.197.3.15 | 20446 (HIGHWINDS3) (HIGHWINDS3 - Highwinds Network Group) | |
2 | 109.206.164.148 109.206.164.148 | 50245 (SERVEREL-AS) (SERVEREL-AS) | |
1 | 2606:2800:234... 2606:2800:234:1f1f:1754:1fef:718:1223 | 15133 (EDGECAST) (EDGECAST - MCI Communications Services) | |
1 | 2a00:1450:400... 2a00:1450:4001:80b::200a | 15169 (GOOGLE) (GOOGLE - Google LLC) | |
1 | 2606:4700::68... 2606:4700::6813:c597 | 13335 (CLOUDFLAR...) (CLOUDFLARENET - Cloudflare) | |
6 | 88.208.59.71 88.208.59.71 | 39572 (ADVANCEDH...) (ADVANCEDHOSTERS-AS) | |
4 | 2a00:1450:400... 2a00:1450:4001:816::200e | 15169 (GOOGLE) (GOOGLE - Google LLC) | |
8 | 23.251.141.244 23.251.141.244 | 15169 (GOOGLE) (GOOGLE - Google LLC) | |
2 | 95.211.229.246 95.211.229.246 | 60781 (LEASEWEB-...) (LEASEWEB-NL-AMS-01 Netherlands) | |
1 | 31.220.24.95 31.220.24.95 | 39572 (ADVANCEDH...) (ADVANCEDHOSTERS-AS) | |
3 | 69.89.69.121 69.89.69.121 | 558 (NNEXT) (NNEXT - NV Next LLC) | |
1 | 2606:4700::68... 2606:4700::6810:a532 | 13335 (CLOUDFLAR...) (CLOUDFLARENET - Cloudflare) | |
2 | 93.93.51.191 93.93.51.191 | 34655 (DOCLER-AS) (DOCLER-AS) | |
3 | 93.93.51.190 93.93.51.190 | 34655 (DOCLER-AS) (DOCLER-AS) | |
1 | 93.93.53.193 93.93.53.193 | 34655 (DOCLER-AS) (DOCLER-AS) | |
1 | 93.93.53.194 93.93.53.194 | 34655 (DOCLER-AS) (DOCLER-AS) | |
62 | 18 |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN13335 (CLOUDFLARENET - Cloudflare, Inc., US)
www.javfree.online | |
pics.javfree.online |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN20446 (HIGHWINDS3 - Highwinds Network Group, Inc., US)
PTR: vip0x00f.map2.ssl.hwcdn.net
maxcdn.bootstrapcdn.com |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN50245 (SERVEREL-AS, NL)
PTR: 109.206.164.148.serverel.net
ioredi.com |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN15133 (EDGECAST - MCI Communications Services, Inc. d/b/a Verizon Business, US)
ads.exoclick.com |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN15169 (GOOGLE - Google LLC, US)
ajax.googleapis.com |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN13335 (CLOUDFLARENET - Cloudflare, Inc., US)
cdnjs.cloudflare.com |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN39572 (ADVANCEDHOSTERS-AS, NL)
ca.clcknads.pro | |
acrmbjkk6qc5utby.pro |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN15169 (GOOGLE - Google LLC, US)
www.google-analytics.com |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN15169 (GOOGLE - Google LLC, US)
PTR: 244.141.251.23.bc.googleusercontent.com
syndication.exoclick.com |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN60781 (LEASEWEB-NL-AMS-01 Netherlands, NL)
syndication.exoclick.com |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN39572 (ADVANCEDHOSTERS-AS, NL)
sitemnk.com |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN558 (NNEXT - NV Next LLC, US)
engine.phn.doublepimp.com |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN13335 (CLOUDFLARENET - Cloudflare, Inc., US)
openload.co |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN34655 (DOCLER-AS, HU)
pt.ptawe.com |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN34655 (DOCLER-AS, HU)
galleryn1.awemwh.com |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN34655 (DOCLER-AS, HU)
click.jasmin.com |
- IP Lookup
- urlscan.io
- SecurityTrails
- VirusTotal
- AbuseIPDB
- Censys
- Domaintools
- ipinfo.io
- Shodan
- ASN Lookup
- urlscan.io
- CAIDA Rank
- ipinfo.io
- CIRCL BGP Ranking
ASN34655 (DOCLER-AS, HU)
click.livejasmin.com |
Apex Domain Subdomains |
Transfer | |
---|---|---|
21 |
javfree.online
www.javfree.online pics.javfree.online |
73 KB |
11 |
exoclick.com
ads.exoclick.com syndication.exoclick.com |
1008 B |
4 |
google-analytics.com
www.google-analytics.com |
17 KB |
4 |
clcknads.pro
ca.clcknads.pro |
47 KB |
4 |
bootstrapcdn.com
maxcdn.bootstrapcdn.com |
114 KB |
3 |
awemwh.com
galleryn1.awemwh.com |
27 KB |
3 |
doublepimp.com
engine.phn.doublepimp.com |
4 KB |
2 |
ptawe.com
pt.ptawe.com |
5 KB |
2 |
acrmbjkk6qc5utby.pro
acrmbjkk6qc5utby.pro |
372 B |
2 |
ioredi.com
ioredi.com |
64 KB |
1 |
livejasmin.com
click.livejasmin.com |
804 B |
1 |
jasmin.com
click.jasmin.com |
796 B |
1 |
openload.co
openload.co |
|
1 |
sitemnk.com
sitemnk.com |
458 B |
1 |
cloudflare.com
cdnjs.cloudflare.com |
7 KB |
1 |
googleapis.com
ajax.googleapis.com |
30 KB |
62 | 16 |
Domain | Requested by | |
---|---|---|
15 | pics.javfree.online |
www.javfree.online
|
10 | syndication.exoclick.com |
ads.exoclick.com
|
6 | www.javfree.online |
www.javfree.online
ajax.googleapis.com |
4 | www.google-analytics.com |
www.javfree.online
|
4 | ca.clcknads.pro |
www.javfree.online
ca.clcknads.pro |
4 | maxcdn.bootstrapcdn.com |
www.javfree.online
|
3 | galleryn1.awemwh.com | |
3 | engine.phn.doublepimp.com |
ca.clcknads.pro
|
2 | pt.ptawe.com |
ca.clcknads.pro
|
2 | acrmbjkk6qc5utby.pro |
ca.clcknads.pro
|
2 | ioredi.com |
www.javfree.online
ioredi.com |
1 | click.livejasmin.com | |
1 | click.jasmin.com | |
1 | openload.co |
ajax.googleapis.com
|
1 | sitemnk.com |
ioredi.com
|
1 | cdnjs.cloudflare.com |
www.javfree.online
|
1 | ajax.googleapis.com |
www.javfree.online
|
1 | ads.exoclick.com |
www.javfree.online
|
62 | 18 |
This site contains links to these domains. Also see Links.
Domain |
---|
openload.co |
Subject Issuer | Validity | Valid | |
---|---|---|---|
sni33308.cloudflaressl.com COMODO ECC Domain Validation Secure Server CA 2 |
2019-02-07 - 2019-08-16 |
6 months | crt.sh |
*.bootstrapcdn.com COMODO RSA Domain Validation Secure Server CA |
2018-10-03 - 2019-10-12 |
a year | crt.sh |
ioredi.com Let's Encrypt Authority X3 |
2019-01-23 - 2019-04-23 |
3 months | crt.sh |
*.exoclick.com DigiCert SHA2 Secure Server CA |
2017-12-12 - 2020-12-16 |
3 years | crt.sh |
*.googleapis.com Google Internet Authority G3 |
2019-03-01 - 2019-05-24 |
3 months | crt.sh |
ssl412106.cloudflaressl.com COMODO ECC Domain Validation Secure Server CA 2 |
2019-03-02 - 2019-09-08 |
6 months | crt.sh |
ca.clcknads.pro Let's Encrypt Authority X3 |
2019-02-13 - 2019-05-14 |
3 months | crt.sh |
*.google-analytics.com Google Internet Authority G3 |
2019-03-01 - 2019-05-24 |
3 months | crt.sh |
sitemnk.com Let's Encrypt Authority X3 |
2019-02-23 - 2019-05-24 |
3 months | crt.sh |
acrmbjkk6qc5utby.pro Let's Encrypt Authority X3 |
2019-02-14 - 2019-05-15 |
3 months | crt.sh |
engine.doublepimp.com Go Daddy Secure Certificate Authority - G2 |
2018-07-22 - 2019-09-20 |
a year | crt.sh |
ssl436500.cloudflaressl.com COMODO ECC Domain Validation Secure Server CA 2 |
2019-03-07 - 2019-09-13 |
6 months | crt.sh |
pt.ptawe.com Let's Encrypt Authority X3 |
2019-03-17 - 2019-06-15 |
3 months | crt.sh |
*.awemwh.com AlphaSSL CA - SHA256 - G2 |
2018-04-10 - 2019-04-11 |
a year | crt.sh |
*.jasmin.com COMODO RSA Domain Validation Secure Server CA |
2017-12-08 - 2020-12-09 |
3 years | crt.sh |
*.livejasmin.com COMODO RSA Domain Validation Secure Server CA |
2018-12-17 - 2019-12-24 |
a year | crt.sh |
This page contains 12 frames:
Primary Page:
https://www.javfree.online/UQ4aQGGlJ8fa/watch-meyd-455-i-liked-getting-fucked-by-my-husbands-friend-rika-ayumi
Frame ID: 8983791A708030419B48FF057DF2D369
Requests: 56 HTTP requests in this frame
Frame:
https://syndication.exoclick.com/ads-iframe-display.php?idzone=2686590&type=300x250&p=https%3A//www.javfree.online/UQ4aQGGlJ8fa/watch-meyd-455-i-liked-getting-fucked-by-my-husbands-friend-rika-ayumi&dt=1553084270204&sub=&tags=&screen_resolution=1600x1200&el=
Frame ID: D0E413EC66D887895A1C28BB4DA32F73
Requests: 1 HTTP requests in this frame
Frame:
https://syndication.exoclick.com/ads-iframe-display.php?idzone=2686592&type=300x250&p=https%3A//www.javfree.online/UQ4aQGGlJ8fa/watch-meyd-455-i-liked-getting-fucked-by-my-husbands-friend-rika-ayumi&dt=1553084270207&sub=&tags=&screen_resolution=1600x1200&el=
Frame ID: A21F69E3D7AA5B52106889785E5DC448
Requests: 1 HTTP requests in this frame
Frame:
https://syndication.exoclick.com/ads-iframe-display.php?idzone=2686594&type=300x250&p=https%3A//www.javfree.online/UQ4aQGGlJ8fa/watch-meyd-455-i-liked-getting-fucked-by-my-husbands-friend-rika-ayumi&dt=1553084270211&sub=&tags=&screen_resolution=1600x1200&el=
Frame ID: FCB13A9FABBED4D1E6180EE97E46FB25
Requests: 1 HTTP requests in this frame
Frame:
https://syndication.exoclick.com/ads-iframe-display.php?idzone=2686584&type=728x90&p=https%3A//www.javfree.online/UQ4aQGGlJ8fa/watch-meyd-455-i-liked-getting-fucked-by-my-husbands-friend-rika-ayumi&dt=1553084270249&sub=&tags=&screen_resolution=1600x1200&el=
Frame ID: A9964AAF20454B3F14C3265BB180BE3D
Requests: 1 HTTP requests in this frame
Frame:
https://syndication.exoclick.com/ads-iframe-display.php?idzone=2686588&type=300x100&p=https%3A//www.javfree.online/UQ4aQGGlJ8fa/watch-meyd-455-i-liked-getting-fucked-by-my-husbands-friend-rika-ayumi&dt=1553084270252&sub=&tags=&screen_resolution=1600x1200&el=
Frame ID: 8B8D1DF5A1130DECE4BD672362443A5E
Requests: 1 HTTP requests in this frame
Frame:
https://syndication.exoclick.com/ads-iframe-display.php?idzone=2686582&type=728x90&p=https%3A//www.javfree.online/UQ4aQGGlJ8fa/watch-meyd-455-i-liked-getting-fucked-by-my-husbands-friend-rika-ayumi&dt=1553084270308&sub=&tags=&screen_resolution=1600x1200&el=
Frame ID: 62494087DBCB2ADEB2CDC1F4AE80C51F
Requests: 1 HTTP requests in this frame
Frame:
https://syndication.exoclick.com/ads-iframe-display.php?idzone=2686586&type=300x100&p=https%3A//www.javfree.online/UQ4aQGGlJ8fa/watch-meyd-455-i-liked-getting-fucked-by-my-husbands-friend-rika-ayumi&dt=1553084270312&sub=&tags=&screen_resolution=1600x1200&el=
Frame ID: 2AC6ECEDC5136854344ED6D33026F9C4
Requests: 1 HTTP requests in this frame
Frame:
https://syndication.exoclick.com/ads-iframe-display.php?idzone=2686596&type=300x250&p=https%3A//www.javfree.online/UQ4aQGGlJ8fa/watch-meyd-455-i-liked-getting-fucked-by-my-husbands-friend-rika-ayumi&dt=1553084270318&sub=&tags=&screen_resolution=1600x1200&el=
Frame ID: BA58667573B818E228230AFFD613FB41
Requests: 1 HTTP requests in this frame
Frame:
https://syndication.exoclick.com/ads-iframe-display.php?idzone=2686600&type=300x250&p=https%3A//www.javfree.online/UQ4aQGGlJ8fa/watch-meyd-455-i-liked-getting-fucked-by-my-husbands-friend-rika-ayumi&dt=1553084270334&sub=&tags=&screen_resolution=1600x1200&el=
Frame ID: 57016A398EAB0F92A8C0E43D6E3E0D1B
Requests: 1 HTTP requests in this frame
Frame:
https://syndication.exoclick.com/ads-iframe-display.php?idzone=2686604&type=300x250&p=https%3A//www.javfree.online/UQ4aQGGlJ8fa/watch-meyd-455-i-liked-getting-fucked-by-my-husbands-friend-rika-ayumi&dt=1553084270341&sub=&tags=&screen_resolution=1600x1200&el=
Frame ID: BC74C51C845F379F29F9F18AFC615796
Requests: 1 HTTP requests in this frame
Frame:
https://openload.co/embed/UnLYVYbIaY0
Frame ID: D9A34D0DBDB7A1CA21FF422BE5F6E2AD
Requests: 1 HTTP requests in this frame
Screenshot
Detected technologies
CloudFlare (CDN) ExpandDetected patterns
- headers server /cloudflare/i
Font Awesome (Font Scripts) Expand
Detected patterns
- html /<link[^>]* href=[^>]+font-awesome(?:\.min)?\.css/i
Google Analytics (Analytics) Expand
Detected patterns
- script /google-analytics\.com\/(?:ga|urchin|(analytics))\.js/i
- env /^gaGlobal$/i
jQuery (JavaScript Libraries) Expand
Detected patterns
- env /^jQuery$/i
Twitter Bootstrap () Expand
Detected patterns
- html /<link[^>]+?href="[^"]+bootstrap(?:\.min)?\.css/i
Page Statistics
62
Requests
100
%
HTTPS
35
%
IPv6
16
Domains
18
Subdomains
18
IPs
4
Countries
392
kB
Transfer
2782
kB
Size
10
Cookies
1 Outgoing links
These are links going to different origins than the main page.
Title: 下載
Search URL Search Domain Scan URL
Redirected requests
There were HTTP redirect chains for the following requests:
62 HTTP transactions
5 data transactions
Method Protocol |
Status | Resource Path |
Size x-fer |
Time Latency |
Type MIME-Type |
IP Location |
|||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GET H2 |
200 |
Primary Request
watch-meyd-455-i-liked-getting-fucked-by-my-husbands-friend-rika-ayumi
Show response
www.javfree.online/UQ4aQGGlJ8fa/ |
31 KB 7 KB |
1719ms
1677ms |
Document
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
bootstrap.min.css
maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/ |
147 KB 20 KB |
46ms
19ms |
Stylesheet
text/css |
209.197.3.15 Highwinds Network... |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
font-awesome.min.css
maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/ |
30 KB 7 KB |
34ms
8ms |
Stylesheet
text/css |
209.197.3.15 Highwinds Network... |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
style.min.css
www.javfree.online/static/css/ |
4 KB 1 KB |
777ms
771ms |
Stylesheet
text/css |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
apu.php
Show response
ioredi.com/ |
63 KB 63 KB |
119ms
25ms |
Script
application/javascript |
109.206.164.148 SERVEREL-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
JavFree.png
www.javfree.online/static/img/ |
3 KB 3 KB |
742ms
737ms |
Image
image/png |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
Qma7W1GUoSHnvGybMX3XkE9XKsxiV6YnfkqoJnsPAiMVdW
pics.javfree.online/ipfs/ |
0 209 B |
93ms
48ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
loading.svg
www.javfree.online/static/img/ |
2 KB 1 KB |
14ms
13ms |
Image
image/svg+xml |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
ads.js
Show response
ads.exoclick.com/ |
2 KB 1008 B |
44ms
9ms |
Script
text/javascript |
2606:2800:234:1f1f:1754:1fef:718:1223 MCI Communication... |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
QmZLv1zS4gDpCbdcwb33bfCi2ZRedESrCicfT1hX2qRamR
pics.javfree.online/ipfs/ |
0 189 B |
24ms
23ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
Qme6Fcsie7x9PmouPnfwAkUcbSvACaVTMEatfsuJcE7MJ5
pics.javfree.online/ipfs/ |
0 189 B |
19ms
18ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
QmRQuS74meCDsbLP5FSEAEg51L5d4PRibD9mgJawM4Pjc3
pics.javfree.online/ipfs/ |
0 189 B |
10ms
10ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
QmeGy6fjAft9izEReppitTVbMYc6K1V1rXUtgEVYvvU2wX
pics.javfree.online/ipfs/ |
0 190 B |
10ms
10ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
QmczT7Z94FSU9XEBTUrrVx7YYwVe8xtrpM8pVuGNAb5GEr
pics.javfree.online/ipfs/ |
0 190 B |
13ms
13ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
QmYU6zQr8Ft5GQTWdaJjyeciGbazYYqMqv8UHHBcL1xE7F
pics.javfree.online/ipfs/ |
0 190 B |
10ms
9ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
QmUrKZCZrYwpH3Aki2hNUph1L9th1hSYgWtKUZZWPYGHKt
pics.javfree.online/ipfs/ |
0 189 B |
13ms
12ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
QmUDyjcgFuxjXAJe3hMdJzpHfbmYjzPQ3ea532HKXWNR8p
pics.javfree.online/ipfs/ |
0 189 B |
12ms
12ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
QmVbQUTSd766k3hrFS1ysSnWUKnYQLkJbn5sCEYPfUMDj9
pics.javfree.online/ipfs/ |
0 189 B |
9ms
9ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
QmYYd9ndi7tovBuaToWGPosYzyA2wyh5rneo4adiTdoACp
pics.javfree.online/ipfs/ |
0 190 B |
11ms
11ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
QmV4pVSpHwhtzzTnpVMbCtATxLTdRg2pqVAGAdp15xBR7L
pics.javfree.online/ipfs/ |
0 190 B |
10ms
9ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
QmZSx9Jdj7R9sJZQnzk2EQAaERKQn7cvz2N7GXS6v8iKev
pics.javfree.online/ipfs/ |
0 189 B |
29ms
28ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
jquery.min.js
Show response
ajax.googleapis.com/ajax/libs/jquery/3.1.1/ |
85 KB 30 KB |
41ms
6ms |
Script
text/javascript |
2a00:1450:4001:80b::200a Google LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
tether.min.js
Show response
cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/ |
24 KB 7 KB |
41ms
14ms |
Script
application/javascript |
2606:4700::6813:c597 Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
bootstrap.min.js
Show response
maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/ |
46 KB 12 KB |
11ms
11ms |
Script
text/javascript |
209.197.3.15 Highwinds Network... |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
jwplayer.js
Show response
www.javfree.online/static/jwplayer/ |
214 KB 58 KB |
16ms
16ms |
Script
application/javascript |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
js
Show response
ca.clcknads.pro/v1/a/23637/ |
20 KB 7 KB |
73ms
14ms |
Script
application/javascript |
88.208.59.71 ADVANCEDHOSTERS-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
23636
Show response
ca.clcknads.pro/v1/apop/js/zone/ |
87 KB 37 KB |
19ms
14ms |
Script
application/javascript |
88.208.59.71 ADVANCEDHOSTERS-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
analytics.js
Show response
www.google-analytics.com/ |
43 KB 17 KB |
6ms
5ms |
Script
text/javascript |
2a00:1450:4001:816::200e Google LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
1313002
Show response
ioredi.com/get/ |
2 KB 2 KB |
132ms
132ms |
Script
text/javascript |
109.206.164.148 SERVEREL-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
fontawesome-webfont.woff2
maxcdn.bootstrapcdn.com/font-awesome/4.7.0/fonts/ |
75 KB 76 KB |
8ms
7ms |
Font
font/woff2 |
209.197.3.15 Highwinds Network... |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
collect
www.google-analytics.com/r/ |
35 B 101 B |
15ms
13ms |
Image
image/gif |
2a00:1450:4001:816::200e Google LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
Cookie set
ads-iframe-display.php
syndication.exoclick.com/ Frame D0E4 |
0 0 |
218ms
167ms |
Document
text/html |
23.251.141.244 Google LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
Cookie set
ads-iframe-display.php
syndication.exoclick.com/ Frame A21F |
0 0 |
210ms
162ms |
Document
text/html |
23.251.141.244 Google LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
Cookie set
ads-iframe-display.php
syndication.exoclick.com/ Frame FCB1 |
0 0 |
212ms
166ms |
Document
text/html |
23.251.141.244 Google LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
Qma7W1GUoSHnvGybMX3XkE9XKsxiV6YnfkqoJnsPAiMVdW
pics.javfree.online/ipfs/ |
0 288 B |
10ms
9ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
Cookie set
ads-iframe-display.php
syndication.exoclick.com/ Frame A996 |
0 0 |
164ms
125ms |
Document
text/html |
23.251.141.244 Google LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
Cookie set
ads-iframe-display.php
syndication.exoclick.com/ Frame 8B8D |
0 0 |
103ms
67ms |
Document
text/html |
23.251.141.244 Google LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
Cookie set
ads-iframe-display.php
syndication.exoclick.com/ Frame 6249 |
0 0 |
161ms
127ms |
Document
text/html |
23.251.141.244 Google LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
Cookie set
ads-iframe-display.php
syndication.exoclick.com/ Frame 2AC6 |
0 0 |
119ms
80ms |
Document
text/html |
23.251.141.244 Google LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
Cookie set
ads-iframe-display.php
syndication.exoclick.com/ Frame BA58 |
0 0 |
128ms
76ms |
Document
text/html |
95.211.229.246 LEASEWEB-NL-AMS-0... |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
Cookie set
ads-iframe-display.php
syndication.exoclick.com/ Frame 5701 |
0 0 |
163ms
102ms |
Document
text/html |
95.211.229.246 LEASEWEB-NL-AMS-0... |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
Cookie set
ads-iframe-display.php
syndication.exoclick.com/ Frame BC74 |
0 0 |
233ms
132ms |
Document
text/html |
23.251.141.244 Google LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
notice.php
Show response
sitemnk.com/ |
37 B 458 B |
107ms
18ms |
Script
text/javascript |
31.220.24.95 ADVANCEDHOSTERS-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
blank
Show response
acrmbjkk6qc5utby.pro/ |
0 186 B |
92ms
21ms |
XHR
text/html |
88.208.59.71 ADVANCEDHOSTERS-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
blank
Show response
acrmbjkk6qc5utby.pro/ |
0 186 B |
84ms
21ms |
XHR
text/html |
88.208.59.71 ADVANCEDHOSTERS-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
getlink
Show response
www.javfree.online/UQ4aQGGlJ8fa/ |
9 B 75 B |
196ms
195ms |
XHR
application/json |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
404 |
Qma7W1GUoSHnvGybMX3XkE9XKsxiV6YnfkqoJnsPAiMVdW
pics.javfree.online/ipfs/ |
0 189 B |
14ms
13ms |
Image
text/html |
2606:4700:30::6818:6daa Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
200 OK |
truncated
Show response
/ |
64 KB 0 |
Script
text/plain |
|||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headersResponse headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
200 OK |
truncated
/ |
4 KB 0 |
Media
video/mp4 |
|||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headersResponse headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
23637
Show response
ca.clcknads.pro/v2/a/vsl/vst/ |
5 KB 2 KB |
15ms
13ms |
XHR
application/xml |
88.208.59.71 ADVANCEDHOSTERS-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
preroll.engine
Show response
engine.phn.doublepimp.com/ |
6 KB 2 KB |
1284ms
951ms |
XHR
text/xml |
69.89.69.121 NV Next LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
UnLYVYbIaY0
openload.co/embed/ Frame D9A3 |
0 0 |
77ms
49ms |
Document
text/html |
2606:4700::6810:a532 Cloudflare |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
200 OK |
truncated
/ |
42 B 0 |
Image
image/gif |
|||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headersResponse headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
v3
Show response
pt.ptawe.com/vast/ |
5 KB 5 KB |
69ms
17ms |
XHR
text/xml |
93.93.51.191 DOCLER-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
206 |
41887ce56dbc7fffecf9c0884f4a6784.mp4
galleryn1.awemwh.com/f8d2e11bd6c43618af00d6f28c91232a1e/ |
32 KB 0 |
59ms
20ms |
Media
video/mp4 |
93.93.51.190 DOCLER-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
200 OK |
truncated
/ |
2 KB 0 |
Image
image/png |
|||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headersResponse headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
200 OK |
truncated
/ |
715 B 0 |
Image
image/png |
|||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headersResponse headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
206 |
41887ce56dbc7fffecf9c0884f4a6784.mp4
galleryn1.awemwh.com/f8d2e11bd6c43618af00d6f28c91232a1e/ |
26 KB 27 KB |
66ms
65ms |
Media
video/mp4 |
93.93.51.190 DOCLER-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
track.engine
engine.phn.doublepimp.com/ |
0 2 KB |
259ms
258ms |
Image
text/plain |
69.89.69.121 NV Next LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
iu3.gif
pt.ptawe.com/8mke8/ |
43 B 199 B |
16ms
16ms |
Image
image/gif |
93.93.51.191 DOCLER-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
collect
www.google-analytics.com/ |
35 B 99 B |
20ms
13ms |
Image
image/gif |
2a00:1450:4001:816::200e Google LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
206 |
41887ce56dbc7fffecf9c0884f4a6784.mp4
galleryn1.awemwh.com/f8d2e11bd6c43618af00d6f28c91232a1e/ |
2 MB 0 |
14ms
10ms |
Media
video/mp4 |
93.93.51.190 DOCLER-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
204 |
imp
ca.clcknads.pro/v2/a/vsl/ |
0 300 B |
42ms
41ms |
Image
text/plain |
88.208.59.71 ADVANCEDHOSTERS-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
collect
www.google-analytics.com/ |
35 B 93 B |
6ms
6ms |
Image
image/gif |
2a00:1450:4001:816::200e Google LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
200 |
track.engine
engine.phn.doublepimp.com/ |
0 50 B |
162ms
160ms |
Image
text/plain |
69.89.69.121 NV Next LLC |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
ccs.php
click.jasmin.com/awe/ |
35 B 796 B |
80ms
19ms |
Image
image/gif |
93.93.53.193 DOCLER-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H/1.1 |
200 OK |
ccs.php
click.livejasmin.com/awe/ |
35 B 804 B |
59ms
10ms |
Image
image/gif |
93.93.53.194 DOCLER-AS |
|||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
Verdicts & Comments Add Verdict or Comment
39 JavaScript Global Variables
These are the non-standard "global" variables defined on the window object. These can be helpful in identifying possible client-side frameworks and code.
object| onselectstart object| onselectionchange function| queueMicrotask string| GoogleAnalyticsObject function| ga function| z3ll function| _clfkstu98l4c6nhnuvajpr string| ad_idzone string| ad_width string| ad_height object| google_tag_data object| gaplugins object| gaGlobal object| gaData function| getParameterFromUrl string| p number| dt string| exoDocumentProtocol string| ad_sub string| ad_sub2 string| ad_sub3 string| ad_tags string| ad_notify string| ad_el string| ad_type string| ad_screen_resolution function| PPFLSH15530842703590a6181925739821486click function| onClickTrigger boolean| zfgloadedpopup function| $ function| jQuery function| Tether function| webpackJsonpjwplayer function| jwplayer function| i333 function| f5yy string| _DfIrLoGdmy6vdQOr object| UmDWe9Dn8Fr2nKAs function| cIPop10 Cookies
Cookies are little pieces of information stored in the browser of a user. Whenever a user visits the site again, he will also send his cookie values, thus allowing the website to re-identify him even if he changed locations. This is how permanent logins work.
Domain/Path | Expires | Name / Value | |||
---|---|---|---|---|---|
openload.co/ | 1969-12-31 23:59:59 |
Name: _olbknd Value: w7 |
|||
.openload.co/ | 1970-01-19 08:10:20 |
Name: __cfduid Value: def47cca2224db61d466c9279cfb9b7441553084270 |
|||
.exoclick.com/ | 1970-01-18 23:26:10 |
Name: impressions Value: x%9CK%B42%B4%AA%CE%B42%B20%B3063%B2N%B42%06q%0D%AC3%AD%0Ca%D8%D4%D4%D8%C0%C2%C4%C8%1C%24hd%5Dleb%A5dhbb%A0d%5D%5B%0B%00%FAe%0F%D0 |
|||
.exoclick.com/ | 1970-01-19 16:55:56 |
Name: __uvt Value: a%3A1%3A%7Bi%3A0%3Bs%3A33%3A%225c922f6e8151d4.928219531494831112%22%3B%7D |
|||
www.javfree.online/UQ4aQGGlJ8fa | 1969-12-31 23:59:59 |
Name: Value: __test |
|||
.javfree.online/ | 1970-01-18 23:24:44 |
Name: _gat Value: 1 |
|||
.www.javfree.online/ | 1970-01-18 23:24:47 |
Name: __PPU_BACKCLCK_1313002 Value: true |
|||
.javfree.online/ | 1970-01-19 08:10:20 |
Name: __cfduid Value: d844997f0bfe3f407c26e05b718d8f42c1553084270 |
|||
.javfree.online/ | 1970-01-18 23:26:10 |
Name: _gid Value: GA1.2.458639972.1553084270 |
|||
.javfree.online/ | 1970-01-19 16:55:56 |
Name: _ga Value: GA1.2.807532072.1553084270 |
42 Console Messages
A page may trigger messages to the console to be logged. These are often error messages about being unable to load a resource or execute a piece of JavaScript. Sometimes they also provide insight into the technology behind a website.
Source | Level | URL Text |
---|---|---|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
[object HTMLDivElement]
|
console-api | log |
URL: data:text/plain;base64,d2luZG93Ll9EZklyTG9HZG15NnZkUU9yID0gJ1VtRFdlOURuOEZyMm5LQXMnO2kzMzMuZzY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307ZnVuY3Rpb24gaTMzMygpe31pMzMzLng1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5lMj09PSdmdW5jdGlvbic/aTMzMy53NS5lMi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5lMjt9O2kzMzMuSDI9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLlEyLmUyPT09J2Z1bmN0aW9uJz9pMzMzLlEyLmUyLmFwcGx5KGkzMzMuUTIsYXJndW1lbnRzKTppMzMzLlEyLmUyO307aTMzMy5iNT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUuVDY9PT0nZnVuY3Rpb24nP2kzMzMudzUuVDYuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUuVDY7fTtpMzMzLmU1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5yNT09PSdmdW5jdGlvbic/aTMzMy53NS5yNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5yNTt9O2kzMzMucTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnc1LmUyLmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1LmUyO307aTMzMy5RMj1mdW5jdGlvbigpe3ZhciBvMj1mdW5jdGlvbihkMixTMil7dmFyIEEyPVMyJjB4ZmZmZjt2YXIgRTI9UzItQTI7cmV0dXJuKEUyKmQyfDApKyhBMipkMnwwKXwwO30sczI9ZnVuY3Rpb24oYzIsSjIsaDIpe3ZhciBDMj0weGNjOWUyZDUxLHQyPTB4MWI4NzM1OTM7dmFyIFQyPWgyO3ZhciBPMj1KMiZ+MHgzO2Zvcih2YXIgVjI9MDtWMjxPMjtWMis9NCl7dmFyIGkyPWMyLmNoYXJDb2RlQXQoVjIpJjB4ZmZ8KGMyLmNoYXJDb2RlQXQoVjIrMSkmMHhmZik8PDh8KGMyLmNoYXJDb2RlQXQoVjIrMikmMHhmZik8PDE2fChjMi5jaGFyQ29kZUF0KFYyKzMpJjB4ZmYpPDwyNDtpMj1vMihpMixDMik7aTI9KGkyJjB4MWZmZmYpPDwxNXxpMj4+PjE3O2kyPW8yKGkyLHQyKTtUMl49aTI7VDI9KFQyJjB4N2ZmZmYpPDwxM3xUMj4+PjE5O1QyPVQyKjUrMHhlNjU0NmI2NHwwO31pMj0wO3N3aXRjaChKMiU0KXtjYXNlIDM6aTI9KGMyLmNoYXJDb2RlQXQoTzIrMikmMHhmZik8PDE2O2Nhc2UgMjppMnw9KGMyLmNoYXJDb2RlQXQoTzIrMSkmMHhmZik8PDg7Y2FzZSAxOmkyfD1jMi5jaGFyQ29kZUF0KE8yKSYweGZmO2kyPW8yKGkyLEMyKTtpMj0oaTImMHgxZmZmZik8PDE1fGkyPj4+MTc7aTI9bzIoaTIsdDIpO1QyXj1pMjt9VDJePUoyO1QyXj1UMj4+PjE2O1QyPW8yKFQyLDB4ODVlYmNhNmIpO1QyXj1UMj4+PjEzO1QyPW8yKFQyLDB4YzJiMmFlMzUpO1QyXj1UMj4+PjE2O3JldHVybiBUMjt9O3JldHVybntlMjpzMn07fSgpO2kzMzMuczY9ZnVuY3Rpb24oKXt2YXIgZTY9Mjtmb3IoO2U2IT09MTspe3N3aXRjaChlNil7Y2FzZSAyOnJldHVybntUNjpmdW5jdGlvbihZNil7dmFyIGQ2PTI7Zm9yKDtkNiE9PTE0Oyl7c3dpdGNoKGQ2KXtjYXNlIDU6ZDY9TzY8bDYubGVuZ3RoPzQ6NzticmVhaztjYXNlIDI6dmFyIEY2PScnLGw2PWRlY29kZVVSSSgiJiU1RC01NHQlMjAlNUU0LiRSIUc6JTE1K0UoVjA/I0QxQCEtLEksXy0kJEMxJTVCMDU6RDF1OjIlM0VYP00qNCdVKkE6JTFFJTNFVj1UITU0VC5HJyk0JTYwJiU1RCUyMC49SSUxRiU1QzQ0JFMqQToxJTI1RzolNUQlMjAkOEklMDJUOiUwNyZWKE0rLzRUOkE2JCRDMXE9PyUyNUEqQSUyMi0lMjVAMUMrKCRDKkE6JTAwJFM9JTVDLSUyNTRmOlYxJC5JJlU6NSNaKk0lMTQzJTI1Ry5UJTI1NSNYIU0lMEQvJTNFUj1FJTI1LTRfJlclMjAkJEktRjA1JTI1WTElNjAnMyNHO00pKCRJPyU1QzcoJTNFJTVFJTIwJTVEOiUxRSUzRSU1RSUyMlYrNCUzRWgxfiUyNTUlMjJJJTAyTS0vLlI3TSUwQS00JTE0MV8rJTIyK0MmJTVDKj8lMDdYOkAhPyUwOSUwRTFsJi0rWSRNZT8uWCUyMlItLzRVLlAvJjhYOiU1RCUyMD8vTz9aNiQ5SXRNdXR6SShWMD8pWCFVLSY0ZSpUOi8lMjVDMVklMjU3K0QsQS0xJTNFSSUwMVknLCZAK002JCUzRUI9JTVEOjQ0RytVOiUxMy8lNUIqUjckNGIlMjUlMDc6JTIyJTI1QSpBOiUxODpJeiUwMzolMjIlMjJWIVQhJTI1NEAqUS8oJTNFSSUyMFUlMjIyL0MxJTdGdHQlMjJVMU86JTE4J1gjTSsvKCU1QjpBOjo0ZCpfISUyMiUzRVg9TSUwMTk6SWdvNz1uJTFFMWQlM0MtKSU1RDglMEI6MiUzRUUmJTVEIz86Vj1AIT8lMDlCPUEhLyUzRUklMURNLS8kUj1NJy0jVCRNJTE1JTIyJyUwRSRXOnB5SSUxRiU1RTolMDAtSSUzQ0EnPyUxQSU1RDFnKz9zJTBFdiUwQTpoNG4lMjIlNUM9PyUwRE8jTTcxJiU1RTtNJTAyKDhSMUEhMiNNLlEoJDR0KCU1RDolMEU6UiFNLDUnJTVCMUMxMiUyMkkrVjI/JTNFRS4lNUQ3MStFKiU1RDA/JTFDTTElNjAwLjhWKFY6JTE1M0cqQDooJ0klMTUlMDE6IyUyNVgjViUyNS80dSYlNUQlMjA/JTAzUzElMDY6My9aJTIwRSE/KCU1QjpBOi4oJTVEKlAwPywlNUUhWjcpNCUwQjF6MCQnST9BLS8lM0VJJTFGTSclMjAkVCpfOiUwNS9VOlQ6MytZKyU1Qyk/JTA0JTVCLFo6JyNFKk0lMDU2NGMlM0NDOiQyJTVFO00lMTI/ZkklMEMlNUMqJyNQMWRxKiglMDUxUjolMjA6RyNKOiUyMiUyNVgkWiE/JTExSSUxQiU1QzElMjIlMjJSJTNDTS0mJFg9VjoxJTI1RzElN0Z1Py4lNUUlM0NDJTI1NSlfMXQ6MTJJOyU1QystKFY9TTQlMjAlM0VfMSUwRTolMjAoRDFQKyw0WiUyMFEtLS9JJTIyUiUzQz8kQiNfOi4kWiUyMEY3JCdYOVY6cTpPMSUxRDouJlMxaTolMTh5SSUwNUInOCU3RiU1RC0lMDF0MTR5Lk0lMEY/eEkhUjIoLVY7JTVDNj8lMDhAMSU1RCsvL0klM0VGITMzSSUzQ1A2KDpDMUEhMi9DMXYjP2FJK1YyKClSMXk1PyUxRVYoTSUxNC46SSUwQUs0KDhSJTNDTTAlMjAoSShWKy0lMjVULkctLiRJLSU1QyUyMDg0UTolNUQnNSNYIU0lMDctI1QkViUyMD8lMEJYLE0lMDgsNEI9XzonJlglMjBBOiUwMiUyNVkoTSUxNiQrVCdWJTIwPy5SLCU1QyUyMCQ0Vi0lNUMxNTRoJTNDVignNFYpRyEzNGclMjBALTUjWCFNJTBEJiRYPVY6NThOMVY3JTIyK0cqTTAlMjAoQj9NJTIyKDJSK00lMDAuJ1YmJTVEOiUwMiUyMiU1RSNXOjIlMjIlNUUpRzolMDM/VS1fIT86WD9GND8lMUFSPSU1RS0yOSU1RSUyMCU1RDozL0Q7JTVDNiQ0WCFQKCgpJTVDMUQ2KCUzRVIxRSUyNTM0UypALzUlMjVHMXEhJyUyNUUqTSUxM3QhSSUwMEUhMyZWNk0lMDgoLlQxJTEzOi0lMjVQMSU1QiUyNS8uJTVCKlc6JTA5LyU1RSglNUIwPzlSI1YnNSUyNUUxUiYyJTI1JTVCOkchPyUxQV8uJTVEOjUlMjVCLCU1QiEvLkklMTBsJTIwJCwlNUUhVjolMTAtSSUwQ00qJTIwJ1IxJTFFOiUyMiZWJTNDQDosL0QlM0NSIyQ0JTdCJkAwJCRSPU0xLy5SKVoqJC5JJTE3TWY/JTE5JTVFLV8tLy1JLF8hJTIwOEklMUZZcS0oWjFjITM6VihWOiQmRCpNdXF6SSUwRFYwNS9FMVoqP3glMDd+JTBBOiUwMTR5LiU1RSE/JTFGSSUwNFc6JTAwLVUlN0RNbCUxRjZrJTNDJTFBOiUwNC5QKk11PzpSPUMlMjUmL0klMjBDMDI0cHZEJTIwPzRfKlIlMjA/OlY9Vio1NGUqVSEzL0UxJTVCKzIlM0VJOFolMjA1JTIySTpAIWE5Qz1aJzU0ZyUyMFoqNTR4KU0lMTAoJ1IxdigkJ1IhRzc/OFIlM0VGITIlM0VJP0EhNy9ZO00wJTIwLUklMDlaNiQsWDdNJTA4JTIwOUMxJTdDNDUjWCFAOjMvRyNSJyQ0WiUyMEY3JC5YOCU1RDojI1krTSkkJTNFVjFSJiUyMi5SKVQsKCUyMCU1QyMlNUUqLjpGPUAwNCUzQ0A3SiUzRT8mUiFUMCk0VCUyMCU1RDAlMjApQzElNjAwJTIwJ0cxJTAydT8lMEQlMEUmUi42ckklMDZVNiUyMCdSMSU3Ri0vP08xQyUyNSYvSSUwMlInPyUwMEklMEFFIS8lM0VEMXI2MytOMSU1RSEzLVIxJTdDJisvVDtNJTI1MTolNUImUCUyNTUjWCFNJTA2KTQlN0IxYTI/JFI7RCszIUklMDdaLiUyMCklNUMmJTVEIz8lMTlDPVoqJjRHJTIwQDA/JTE2JTFGJTEzJTFBJTE4MiU2MEwlMTNAbiUxRCUxMWslM0MlMTkqJTIwJTNFJTVFOVZkJTIyJTI1UypvN2slMTZqJTEzQG4lM0M0JTdEJTNDTSUwMjMlMjVaMSU3Ris2L0UxJTdGISclM0VJKSU1Qyc0OUklMUQlNUImPylWI186JTI1L0MuUCw/JlguVzolMEU0JTEzMSUwMXQ/JTIyRSpVOiUwMiUyNUIhRzolMjI/RSUzQyU1QzY/OVYpVjo1L087TSUwMjQmJTVCJTNDUDYkL1kxVyEtK04xJTVFKzQ5UjpDOjs0Zy5BIS8lM0VJJTFDUiUyMiUyMDglNUUxJTA1dCR5STtSJjQkUypBOiUwNnMlNUUuWToyP1UlM0NHNj8lMDlYJTIyQyUyNTMvSSUwQyU1QysqI1IxdTcmNCU1QiUyMFAlMjUtNFI3Vic/JTA3WDVaKC0rSSUyMEYwJDhJJTFBRy0tOUk9VjcoMFIxUiUyMCUyNTQlN0Q5UXc/JTBFSSUxMU03KSUyNUIjVzolMTMjJTA3N003JTIyOFgjXyYlMjA4RDFXISM/UDElNUIlMjUyNFI5Vio1OUkjViUyMjU0RSpfISUyMDlSMVIxNSUyMlg9TSUxNz85VD1WIS80ZSZNJTA5LiglNUUjVjokJFYtXyElMjU0cCpHMCQ4aCUxME0lMDU7NGI/QyEzNEU6JTVEOiUwN3pJJTNDXy0lMjIvSSUxQiU1QzQ/JTYwSThNIT83SSUxRl8xJiNZMUYqIyNZK00wJTIwOFAqRzokJ0c7SjolMjI0WSpEOjUlMjVCLCU1Qjc1K0U7TSUwQi8mWC5XOiUyNSNBMSU1RSUyNTUpXzElNUM2KC0lNUUhTSUwNj8lMDRYO1olMjIoKVY7WisvNFoqJTVEMSMrRTFlITM5JTVFJTIwJTVEOiUwQjpUMXIoLTR0JTIwVyE/JTFFVi1NJTBFKStJLkM0JCRTMSUxQzolMDAtUiFHOiUwRSRUKk0lMTMoLkMnTSUxNyw0cypVJTI1NCZDMVoqMi9FO00lMDk4NFMlMjBQMSwvWTtNJTBEJjRmOk0lMDU1JTNFRSZRMTUvSSUxQ0clMjUlMjIhSSUwQkQyPyUwN1IlM0NAJTI1Ji9JJTFCTSUwNTcrJTVFI1ImLS9JJTIyWDQ/OFMxXysvLUklMDMlMDM0KS5aMVU2JTIwJ1IxJTVFKzcvSSwlNUIlMjUzNFklMjBXIT8lMDlWJTNDVjolMDgkUypLOiUxNz9JJTE2TS0lMjU0cS5fKCMrVCRNJy4kRCUyMF8hPzlDNl8hPyUxQUUlMjBDITMlM0VOMX4rJTI1L0l2JTBBJTdEeHMlMEV2TSUxMTg0VS5AIXd+SXVNJTAyKDhSK00lMDN4JEklN0ZNJTAyczRBJkAtIyMlNUImRz0/KCU1Qi4lNUQvPz0lNUUhVys2NGoxcjA/JTA4RSUyMEQ3JDhJLkcwMyNVOkchMjR5MWopLnJJPVYlMjIkOEUqQToyOlIsWiUyMigvUzFxMj8/RCpBOiUxNSNaKiU1QzE1NEM9WicqOUklMDElNUMlMjAkNEEqQTcoJTI1WTFDNi4lM0VYO0o0JDQlNUUpQSUyNSwvSSElNUM6JTBEJTIwSSxBISUyMCUzRVIxJTVEKzMvUTFBJTI1Ly5Jak0lMTApK1knTSUwMS0vWiolNUQwPyUwNUcqJTVEITM0ZColNUQ3KCUzRSU1RTlWOjQkUypBOiUxNStQJTNDTSUxMygkSSUyMlopJDRiPV86aTRTLiU1RCckNFY7RyUyNSUyMiUyMkk7Vjc1NEc7UCsvLUklMjUlNUMtLzRiKE0nLSUyNUQqTSUxNyUyMjhYI18mJTIwOEkmTSUwRXE0cy5HIT8jWT9GMD8lMjVHKiU1RDolN0Y0fjF1MS8pQyYlNUMqPzpYP0YqJTI1L0UlMjVAOiUyMiUyNVk7Vio1NHYhUCwuOEklMDBEKj8lMDlfPSU1QykkNCU3RjElNUM0JCRSPU0wLjRyOVYqNTRDNkMhPyUwQkklM0NWMD8lMUZSMWMlMjU1JTIySSpfISwvWTtNJTA2LStZJE0mJCxYPVY6JTAwP0MnJTVDNj8lMDglNUIxQDAlMjAlM0VCJTNDTSUyMCg5RyNSPT8lMURJJTA3VywlMjA0eD9WNiUyMDRfKlojKSUzRUklMTlSKDQvSSUwQU0lMTU/KVghUCUyNTU0JTYwKlEvKCUzRUklMUElNUQlMjAkOEkhViUzQzU0UypAMDMlMjVOMSU3RismLVI9TSUwMjI0fiFHOiUyNStDLk0lMDUuNEMlMjBDIik7ZDY9MTticmVhaztjYXNlIDk6RjYrPVN0cmluZy5mcm9tQ2hhckNvZGUobDYuY2hhckNvZGVBdChPNileWTYuY2hhckNvZGVBdChSNikpO2Q2PTg7YnJlYWs7Y2FzZSA0OmQ2PVI2PT09WTYubGVuZ3RoPzM6OTticmVhaztjYXNlIDE6dmFyIE82PTAsUjY9MDtkNj01O2JyZWFrO2Nhc2UgMzpSNj0wO2Q2PTk7YnJlYWs7Y2FzZSA4Ok82KyssUjYrKztkNj01O2JyZWFrO2Nhc2UgNzpGNj1GNi5zcGxpdCgnficpO3JldHVybiBmdW5jdGlvbihoNil7dmFyIFY2PTI7Zm9yKDtWNiE9PTE7KXtzd2l0Y2goVjYpe2Nhc2UgMjpyZXR1cm4gRjZbaDZdO2JyZWFrO319fTticmVhazt9fX0oJ08zREFKNycpfTticmVhazt9fX0oKTtpMzMzLnIyPWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy5RMi5lMj09PSdmdW5jdGlvbic/aTMzMy5RMi5lMi5hcHBseShpMzMzLlEyLGFyZ3VtZW50cyk6aTMzMy5RMi5lMjt9O2kzMzMueTU9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnc1Lms1PT09J2Z1bmN0aW9uJz9pMzMzLnc1Lms1LmFwcGx5KGkzMzMudzUsYXJndW1lbnRzKTppMzMzLnc1Lms1O307aTMzMy5ENT1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMudzUucjU9PT0nZnVuY3Rpb24nP2kzMzMudzUucjUuYXBwbHkoaTMzMy53NSxhcmd1bWVudHMpOmkzMzMudzUucjU7fTtpMzMzLlE1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5rNT09PSdmdW5jdGlvbic/aTMzMy53NS5rNS5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5rNTt9O2kzMzMueTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LmUyPT09J2Z1bmN0aW9uJz9pMzMzLnM2LmUyLmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LmUyO307aTMzMy5MNj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGkzMzMuczYuZTI9PT0nZnVuY3Rpb24nP2kzMzMuczYuZTIuYXBwbHkoaTMzMy5zNixhcmd1bWVudHMpOmkzMzMuczYuZTI7fTtpMzMzLmM1PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgaTMzMy53NS5UNj09PSdmdW5jdGlvbic/aTMzMy53NS5UNi5hcHBseShpMzMzLnc1LGFyZ3VtZW50cyk6aTMzMy53NS5UNjt9O2kzMzMudzU9ZnVuY3Rpb24objUpe3JldHVybntrNTpmdW5jdGlvbigpe3ZhciB1NSxoNT1hcmd1bWVudHM7c3dpdGNoKG41KXtjYXNlIDY6dTU9aDVbMV0raDVbNl0raDVbNV0raDVbOV0rKGg1WzddK2g1WzExXStoNVs0XStoNVsyXStoNVswXStoNVs4XStoNVszXSkraDVbMTBdO2JyZWFrO2Nhc2UgNTp1NT1oNVsxMF0rKGg1WzExXStoNVsxMl0raDVbMl0raDVbMV0raDVbMF0raDVbOF0raDVbN10raDVbNl0raDVbNF0raDVbNV0raDVbMTNdK2g1WzNdK2g1WzldKTticmVhaztjYXNlIDI6dTU9aDVbMF0raDVbMV07YnJlYWs7Y2FzZSA0OnU1PWg1WzFdK2g1WzJdK2g1WzBdO2JyZWFrO2Nhc2UgNzp1NT1oNVsxXT09PWg1WzBdO2JyZWFrO2Nhc2UgMTY6dTU9aDVbMTJdK2g1WzldK2g1WzddK2g1WzE0XStoNVsyXStoNVs4XStoNVs1XStoNVszXSsoaDVbMTVdK2g1WzEzXStoNVs0XStoNVs2XStoNVswXStoNVsxMF0raDVbMV0raDVbMTFdK2g1WzE2XSk7YnJlYWs7Y2FzZSAxMjp1NT1oNVszNl0raDVbMzNdK2g1WzJdK2g1WzE5XStoNVszNV0raDVbMjFdK2g1WzM0XStoNVsyN10raDVbMjldK2g1WzIzXStoNVsxOF0raDVbMzhdK2g1WzVdK2g1WzIwXStoNVsxNl0raDVbMzFdK2g1WzI2XStoNVsxNV0raDVbMjRdK2g1WzEwXStoNVs4XStoNVsyMl0rKGg1WzZdK2g1WzE0XStoNVszN10raDVbMjVdK2g1WzBdK2g1WzRdK2g1WzEyXStoNVs5XStoNVsxM10raDVbMTFdK2g1WzMwXStoNVszMl0raDVbM10raDVbMTddK2g1WzI4XStoNVsxXStoNVs3XSk7YnJlYWs7Y2FzZSAxMDp1NT1oNVswXTxoNVsxXTticmVhaztjYXNlIDA6dTU9aDVbNV0raDVbMTBdK2g1WzRdK2g1WzFdK2g1WzddK2g1WzNdK2g1WzZdK2g1WzJdK2g1WzBdK2g1WzldK2g1WzE0XStoNVs4XStoNVsxMV0raDVbMTJdK2g1WzEzXTticmVhaztjYXNlIDM6dTU9aDVbNF0rKGg1WzBdK2g1WzJdK2g1WzVdK2g1WzFdK2g1WzNdKTticmVhaztjYXNlIDE0OnU1PWg1WzBdK2g1WzddK2g1WzNdK2g1WzJdK2g1WzFdK2g1WzRdK2g1WzZdK2g1WzVdK2g1WzhdO2JyZWFrO2Nhc2UgMTg6dTU9aDVbMl0laDVbMV0taDVbMF07YnJlYWs7Y2FzZSAxOTp1NT0oaDVbMV0taDVbMF0pKmg1WzJdO2JyZWFrO2Nhc2UgMTE6dTU9aDVbMV0raDVbNV0raDVbM10raDVbNF0rKGg1WzJdK2g1WzZdK2g1WzBdKTticmVhaztjYXNlIDE6dTU9aDVbMF0raDVbMV0raDVbM10raDVbNF0raDVbMl07YnJlYWs7Y2FzZSAyMDp1NT0taDVbMl0taDVbM10qaDVbMV0raDVbMF07YnJlYWs7Y2FzZSAxMzp1NT1oNVs1XStoNVsyM10raDVbMThdK2g1WzI1XStoNVsyOF0raDVbMTVdK2g1WzRdK2g1WzE2XStoNVsyXStoNVsyOV0raDVbMzBdK2g1WzEwXStoNVs3XStoNVsyMV0raDVbMjZdK2g1WzEzXStoNVsxXStoNVsyNF0raDVbMjBdK2g1WzZdK2g1WzI3XStoNVsxNF0raDVbOV0raDVbMTJdK2g1WzExXStoNVsxN10raDVbMTldK2g1WzNdK2g1WzIyXStoNVswXStoNVs4XTticmVhaztjYXNlIDE1OnU1PWg1WzNdK2g1WzRdK2g1WzZdK2g1WzhdK2g1WzddK2g1WzVdK2g1WzJdK2g1WzEwXStoNVs5XStoNVswXStoNVsxXTticmVhaztjYXNlIDg6dTU9aDVbMV0+LWg1WzBdO2JyZWFrO2Nhc2UgMTc6dTU9aDVbMl0raDVbMV08aDVbMF07YnJlYWs7Y2FzZSA5OnU1PS1oNVsxXT09PWg1WzBdO2JyZWFrO31yZXR1cm4gdTU7fSxyNTpmdW5jdGlvbihKNSl7bjU9SjU7fX07fSgpO2kzMzMubTY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBpMzMzLnM2LlQ2PT09J2Z1bmN0aW9uJz9pMzMzLnM2LlQ2LmFwcGx5KGkzMzMuczYsYXJndW1lbnRzKTppMzMzLnM2LlQ2O307IWZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8scyxjLGEsdSxoLGYsXyxwLGwsZCx2LGIsbSxnLGsseSx3LHgsTyxFLEMsUCxULEEsRixTLGosTCx6LEIsSSxNLFcsRCxVLFIsTixILHEsSixWLCQsUSxHLFksSyxaLFgsdHQsZXQsaXQsbnQscnQsb3Qsc3QsY3QsYXQsdXQsaHQsZnQsX3QscHQsbHQsZHQsdnQsYnQsbXQsZ3Qsa3QseXQsd3QseHQsT3QsRXQsQ3QsUHQsVHQsQXQsRnQsU3QsanQsTHQsenQsQnQsSXQsTXQsV3QsRHQsVXQsUnQsTnQsSHQscXQsSnQsVnQsJHQsUXQsR3QsWXQsS3QsWnQsWHQsdGUsZWUsaWUsbmUscmUsb2Usc2UsY2UsYWUsdWUsaGUsZmUsX2UscGUsbGUsZGUsdmUsYmUsbWUsZ2Usa2UseWUsd2UseGUsT2UsRWUsQ2UsUGUsVGUsQWUsRmUsU2UsamUsTGUsemUsQmUsSWUsTWUsV2UsRGUsVWUsUmUsTmUsSGUscWUsSmUsVmUsJGUsUWUsR2UsWWUsS2UsWmUsWGUsdGksZWksaWksbmkscmksb2ksc2ksY2ksYWksdWksaGksZmksX2kscGksbGksZGksdmksYmksbWksZ2ksa2kseWksd2kseGksT2ksRWksQ2ksUGksVGksQWksRmksU2ksamksTGksemksQmksSWksTWksV2ksRGksVWksUmksTmksSGkscWksSmksVmksJGksUWksR2ksWWksS2ksWmksWGksdG4sZW4sbm4scm4sb24sc24sY24sYW4sdW4saG4sZm4sX24scG4sbG4sZG4sdm4sYm4sbW4sZ24sa24seW4sd24seG4sT24sRW4sQ24sUG4sVG4sQW4sRm4sU24sam4sTG4sem4sQm4sSW4sTW4sV24sRG4sVW4sUm4sTm4sSG4scW4sSm4sVm4sJG4sUW4sR24sWW4sS24sWm4sWG4sdHIsZXIsaXIsbnIscnIsb3Isc3IsY3IsYXIsdXIsaHIsZnIsX3IscHIsbHIsZHIsdnIsYnIsbXIsZ3Isa3IseXIsd3IseHIsT3IsRXIsQ3IsUHIsVHIsQXIsRnIsU3IsanIsTHIsenIsQnIsSXIsTXIsV3IsRHIsVXIsUnIsTnIsSHIscXIsSnIsVnIsJHIsUXIsR3IsWXIsS3IsWnIsWHIsdG8sZW8saW8sbm8scm8sb28sc28sY28sYW8sdW8saG8sZm8sX28scG8sbG8sdm8sYm8sbW8sZ28sa28seW8sd28seG8sT28sRW8sQ28sUG8sVG8sQW8sRm8sU28sam8sTG8sem8sQm8sSW8sTW8sV28sRG8sVW8sUm8sTm8sSG8scW8sSm8sVm8sJG8sUW8sR28sWW8sS28sWm8sWG8sdHMsZXMsaXMsbnMscnMsb3Msc3MsY3MsYXMsdXMsaHMsZnMsX3MscHMsbHMsZHMsdnMsYnMsbXMsZ3Msa3MseXMsd3MseHMsT3MsRXMsQ3MsUHMsVHMsQXMsRnMsU3MsanMsTHMsenMsQnMsSXMsTXMsV3MsRHMsVXMsUnMsTnMsSHMscXMsSnMsVnMsJHMsUXMsR3MsWXMsS3MsWnMsWHMsdGMsZWMsaWMsbmMscmMsb2Msc2MsY2MsYWMsdWMsaGMsZmMsX2MscGMsbGMsZGMsdmMsYmMsbWMsZ2Msa2MseWMsd2MseGMsT2MsRWMsQ2MsUGMsVGMsQWMsRmMsU2MsamMsTGMsemMsQmMsSWMsTWMsV2MsRGMsVWMsUmMsTmMsSGMscWMsSmMsVmMsJGMsUWMsR2MsWWMsS2MsWmMsWGMsdGEsZWEsaWEsbmEscmEsb2Esc2EsY2EsYWEsdWEsaGEsZmEsX2EscGEsbGEsZGEsdmEsYmEsbWEsZ2Esa2EseWEsd2EseGEsT2EsRWEsQ2EsUGEsVGEsQWEsRmEsU2EsamEsTGEsemEsQmEsSWEsTWEsV2EsRGEsVWEsUmEsTmEsSGEscWEsSmEsVmEsJGEsUWEsR2EsWWEsS2EsWmEsWGEsdHUsZXUsaXUsbnUscnUsb3Usc3UsY3UsYXUsdXU7ZT1pMzMzLm02KDI0OCk7aT0iVnoiO249Im9wdHMiO3I9ImRlbGF5IjtvPSJVIjtzPSJBbGwiO2M9IndlYmtpdCI7YT0iQXV0aG9yIjt1PSJ3aWR0aCI7aD0ib3BlbiI7Zj0iU2VsZWN0b3IiO189IlMiO3A9IiI7bD0iSnEiO2Q9ImFicyI7dj0icGRmIjtiPSJvbiI7bT0iQXQiO2c9IjBweCI7az0iUG9pbnQiO3k9IklnIjt3PSJUaW1lb3V0Ijt4PSIhIjtPPSJmbG9vciI7RT0iYnV0dG9uIjtDPSJRIjtQPSJ3cml0ZSI7VD0iaGFzIjtBPSJHOXdkIjtGPSJUc3AiO1M9IkFuY2hvciI7aj0iU3RhY2siO0w9IlVuZGVyIjt6PSJjbGllbnQiO0I9Il0iO0k9ImZpeGVkIjtNPSJBdmFpbGFibGUiO1c9IkFvYyI7RD0iXiI7VT0iUmVmZXJlciI7Uj0idGFidXAiO049IkV4cCI7SD0iVG91Y2hlcyI7cT0iMjAiO0o9Im9uY2xpY2siO1Y9Im1hdGNoIjskPSJzZWxmIjtRPS9idXR0b258aW5wdXQvaTtHPS9WZXJzaW9uXC8oW1xkXC5dKylccysobW9iaWxlXC9bXlxzXStccyspP1NhZmFyaS9pO1k9ImhlaWdodCI7Sz0iSWZyYW1lIjtaPS9eKCN8amF2YXNjcmlwdCkvaTtYPS9tb3ppbGxhLzt0dD0iUWNtOWtkIjtldD0idXJsIjtpdD0iaWQiO250PSJjbGljayI7cnQ9InN0b3AiO290PSJwYXJlbnQiO3N0PSJwYXJzZSI7Y3Q9IjYwZTMiO2F0PSJnZW9sb2NhdGlvbiI7dXQ9IkYiO2h0PSJtaW4iO2Z0PSIxIjtfdD0iOyI7cHQ9IkZzZyI7bHQ9L2VkZ2UvO2R0PSJQZXJwYWdlIjt2dD0iTmFtZSI7YnQ9IlF1ZXVlZCI7bXQ9ImlmIjtndD0icmVmZXJyZXIiO2t0PSJQZXJtaXNzaW9uIjt5dD0iSGVpZ2h0Ijt3dD0id2luZG93Ijt4dD0iQ2hpbGQiO090PSJXaW5kb3ciO0V0PSJMb3dlciI7Q3Q9Mzk2MD09NjkuMzM/KCEhe30sNzU1Ljg5KToiViI7UHQ9IlkzIjtUdD0iUG9zaXRpb24iO0F0PSJ0b3VjaHN0YXJ0IjtGdD0iTCI7U3Q9IkNvb2tpZSI7anQ9Im5vIjtMdD0iWCI7enQ9IkF0dHJpYnV0ZSI7QnQ9IlNhZmFyaSI7SXQ9ImxvZyI7TXQ9Ik15IjtXdD0iV2luIjtEdD0ic2NyZWVuIjtVdD0vY2hyb21lfG9wZXJhfGVkZ2V8Y3Jpb3N8b3Bpb3N8Znhpb3N8dWMvaTtSdD0iKF58XFxzKSI7TnQ9ImVtcHR5IjtIdD0vbGludXgvO3F0PSJyZW1vdmUiO0p0PSJIIjtWdD0iZWxzZSI7JHQ9InJlbGVhc2UiO1F0PSJzcGxpdCI7R3Q9IiAiO1l0PSJtYXgiO0t0PSJSZWxlYXNlIjtadD0iU20iO1h0PSJvbmJsdXIiO3RlPSJPbmxvYWQiO2VlPSJHIjtpZT0iTiI7bmU9IlZ1IjtyZT0iRGF0ZSI7b2U9ImRlc2t0b3AiO3NlPSJCdWJibGUiO2NlPSJyZXR1cm4iO2FlPSIlIjt1ZT0vcmFkaW98Y2hlY2tib3gvaTtoZT0icmQiO2ZlPSJuYXZpZ2F0b3IiO19lPSJMaiI7cGU9ImRvY3VtZW50IjtsZT0icG9zdCI7ZGU9Ik1nIjt2ZT0vb3BlcmEvO2JlPSJ0aW1lIjttZT0ib2Zmc2V0IjtnZT0iRzluIjtrZT0iY29uY2F0Ijt5ZT0vcmVzZXR8YnV0dG9ufHN1Ym1pdC9pO3dlPSJxdWVyeSI7eGU9IlQiO09lPSJhcHBsaWNhdGlvbiI7RWU9ImJsdXIiO0NlPSJnZXQiO1BlPSJQaiI7VGU9ImNoYW5nZWQiO0FlPSJKcGMiO0ZlPSJGdWxsc2NyZWVuIjtTZT0iTmpjbWx3ZCI7amU9Imh0bWwiO0xlPSJ0b29sYmFyIjt6ZT0iT3duIjtCZT0iUGo1bGJtIjtJZT0iY3VycmVudCI7TWU9ImNvbmZpZyI7V2U9LzpcZCskLztEZT0ibnVsbCI7VWU9IjIwMTkiO1JlPSJtZXNzYWdlIjtOZT0ibm9uZSI7SGU9Ik0iO3FlPSJQYXRoIjtKZT0icHVzaCI7VmU9IlVlIjskZT0iQmgiO1FlPSJDaHJvbWUiO0dlPSJwb3B1cCI7WWU9ImRpc3BsYXkiO0tlPSJ6IjtaZT0icHJpbnQiO1hlPSJVdGlscyI7dGk9IkxpbnV4IjtlaT0iRnVuY3Rpb24iO2lpPSJJZ25vcmUiO25pPSJjIjtyaT0ibW91c2V1cCI7b2k9Ik1hdGgiO3NpPSJpcyI7Y2k9InZhciI7YWk9ImxvY2F0aW9uIjt1aT0icnVuIjtoaT0iYm9keSI7Zmk9ImFwcGx5IjtfaT0iYmFja2dyb3VuZCI7cGk9ImVuYWJsZWQiO2xpPSJTY3JvbGxiYXIiO2RpPSJwdGNvbmciO3ZpPSJkZXZpY2UiO2JpPSJleHBpcmVzIjttaT0iTmxjaSI7Z2k9IiwiO2tpPSJBZ2IyIjt5aT0iTmEiO3dpPS9eT3BlcmFcLy4qP1ByZXN0b1wvLio/VmVyc2lvblwvKFtcZFwuXSspL2k7eGk9Ikc5aWFqdzgiO09pPSJocmVmIjtFaT0iQmV0dGVyIjtDaT0vaShQaG9uZXxQYWR8UG9kKS9pO1BpPSJPZiI7VGk9IlxcKFxcKVxccyp7XFxzKlxcW1xccypuYXRpdmUgY29kZVxccypcXF1cXHMqfSI7QWk9Ik9wdGlvbnMiO0ZpPSJBdyI7U2k9Imhvc3QiO2ppPSJvYmplY3QiO0xpPSI6Ijt6aT0vZWRnZXxvcHJcLy87Qmk9IlN0cmluZyI7SWk9Ik1vYmlsZSI7TWk9InBlcnBhZ2UiO1dpPSJOb3RpZmljYXRpb24iO0RpPSJhIjtVaT0idG9wIjtSaT0iS2QiO05pPSJDb3VudCI7SGk9IjwiO3FpPSJTY3JpcHQiO0ppPSJfdGFyZ2V0IjtWaT0idGFnIjskaT0ic2hvdWxkIjtRaT0ic3RyaW5nIjtHaT0iVGFncyI7WWk9Im1rcCI7S2k9IkM5IjtaaT0ib3ZlcmZsb3ciO1hpPSJQaGFuIjt0bj0iRG9tYWluIjtlbj0icmVzaXplIjtubj0iRmFsbGJhY2siO3JuPSJwb3B1bmRlcmpzIjtvbj0iYm9vbGVhbiI7c249ImNvbnRlbnQiO2NuPSJSdiI7YW49InRyeSI7dW49IkJ5Ijtobj0iRWxlbWVudCI7Zm49IkFnZW50Ijtfbj0iY3Vyc29yIjtwbj0iOTk5OSI7bG49Imh0dHBzIjtkbj0iLSI7dm49IkNvbmciO2JuPSJ0YWIiO21uPSJvcGVuZXIiO2duPSJleGVjIjtrbj0iZWxlbWVudCI7eW49InN0YXR1cyI7d249IkYwIjt4bj0iKyI7T249IlRhYiI7RW49IlAiO0NuPSJXNWtiMiI7UG49IihcXHN8JCkiO1RuPSJsb2NhbCI7QW49IkJsIjtGbj0iTGVmdCI7U249ImlubmVyIjtqbj0ibWltZSI7TG49IkEiO3puPSJfYmxhbmsiO0JuPSJmb2N1cyI7SW49IkwwNWhiIjtNbj0iYmluZCI7V249ImkiO0RuPSJSZWciO1VuPSJlc2NhcGUiO1JuPSJTdG9yYWdlIjtObj0vY2hyb21lfGNyaW9zLztIbj0iTG9nZ2VyIjtxbj0iQ2xpY2tlZCI7Sm49Lyg/OkZpcmVmb3h8Q2hyb21lKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7Vm49IkZpcmVmb3giOyRuPS9vcGVyYXxvcHJ8b3Bpb3NcLy87UW49IlJlYWNoZWQiO0duPSJjb3ZlciI7WW49IioiO0tuPSJaMiI7Wm49Illtb2wiO1huPSJweCI7dHI9Il90aW1lb3V0XyI7ZXI9IlFnIjtpcj0icGF0aCI7bnI9IlRoYW5oIjtycj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlwYWR8aXJpc3xraW5kbGV8QW5kcm9pZHxTaWxrfGxnZSB8bWFlbW98bWlkcHxtbXB8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2k7b3I9IkJ3Ijtzcj0idHJhbnNwYXJlbnQiO2NyPSJMMHBoZG0iO2FyPS8oPzpPUFJ8T3BlcmF8T1BpT1MpXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTt1cj0iY2xhc3MiO2hyPSJBbyI7ZnI9ImNvbnRhY3QiO19yPSJzZWxlY3RvciI7cHI9ImxvbmciO2xyPSJUYXJnZXQiO2RyPSJBeiI7dnI9Ik9wZXJhIjticj0icG9wdW5kZXIiO21yPSJDYXNlIjtncj0vVHJpZGVudFwvLio/cnY6KFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7a3I9IlBvcCI7eXI9IjUiO3dyPSJ0YXJnZXQiO3hyPSJVajQiO09yPSJUb3AiO0VyPSJMaWRjIjtDcj0iUHJvcGVydHkiO1ByPSJHeGwiO1RyPSJWZXJzaW9uIjtBcj0iT2JqZWN0IjtGcj0iYXBwZW5kIjtTcj0iMTMiO2pyPSJjaGFyIjtMcj0iQWciO3pyPSJJIjtCcj0vd2luZG93cy87SXI9L21zaWV8dHJpZGVudFwvLztNcj0idSI7V3I9ImRpdiI7RHI9L01TSUVccysoW1xkXC5dKykvaTtVcj0iTW9kZSI7UnI9IlJpIjtOcj0iYmxhbmsiO0hyPSIxNTAiO3FyPSJ0cmlja3MiO0pyPSJ0ZXN0IjtWcj0iVGltZSI7JHI9IkNvZGUiO1FyPSJhdHRhY2giO0dyPSJkaXNwYXRjaCI7WXI9InsiO0tyPSJzY3JpcHQiO1pyPSJtb3VzZWRvd24iO1hyPSJkZXRhY2giO3RvPSJMaXN0ZW5lciI7ZW89IkJlZm9yZSI7aW89IldpZHRoIjtubz0iQ29uZmlnIjtybz0iRGVmYXVsdCI7b289IkNnbiI7c289IjExIjtjbz0ibGVuZ3RoIjthbz0iTG0iO3VvPSJFZyI7aG89L2ZpcmVmb3h8Znhpb3MvaTtmbz0iam9pbiI7X289IkowIjtwbz0iT3BlbiI7bG89IkRlYnVnIjt2bz0iWW1veSI7Ym89IkV2ZW50Ijttbz0iRmxhZyI7Z289ImJlZm9yZSI7a289IkoiO3lvPSJGaXJlIjt3bz0iZSI7eG89ImhpZGRlbiI7T289ImRvbWFpbiI7RW89InJhbmQiO0NvPSJUbyI7UG89IkdldHRlcl9fIjtUbz0iWyI7QW89Im5vcmVmIjtGbz0iaWZyYW1lIjtTbz0vc2FmYXJpLztqbz0iaW5wdXQiO0xvPSJKcyI7em89IkluZGV4IjtCbz0vKD86XHcrKVwvKFtcZFwuXSspKD86JHxcc3xcL3xcKSkrL2k7SW89JyInO01vPSJZcCI7V289ImRldiI7RG89Ij4iO1VvPSIwIjtSbz0iYXV0aG9yIjtObz0icmVwbGFjZSI7SG89ImFkZCI7cW89IigiO0pvPSJMMSI7Vm89Ilc1ayI7JG89IlBtIjtRbz0ibmFtZSI7R289ImNhbmNlbCI7WW89L18vZztLbz0iQnJvd3NlciI7Wm89IkJ2IjtYbz0vIy4qJC87dHM9InJlcXVlc3QiO2VzPSJQcm9wYWdhdGlvbiI7aXM9ImNvbSI7bnM9InNoaWZ0Ijtycz0idmVyc2lvbiI7b3M9Ik9uY2UiO3NzPSJub3QiO2NzPSJXZWJraXQiO2FzPSIyIjt1cz0iQ29tcG9uZW50Ijtocz0iZGF0YSI7ZnM9IkAiO19zPSJqYXZhc2NyaXB0Ijtwcz0iaWdub3JlIjtscz0iVXBwZXIiO2RzPSJyZXNldCI7dnM9IkZzIjticz0ibG9hZCI7bXM9IkludGVydmFsIjtncz0iaW5pdCI7a3M9IloiO3lzPSJGcm9tIjt3cz0ic2xpY2UiO3hzPSJObCI7T3M9ImZ1bmN0aW9uIjtFcz0ibW92ZSI7Q3M9ImZpbmlzaCI7UHM9IkUiO1RzPSJiYXNlNjQiO0FzPSJ3IjtGcz0iZGVidWciO1NzPSJ0eXBlIjtqcz0ibGVmdCI7THM9ImRlc3Ryb3kiO3pzPS93ZWJraXQvO0JzPSJNb3VzZSI7SXM9Im9sZCI7TXM9IkhkaGEiO1dzPSJmcmFtZSI7RHM9InVuZGVmaW5lZCI7VXM9ImRhbmNlIjtScz0iVHlwZXMiO05zPSJPcGVuZXIiO0hzPSIuIjtxcz0iQmluZCI7SnM9Ik8iO1ZzPSJZIjskcz0iUiI7UXM9IklkIjtHcz0icmVzaXphYmxlIjtZcz0oNjg4MCw1NzgpIT09KDI2Miw0MTUpPyJXIjoyNzc7S3M9IlBsdWdpbiI7WnM9ImFmdGVyIjtYcz0iU2Vuc2l0aXZlIjt0Yz0iRXhwaXJlcyI7ZWM9ImNhdGNoIjtpYz0ic3BlY2lmaWVkIjtuYz0vRnhpT1NcLyhbXGRcLl0rKS9pO3JjPSJ0byI7b2M9IksiO3NjPSIkIjtjYz0ibWVyZ2UiO2FjPSJRdSI7dWM9InN1YnN0ciI7aGM9Ikp2YjMiO2ZjPSJwcmV2ZW50IjtfYz0idGV4dCI7cGM9ImF0dHJpYnV0ZXMiO2xjPS8oY29tcGF0aWJsZXx3ZWJraXQpLztkYz0iLyI7dmM9IlVnIjtiYz0iRzlpYWoiO21jPSJDdXJyZW50IjtnYz0iQmxhbmsiO2tjPSJOb2RlIjt5Yz0ibmV4dCI7d2M9ImNvbnNvbGUiO3hjPS8oPzpmdHB8aHR0cHM/KTpcL1wvKFteXC9dKykvO09jPSJWYWx1ZSI7RWM9InBhZ2UiO0NjPSJ0b3VjaGVuZCI7UGM9IkVkZ2UiO1RjPSJJbnQiO0FjPSJwb3NpdGlvbiI7RmM9ImNsZWFyIjtTYz0iY3JlYXRlIjtqYz0ibmV0d29yayI7TGM9IkMiO3pjPSJSaTB4IjtCYz0icmVzdG9yZSI7SWM9InByb3RvdHlwZSI7TWM9IlVybCI7V2M9Ik92ZXJsYXkiO0RjPSJfX2RlZmluZSI7VWM9InVuZGVyIjtSYz0ic2Nyb2xsYmFycyI7TmM9IlBhcmVudCI7SGM9L14oPzouKlteXHddKSooW1x3XSspXHMqJC9pO3FjPSJSaGIiO0pjPSJGaXJlZCI7VmM9IkFuZHJvaWQiOyRjPSJwb2ludGVyIjtRYz0iaW5kZXgiO0djPSJVeSI7WWM9InNldCI7S2M9IlRhZyI7WmM9InZpc2liaWxpdHkiO1hjPSJKcWN5NWpiMjBwIjt0YT0iaGFuZGxlZCI7ZWE9InJhbmRvbSI7aWE9IikiO25hPS9FZGdlXC8oW1xkXC5dKykoPzokfFxzfFwvfFwpKSsvaTtyYT0iSXRlbSI7b2E9ImNvb2tpZSI7c2E9IkhpamFja2luZyI7Y2E9Im1vYmlsZSI7YWE9InNyYyI7dWE9IkVsZW1lbnRzIjtoYT0ibmV3IjtmYT0idW5iaW5kIjtfYT0iZmlyZSI7cGE9IkIiO2xhPSJub2RlIjtkYT0iPSI7dmE9Il9zZWxmIjtiYT0ifSI7bWE9Ik1vemlsbGEiO2dhPS9hbmRyb2lkLztrYT0iSmhhIjt5YT0ibnVtYmVyIjt3YT0vbWFjaW50b3NoLzt4YT0iV3hsY2p3OCI7T2E9ImNsb3NlIjtFYT0iZGVjb2RlIjtDYT0iOTk5OTk5OSI7UGE9Im1lbnViYXIiO1RhPSJvbm1vdXNlbW92ZSI7QWE9ImltIjtGYT0iTWVzc2FnZSI7U2E9Imluc2VydCI7amE9Im9yaWdpbiI7TGE9IjUwIjt6YT0iTWFjIjtCYT0iRCI7SWE9InN0eWxlIjtNYT0icG9wIjtXYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO0RhPSJZbW84IjtVYT0iQXJyYXkiO1JhPSJldmVudHMiO05hPSJFdmVudHMiO0hhPSJTaWJsaW5nIjtxYT0idGFidW5kZXIiO0phPSJTdGFtcCI7VmE9InNhZmUiOyRhPSJ1c2VyIjtRYT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO0dhPSJtZXRhIjtZYT0iYWJvdXQiO0thPSJGMiI7WmE9IkR3diI7WGE9L2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhXHMrbWluaS87dHU9ImV4aXQiO2V1PSJ8IjtpdT0iUG9wdW5kZXIiO251PSJvdXRlciI7cnU9IjEwMCI7b3U9IiMiO3N1PSJDb21wYXJlIjtjdT0iYWJzb2x1dGUiO2F1PSJjYWxsIjt1dT0iTGFzdCI7IWZ1bmN0aW9uKHQsTixzdCxlaSxvaSx5aSxFaSxEbixVbixBcixMbyx1cywkcyxUYyxFYSxodSxmdSxfdSxwdSxsdSl7InVzZSBzdHJpY3QiO3ZhciBzOT1pMzMzO3ZhciBhOT0xZTM7dmFyIFMwLEUwLGkwLGR1LHZ1LGJ1LG11LGd1LGt1LHl1LHd1LHh1LE91LEV1LEN1LFB1LFR1LEF1LEZ1LFN1LGp1LEx1LHp1LEJ1LEl1LE11LFd1LER1LFV1LFJ1LE51LEh1LHF1LEp1LFZ1LCR1LFF1LEd1LFl1LEt1O1MwPS00Nzg3OTAyMjc7RTA9LTEyOTA3NTMzOTI7aTA9Mjtmb3IodmFyIGMwPTE7czkucjIoYzAudG9TdHJpbmcoKSxjMC50b1N0cmluZygpLmxlbmd0aCw5MDMxNykhPT1TMDtjMCsrKXtpMCs9Mjt9aWYoczkucjIoaTAudG9TdHJpbmcoKSxpMC50b1N0cmluZygpLmxlbmd0aCw4OTQyMykhPT1FMCl7fUV1PXQ7czkuRDUoMCk7Q3U9czkuUTUoZnIsR3QsSGksR3QsbnIsWGkscCx2bixIcyxmcyxHdCxpcyxEbyxwLGRpKTtzOS5lNSgxKTtQdT1zOS5RNShhcyxIcyxVbyxzbyxIcyk7czkuZTUoMSk7VHU9czkueTUoVWUsZGMsU3IsYXMsZGMpO3M5LkQ1KDIpO0F1PXM5LlE1KEV1LG1vKTtzOS5lNSgyKTtGdT1zOS5RNShFdSxOaSk7czkuZTUoMyk7U3U9czkueTUodXUscCxwLG0sRXUsa3IpO3M5LkQ1KDIpO2p1PXM5Lnk1KEV1LFdjKTtMdT1icjt6dT1HZTtCdT1xYTtJdT1SO011PU5bZmVdWyRhK3ArZm5dW3JjK3ArRXQrcCttcl0oKTtXdT17dW5kZXI6ISF7fSxuZXdUYWI6ISEiMSJ9O0R1PW51bGw7VXU9ISFbXTtSdT0he307TnU9ZnVuY3Rpb24oKXt9O3M5LmU1KDQpO0h1PXM5LlE1KGpjLHAsZnMpO3F1PW9pW0llK3ArcWldfHx7c3JjOm51bGx9O3M5LkQ1KDQpO0p1PU5bZmVdW3M5Lnk1KFJzLGpuLHApXTtWdT1SdTskdT1SdTtRdT1SdTtHdT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gTltVaV0hPT1OWyRdJiZ0eXBlb2YgTltVaV1bcGVdW2FpXVtyYytwK0JpXSgpPT09UWk/TltVaV06TlskXTt9Y2F0Y2godCl7cmV0dXJuIFF1PVV1LE5bJF07fX0oKTtZdT1HdVt3dF1baF07S3U9ZnVuY3Rpb24oKXt2YXIgdCx1MCxtMCx3MDt0cnl7dD1HdVthaV1bT2ldO31jYXRjaChlKXt9dTA9LTI1NDc2MTQ5MjttMD0tMTU1ODI0MzQwNzt3MD0yO2Zvcih2YXIgQjA9MTtzOS5yMihCMC50b1N0cmluZygpLEIwLnRvU3RyaW5nKCkubGVuZ3RoLDk4ODA2KSE9PXUwO0IwKyspe3JldHVybiFRdSYmdHx8KFd1PXtuZXdUYWI6VXUsdW5kZXI6UnV9LHQ9b2lbZ3RdKSx0O31pZihzOS5IMih3MC50b1N0cmluZygpLHcwLnRvU3RyaW5nKCkubGVuZ3RoLDM5MDkzKSE9PW0wKXtyZXR1cm4oLVF1fHx0KSYmKFd1PXt1bmRlcjpSdSxuZXdUYWI6VXV9LHQ9b2lbZ3RdKSx0O319KCk7bXU9e246ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw7dHlwZW9mIE5bd2NdIT09RHMmJk5bd2NdW0l0XSYmRG5bZmldW2F1XShOW3djXVtJdF0sY29uc29sZSx0KTt9LHI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudFtjb107dCsrKXt0aGlzLm4odGhpcy50W3RdKTt9fSxlOmZ1bmN0aW9uKHQpe3ZhciBlO2U9W3RdW2tlXShFaVtJY11bd3NdW2F1XShhcmd1bWVudHMsMSkpO3RoaXMudFtKZV0oZSk7dnUuaSgpJiZ0aGlzLm4oZSk7fSx0OltdfTt3dT17bzpEdSxhOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5zKCk/TltUbitwK1JuXVtDZStwK3JhXSh0KTp5dS5hKHQpO31jYXRjaChlKXtyZXR1cm4gRHU7fX0sYzpmdW5jdGlvbih0LGUpe3RoaXMucygpP05bVG4rcCtSbl1bWWMrcCtyYV0odCxlKTp5dS5jKHQsZSk7fSx1OmZ1bmN0aW9uKHQpe3RoaXMucygpP05bVG4rcCtSbl1bcXQrcCtyYV0odCk6eXUudSh0KTt9LHM6ZnVuY3Rpb24oKXt2YXIgUjgsVzgsVTg7aWYodGhpcy5vPT09RHUpdHJ5e1I4PS0yMDI1ODA2NDg5O1c4PTk2Nzk4MDM3NTtVOD0yO2Zvcih2YXIgeDg9MTtzOS5yMih4OC50b1N0cmluZygpLHg4LnRvU3RyaW5nKCkubGVuZ3RoLDU4MjA4KSE9PVI4O3g4Kyspe05bVG4vcC9Sbl1bWWMqcC9yYV0oRXUsMik7TltUbi9wL1JuXVtxdCVwL3JhXShFdSk7dGhpcy5vPVV1O1U4Kz0yO31pZihzOS5yMihVOC50b1N0cmluZygpLFU4LnRvU3RyaW5nKCkubGVuZ3RoLDkzNzEwKSE9PVc4KXtOW1RuK3ArUm5dW1ljK3ArcmFdKEV1LDEpO05bVG4rcCtSbl1bcXQrcCtyYV0oRXUpO3RoaXMubz1VdTt9fWNhdGNoKHQpe3RoaXMubz1SdTt9cmV0dXJuIHRoaXMubzt9fTt5dT17YTpmdW5jdGlvbih0KXt2YXIgZTtzOS5lNSg1KTtlPW9pW29hXVtWXShuZXcgQXIoczkueTUocCxUbyxwLHhuLHAsQixfdCxwLEQscCx0LHAsZGEscCksV24pKTtyZXR1cm4gZT9wdShlWzBdW1F0XShwK2RhK3ApWzFdKTpEdTt9LGM6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcyxjO2M9aXx8cDtjJiYodHlwZW9mIGM9PT15YT8ocz1uZXcgX3UoKSlbWWMrcCtWcl0oc1tDZStwK1ZyXSgpK2E5KmMpOnM9YyxjPXArX3QrYmkrZGErcCtzW3JjK3ArbytwK3hlK3ArTGMrcCtCaV0oKSk7b2lbb2FdPXQrKHArZGErcCkrbHUocCtlKStjKyhyP3ArX3QrT28rZGErcCtyOnApKyhwK190K2lyK2RhK3ApKyhufHxwK2RjK3ApO30sdTpmdW5jdGlvbih0KXt0aGlzLmModCwwLG5ldyBfdSgwKSk7fX07Z3U9e0c6ZnVuY3Rpb24odCl7dmFyIFUyLE4yLHgyO1UyPTQ2MTY4NDYxMjtOMj0tMTM4MjEyNzAxOTt4Mj0yO2Zvcih2YXIgbzg9MTtzOS5IMihvOC50b1N0cmluZygpLG84LnRvU3RyaW5nKCkubGVuZ3RoLDMxOTc0KSE9PVUyO284Kyspe3JldHVybih0P25ldyBfdSh0KTpuZXcgX3UoKSlbQ2UrcCtWcl0oKTt9aWYoczkucjIoeDIudG9TdHJpbmcoKSx4Mi50b1N0cmluZygpLmxlbmd0aCw0NTcwNykhPT1OMil7cmV0dXJuKHQ/bmV3IF91KHQpOm5ldyBfdSgpKVtDZSpwL1ZyXSgpO319LGs6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT17fSxpPTA7aTxhcmd1bWVudHNbY29dO2krKylmb3IodCBpbiBhcmd1bWVudHNbaV0pe3lpW0ljXVtUK3AremUrcCtDcl1bYXVdKGFyZ3VtZW50c1tpXSx0KSYmKGVbdF09YXJndW1lbnRzW2ldW3RdKTt9cmV0dXJuIGU7fSxBOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0eXBlb2YgTi5qUXVlcnkuZm4ub249PT1Pczt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LEY6ZnVuY3Rpb24odCl7dmFyIGU7ZT1zdFtTaV07cmV0dXJuIHR5cGVvZiB0IT09RHMmJihlPSh4Y1tnbl0odCl8fFtwLHBdKVsxXSksZVtOb10oV2UscCk7fSx6OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixyO3I9b2lbU2MrcCtobl0odCk7Zm9yKG4gaW4gZSl7eWlbSWNdW1QrcCt6ZStwK0NyXVthdV0oZSxuKSYmcltZYytwK3p0XShuLGVbbl0pO31yZXR1cm4gaSYmKHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09aSkscjt9LE06ZnVuY3Rpb24odCl7dmFyIGU7dHJ5eyhlPXRbd3RdW2hdKFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9Y2F0Y2goaSl7fShlPVl1KFlhK0xpK05yKSlbQm5dKCk7ZVtPYV0oKTt9LFc6ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3RyeXtyZXR1cm4gbj10W0NlK3ArenRdKGUpLHR5cGVvZiBpIT09UWk/UnU6ISFuZXcgQXIoUnQraStQbixXbilbZ25dKG4pO31jYXRjaChyKXtyZXR1cm4gUnU7fX0sVTpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXpyK3AraWUrcCtFbitwK28rcCt4ZSYmdWVbSnJdKHRbQ2UrcCt6dF0oU3MpKXx8dFtWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQ7fSxJOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixyO2lmKHR5cGVvZiBlIT09UWkpe3JldHVybiBSdTt9aWYodHlwZW9mIG9pW3dlK3ArZitwK3NdPT09T3MpdHJ5e249dFtvdCtwK2tjXVt3ZStwK2YrcCtzXShlKXx8Ti5qUXVlcnkoZSk7fWNhdGNoKG8pe31lbHNlIGlmKGd1LkEoKSl0cnl7bj1OLmpRdWVyeShlKTt9Y2F0Y2gobyl7fWlmKG4pZm9yKHI9MDtyPG5bY29dO3IrKylpZihuW3JdPT09dCl7cmV0dXJuIFV1O31zd2l0Y2goZVswXSl7Y2FzZSBwK0hzK3A6aT1bdXIsZVt1Y10oMSldO2JyZWFrO2Nhc2UgcCtvdStwOmk9W2l0LGVbdWNdKDEpXTt9cmV0dXJuIGk/dGhpcy5XKHQsaVswXSxpWzFdKTpSdTt9LGg6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbQ2UrcCt6dF0oZSk7fWNhdGNoKGkpe3JldHVybiBSdTt9fSxOOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5SKHQpO3JldHVybiBlJiZlW09pXSYmIVpbSnJdKGVbT2ldKT9lW09pXTpSdTt9LF86ZnVuY3Rpb24odCl7dmFyIGUsaTtpPXt9O2ZvcihlPTA7ZTx0W2NvXTtlKyspe2lbdFtlXVswXV09dFtlXVsxXTt9cmV0dXJuIGk7fSxZOmZ1bmN0aW9uKCl7dHJ5e3M5LmU1KDQpO3JldHVybiEhSnVbczkuUTUodixPZSxkYyldW3M5LlE1KEtzLHBpLHApXTt9Y2F0Y2godCl7cmV0dXJuIFJ1O319LE86ZnVuY3Rpb24odCl7dmFyIHI4LEg4LHA4LGU7cjg9LTE4NzExNDIyMTg7SDg9MTA3OTk1ODMzNDtwOD0yO2Zvcih2YXIgbTg9MTtzOS5IMihtOC50b1N0cmluZygpLG04LnRvU3RyaW5nKCkubGVuZ3RoLDg1Nzk2KSE9PXI4O204Kyspe2U9b2lbU2MtcC1obl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdHx8b2lbaGldW0ZyJXAqeHRdKGUpLGU7fWlmKHM5LkgyKHA4LnRvU3RyaW5nKCkscDgudG9TdHJpbmcoKS5sZW5ndGgsNjc2NDUpIT09SDgpe2U9b2lbU2MrcCtobl0oRm8pO3JldHVybiBlW0lhXVtZZV09TmUsdCYmb2lbaGldW0ZyK3AreHRdKGUpLGU7fX0seDpmdW5jdGlvbih0KXt2YXIgaTgsVDgsYzg7aTg9MjA1MjM1NTg2NTtUOD0xNzI0NTc4MzY1O2M4PTI7Zm9yKHZhciBPOD0xO3M5LnIyKE84LnRvU3RyaW5nKCksTzgudG9TdHJpbmcoKS5sZW5ndGgsMjUwNTcpIT09aTg7TzgrKyl7cmV0dXJuIHlpW0ljXVtyYyVwL0JpXVthdV0odCkhPT1wJVRvKmppJUd0L1VhJUIlcDt9aWYoczkuSDIoYzgudG9TdHJpbmcoKSxjOC50b1N0cmluZygpLmxlbmd0aCwxNDc4MikhPT1UOCl7cmV0dXJuIHlpW0ljXVtyYytwK0JpXVthdV0odCk9PT1wK1RvK2ppK0d0K1VhK0IrcDt9fSxMOmZ1bmN0aW9uKHQsZSl7czkuRDUoNik7cmV0dXJuIHM5Lnk1KHAsaHMsZ2kscCxUcyxwLExpLHAsR3QsdCxlLF90KTt9LEM6ZnVuY3Rpb24odCxlLGkpe3ZhciBCMixqMixMMixyLG8scztCMj00ODA4NjExMzA7ajI9MTI0OTA2OTYxO0wyPTI7Zm9yKHZhciBLMj0xO3M5LnIyKEsyLnRvU3RyaW5nKCksSzIudG9TdHJpbmcoKS5sZW5ndGgsMzY4NzIpIT09QjI7SzIrKyl7cz1ndS5PKFV1KTtMMis9Mjt9aWYoczkucjIoTDIudG9TdHJpbmcoKSxMMi50b1N0cmluZygpLmxlbmd0aCw3NDY3MSkhPT1qMil7cz1ndS5PKFV1KTt9cmV0dXJuIHI9c1tzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLHJbU3NdPV9jK2RjK19zLHJbU24rcCtKdCtwK3hlK3ArSGUrcCtGdF09cCsod3QrSHMrb3QrR3QrcCtkYStwK0d0K3d0K0hzK1VpK0d0K3ArZGErcCtHdCt3dCtIcytXcytwK2huK0d0K3ArZGErcCtHdCtEZStfdCtwKSsod3QrSHMrWWkrR3QrcCtkYStwK0d0K09zK3FvK2V0K2dpK3ArR3QrUW8rZ2krcCtHdCtuK2lhK3ArR3QrcCtZcitwKSsoY2krR3QrTWErcCtXdCtHdCtwK2RhK3ArR3Qrd3QrSHMraCtxbytldCtnaStwK0d0K1FvK2dpK3ArR3QrbitpYStwK190K3ApKyhhbitHdCtwK1lyK01hK3ArV3QrSHMrbW4rR3QrcCtkYStwK0d0K0RlK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSsoY2UrR3QrTWErcCtXdCtfdCtwKSsocCtiYStwK190K3ApLHNbc24rcCtPdF1bcGVdW2hpXVtGcitwK3h0XShyKSxvPXNbc24rcCtPdF0ubWtwKHQsZSxpKSxndS5QKHMpLG87fSxIOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtzOS5ENSgyKTtuPXM5Lnk1KHRyLHQpO3JldHVybiB0eXBlb2YgTltuXSE9PURzJiZ1cyhOW25dKSxOW25dPUxvKGUsaSk7fSxTOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixyLG8sWDAseTAsYjAsQTcsZDcsUzc7bz1OLmpRdWVyeXx8bnVsbDtpZih0JiZ0W0pdKXtyZXR1cm4gVXU7fWlmKCFvKXtyZXR1cm4gUnU7fXRyeXtYMD0tNDQ1ODA3MDI1O3kwPS04OTgyMDIwNDE7YjA9Mjtmb3IodmFyIFkwPTE7czkucjIoWTAudG9TdHJpbmcoKSxZMC50b1N0cmluZygpLmxlbmd0aCwyMzk0MCkhPT1YMDtZMCsrKXtpZigoZT0obyh0KVtoc10oUmEpfHxvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fWIwKz0yO31pZihzOS5IMihiMC50b1N0cmluZygpLGIwLnRvU3RyaW5nKCkubGVuZ3RoLDE3ODQxKSE9PXkwKXtpZigoZT0obyh0KVtoc10oUmEpJiZvLmoodCxSYSkpW250XSlbY29dKXtyZXR1cm4gVXU7fX19Y2F0Y2gocyl7fXRyeXtBNz0xNzAzODkxOTU3O2Q3PTMxMjE4NDIyNTtTNz0yO2Zvcih2YXIgaTc9MTtzOS5yMihpNy50b1N0cmluZygpLGk3LnRvU3RyaW5nKCkubGVuZ3RoLDE5Mzk1KSE9PUE3O2k3Kyspe2ZvcihlPW8ob2lbaGldKVtoc10oUmEpW250XSxpPTI7aTw9ZVtjb107aS0tKWZvcihyPW8oZVtpXVtfcl0pLG49MjtuPnJbY29dO24tLSlpZihyW25dPT10KXtyZXR1cm4gVXU7fVM3Kz0yO31pZihzOS5IMihTNy50b1N0cmluZygpLFM3LnRvU3RyaW5nKCkubGVuZ3RoLDQyMzUzKSE9PWQ3KXtmb3IoZT1vKG9pW2hpXSlbaHNdKFJhKVtudF0saT0yO2k8PWVbY29dO2ktLSlmb3Iocj1vKGVbaV1bX3JdKSxuPTI7bj5yW2NvXTtuLS0paWYocltuXT09dCl7cmV0dXJuIFV1O319Zm9yKGU9byhvaVtoaV0pW2hzXShSYSlbbnRdLGk9MDtpPGVbY29dO2krKylmb3Iocj1vKGVbaV1bX3JdKSxuPTA7bjxyW2NvXTtuKyspaWYocltuXT09PXQpe3JldHVybiBVdTt9fWNhdGNoKGMpe31yZXR1cm4gUnU7fSwkOmZ1bmN0aW9uKHQpe3ZhciBmMixsMix6Mjtmb3IodmFyIGU9V2FbUXRdKHApLGk9ZVtjb10sbj0wLHI9cDtuPHQ7bisrKXtyKz1lW1VuW09dKFVuW2VhXSgpKmkpXTt9ZjI9NTQ5NDg5OTI3O2wyPTEzMTA3NDc1Mzg7ejI9Mjtmb3IodmFyIFcyPTE7czkucjIoVzIudG9TdHJpbmcoKSxXMi50b1N0cmluZygpLmxlbmd0aCwyOTk3MikhPT1mMjtXMisrKXtyZXR1cm4gcjt9aWYoczkuSDIoejIudG9TdHJpbmcoKSx6Mi50b1N0cmluZygpLmxlbmd0aCwxMTUzNSkhPT1sMil7cmV0dXJuIHI7fX0sQjpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvO249MDtyPWl8fDEwO289dDt0cnl7Zm9yKDtvJiZuKys8cjspe2lmKHR5cGVvZiBlPT09UWkmJihvW1ZpK3ArdnRdPT09ZXx8Z3UuSShvLGUpKXx8dHlwZW9mIGU9PT1qaSYmbz09PWUpe3JldHVybiBvO31zOS5lNSg0KTtvPW9bczkueTUoa2Msb3QscCldO319Y2F0Y2gocyl7fXJldHVybiBSdTt9LFQ6ZnVuY3Rpb24odCl7dCYmKEd1W2FpXT10KTt9LEo6ZnVuY3Rpb24odCxlLGksbil7Zm9yKHZhciByLG8scyxjPXRbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSxhPWVbcmMrcCtCaV0oKVtRdF0obnx8cCtIcytwKSx1PTAsaD1VbltZdF0oY1tjb10sYVtjb10pO3U8aCYmKHI9aHUoY1t1XXx8MCwxMCksbz1odShhW3VdfHwwLDEwKSxmdShyKSYmKHI9MCksZnUobykmJihvPTApLHM9cj5vPzE6LTEscj09PW8pO3UrKyl7cz0wO31zd2l0Y2goaSl7Y2FzZSBwK0RvK3A6czkuRDUoNyk7cmV0dXJuIHM5Lnk1KHMsMSk7Y2FzZSBwK0RvK3ArZGErcDpzOS5ENSg4KTtyZXR1cm4gczkuUTUoMSxzKTtjYXNlIHArSGkrcDpzOS5ENSg5KTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArSGkrcCtkYStwOnM5LmU1KDEwKTtyZXR1cm4gczkuUTUocywxKTtjYXNlIHArZGErcCtkYStwOmNhc2UgcCtkYStwK2RhK3ArZGErcDpkZWZhdWx0OnM5LmU1KDcpO3JldHVybiBzOS5RNShzLDApO319LFI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuQih0LExuKTt9LGY6ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuISghdFtwY11bZV18fCF0W3BjXVtlXVtpY10pO31jYXRjaChpKXtyZXR1cm4gUnU7fX0sdzpmdW5jdGlvbigpe3JldHVybiBRdTt9LFE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO3M5LkQ1KDcpO2U9czkueTUoamksdHlwZW9mIHQpO2k9dDtzOS5lNSg0KTtuPW9pW1NjK3ArYm9dKHM5Lnk1KE5hLEJzLHApKTtuW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwwLDAsMCwwLDAsVXUsUnUsUnUsVXUsMCxEdSk7ZXx8KGk9Z3UueihEaSx7aHJlZjp0fHxocytMaStfYytkYytqZStnaStwK0hpK0tyK0RvK3d0K0hzK09hK3FvK3AraWErcCtfdCtwK0hpK3ArZGMrS3IrRG8rcH0pLG9pW2hpXVtGcitwK3h0XShpKSk7aVtHcitwK2JvXShuKTtlfHxndS5QKGkpO30sUDpmdW5jdGlvbih0KXt0JiZ0W290K3Ara2NdJiZ0W290K3Ara2NdW3F0K3AreHRdKHQpO30sdjpmdW5jdGlvbih0KXt2YXIgZSxpLG4scixvO3M5LkQ1KDQpO2U9TltzOS5RNShpbyxTbixwKV07czkuRDUoNCk7aT1OW3M5LlE1KHl0LFNuLHApXTtuPU5bRHQrcCtMdF18fE5bRHQrcCtGbl18fDA7cj1OW0R0K3ArVnNdfHxOW0R0K3ArT3JdfHwwO289e307cmV0dXJuIG9bdV09ZSxvW1ldPWksb1tqc109bixvW1VpXT1yLG9beW5dPTAsb1thaV09MSxvW0xlXT0xLG9bUGFdPTEsby5yZXNpemFibGU9MSxvW1JjXT0xLGt1LmImJihvW1ldKz1rdS5tPzQ2OjUyKSxrdS5nJiYob1t1XS09NSxvW1ldLT00KSx0eXBlb2YgdD09PWppJiYobz1ndS5rKG8sdCkpLG87fSxsOmZ1bmN0aW9uKHQpe3ZhciBlLGksSTAsRjAsazA7ZT1ndS5wKHQpO3M5LkQ1KDQpO2k9dFtOb10oSGMsczkuUTUoZnQscCxzYykpO3RyeXtJMD0xNjcwMzk0OTg4O0YwPTEyMjQ4OTUzMjI7azA9Mjtmb3IodmFyIGYwPTE7czkuSDIoZjAudG9TdHJpbmcoKSxmMC50b1N0cmluZygpLmxlbmd0aCw1MzgyMikhPT1JMDtmMCsrKXtyZXR1cm4hbmV3IEFyKE9zK0d0K3AraStUaSxBYSlbSnJdKGVbcmMrcCtCaV0oKSk7fWlmKHM5LnIyKGswLnRvU3RyaW5nKCksazAudG9TdHJpbmcoKS5sZW5ndGgsNTk3MTIpIT09RjApe3JldHVybn5uZXcgQXIoKE9zLUd0KSVwJWkqVGksQWEpW0pyXShlWyhyYy1wKSpCaV0oKSk7fX1jYXRjaChuKXtyZXR1cm4gbltyYytwK0JpXSgpW1FjK3ArUGldKHNpK0d0K3NzK0d0K0RpK0d0K09zKT4tMT9VdTprdS5kP1V1OlJ1O319LHA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9TjtzOS5lNSg0KTtuPXRbUXRdKHM5LlE1KHAscCxIcykpO2ZvcihlPTA7ZTxuW2NvXTtlKyspe2k9aVtuW2VdXTt9cmV0dXJuIGk7fSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFVuW09dKFVuW2VhXSgpKihlLXQpKSt0O30sRDpmdW5jdGlvbih0KXtyZXR1cm4gdFtWaStwK3Z0XT09PXBhK3ArbytwK3hlK3AreGUrcCtKcytwK2llfHx0W1ZpK3ArdnRdPT09enIrcCtpZStwK0VuK3ArbytwK3hlJiZ5ZVtKcl0odFtDZStwK3p0XShTcykpfHx0aGlzLkIodCxwYStwK28rcCt4ZStwK3hlK3ArSnMrcCtpZSkhPT1SdTt9LHk6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2k9W107bj1ndS52KCk7dHJ5e2ZvcihlIGluIG4pe3R5cGVvZiB0W2VdIT09RHMmJmlbSmVdKGUrKHArZGErcCkrdFtlXSk7fX1jYXRjaChyKXttdS5lKHIpO31zOS5ENSg0KTtyZXR1cm4gaVtmb10oczkuUTUocCxwLGdpKSk7fSxxOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPVtuYyx3aSxuYSxhcixKbixHLERyLGdyLEJvXSxuPTA7bjxpW2NvXTtuKyspaWYoZT1pW25dW2duXShNdSkpe3JldHVybiB0P2h1KGVbMV0sMTApOmVbMV1bTm9dKFlvLHArSHMrcCk7fXJldHVybiBEdTt9fTt4dT17dHQ6ZnVuY3Rpb24odCxlKXt2YXIgaTt0cnl7cmV0dXJuIGUmJihpPW9pW2tuK3AreXMrcCtrXSh0W3orcCtMdF0sdFt6K3ArVnNdKSk/aTp0W3dyXXx8dFtyYytwK2huXXx8dFthYStwK2huXTt9Y2F0Y2gobil7cmV0dXJuIFJ1O319LFo6ZnVuY3Rpb24odCxlLGksbil7dmFyIGs4LEc4LGY4O2s4PS0zNDExNDYxMjY7Rzg9LTg3ODQ2NTgzMDtmOD0yO2Zvcih2YXIgejg9MTtzOS5yMih6OC50b1N0cmluZygpLHo4LnRvU3RyaW5nKCkubGVuZ3RoLDk1MDgzKSE9PWs4O3o4Kyspe3JldHVybiB0eXBlb2YgdFtxdCtwK2JvK3ArdG9dPT09T3M/dFtxdCtwK2JvK3ArdG9dKGUsaSxufHx7fSk6dFtYcitwK2JvXShiK2UsaSk7fWlmKHM5LnIyKGY4LnRvU3RyaW5nKCksZjgudG9TdHJpbmcoKS5sZW5ndGgsOTIxOTgpIT09Rzgpe3JldHVybiF0WyhxdC1wLWJvKS9wKnRvXSE9T3M/dFsocXQqcCViby1wKSp0b10oZSxpLG4mJnt9KTp0W1hyJXAqYm9dKGIqZSxpKTt9fSxLOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciByO3I9ZnVuY3Rpb24oKXt4dS5aKHQsZSxyLG4pO2lbYXVdKCk7fTt4dS5YKHQsZSxyLG4pO30sWDpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdHlwZW9mIHRbSG8rcCtibytwK3RvXT09PU9zP3RbSG8rcCtibytwK3RvXShlLGksbnx8e30pOnRbUXIrcCtib10oYitlLGkpO319OyEoa3U9e2l0Okh0W0pyXShNdSksbnQ6QnJbSnJdKE11KSxtOndhW0pyXShNdSksZXQ6Q2lbSnJdKE11KSxydDpnYVtKcl0oTXUpLG90OlhhW0pyXShNdSl8fHJyW0pyXShNdSl8fFFhW0pyXShNdVt1Y10oMCw0KSksc3Q6enNbSnJdKE11KSxiOk5uW0pyXShNdSkmJiF6aVtKcl0oTXUpLGN0OlhbSnJdKE11KSYmIWxjW0pyXShNdSksZzpJcltKcl0oTXUpJiYhdmVbSnJdKE11KSxhdDpsdFtKcl0oTXUpLGQ6aG9bSnJdKE11KSx1dDokbltKcl0oTXUpLGx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHQhPT1EdT90aGlzLnB0OnRoaXMucHQ9ZHUuZHQoKSE9PVJ1O30scHQ6RHUsZnQ6Z3UucShSdSl8fER1LGh0OlNvW0pyXShNdSkmJiFVdFtKcl0oTXUpLEo6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3UuSihrdS5mdCxlLHQpO30sX3Q6Z3UucShVdSl8fER1fSkuZXR8fGt1Lmh0fHxrdS5kfHxrdS5ifHwoa3UudXQ9VXUpOyhidT1mdW5jdGlvbih0LGUsaSl7dmFyIG47bj1pfHx7fTtuW2V0XT1lO3RoaXMudnQobik7dGhpcy5tdC5idHx8KHRoaXMubXQuYnQ9RXUrdCk7dGhpcy5ndCgpO30pW0ljXT17a3Q6bnVsbCx5dDp7T3Q6VXUsRXQ6RHUsYnQ6RHUsd3Q6RHUsU3Q6TnUsTHQ6VXUsQ3Q6cCtkYytwLEF0OlJ1LEZ0Ok51LGp0OlJ1LHh0OkR1LFB0Om51bGwsVHQ6VXV9LG10Ont9LHp0Omd1LnYoKSxCdDpndS5fKFtbUGEsMF1dKSxJdDpndS5fKFtbUmMsMV1dKSxNdDpndS5fKFtbTGUsMV1dKSxXdDpndS5fKFtbYWksMF0sW0xlLDBdXSksRHQ6Z3UuXyhbW1JjLDBdXSksVXQ6Z3UuXyhbW0dzLDBdXSksUnQ6Z3UuXyhbW2FpLDBdXSksSHQ6ZnVuY3Rpb24oKXt2YXIgcDIsdTIsbTI7aWYodHlwZW9mIHRoaXMubXQueHQ9PT1Pcyl0cnl7cDI9ODQ2MDI0MjAzO3UyPS0yNzI5OTQ0NTM7bTI9Mjtmb3IodmFyIFoyPTE7czkucjIoWjIudG9TdHJpbmcoKSxaMi50b1N0cmluZygpLmxlbmd0aCw1MDQ3NykhPT1wMjtaMisrKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYypwLUJpXSgpO31pZihzOS5IMihtMi50b1N0cmluZygpLG0yLnRvU3RyaW5nKCkubGVuZ3RoLDQ3NjI5KSE9PXUyKXtyZXR1cm4gdGhpcy5tdC54dFthdV0odGhpcyx0aGlzLm10KVtyYytwK0JpXSgpO319Y2F0Y2godCl7cmV0dXJuIG11LmUodCksUnU7fXJldHVybiB0aGlzLm10Lnh0O30scXQ6ZnVuY3Rpb24oKXt2dS5KdCgpP3RoaXMuVnQ9VXU6eXUuYyh0aGlzLm10LmJ0LDEsdGhpcy5tdC5FdCx0aGlzLm10LkN0LHRoaXMubXQuUHQpO30sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy52dCh0KTt9LEx0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0PXRoaXMubXQ7ZT10Lk90IT09Y2EmJnQuT3QhPT1vZXx8dC5PdD09PWNhJiZrdS5vdHx8dC5PdD09PW9lJiYha3Uub3Q7dHJ5e3R5cGVvZiB0Lkx0PT09T3M/ZT1lJiZ0Lkx0W2F1XSh0aGlzLGUsdGhpcy5OdCgpKSE9PVJ1OnR5cGVvZiB0Lkx0PT09b24mJihlPWUmJnQuTHQpO31jYXRjaChpKXttdS5lKGkpO31yZXR1cm4gdnUuSnQoKT9lJiYhdGhpcy5WdDplJiYheXUuYSh0LmJ0KTt9LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OdCgpO30sZ3Q6ZnVuY3Rpb24oKXt2YXIgWTIsSTIsRjIsdCxlLGksbjtZMj0tNTY4ODAyNTQ7STI9LTE0MDU4MjA2NztGMj0yO2Zvcih2YXIgRzI9MTtzOS5yMihHMi50b1N0cmluZygpLEcyLnRvU3RyaW5nKCkubGVuZ3RoLDUzOTYwKSE9PVkyO0cyKyspe0YyKz0yO31pZihzOS5yMihGMi50b1N0cmluZygpLEYyLnRvU3RyaW5nKCkubGVuZ3RoLDU0NTA0KSE9PUkyKXt9dD1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj17fTtuW0x1XT1bUnUsVXVdO25benVdPVtSdSxSdV07bltCdV09W1V1LFV1XTtuW0l1XT1bVXUsUnVdO2ZvcihpIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixpKSYmbltpXVswXT09PXQmJm5baV1bMV09PT1lKXtyZXR1cm4gaTt9cmV0dXJuIHp1O307ZT1rdS5sdCgpO2k9dCh2dS5tdC4kdC5uZXdUYWIsdnUubXQuJHQudW5kZXIpO249dCh0aGlzLm10LkF0LHRoaXMubXQuVHQpO2V8fG49PT1MdSYmKG49aSk9PT1MdSYmKG49QnUpO2t1Lm90JiYobj09PXp1JiYobj1JdSksbj09PUx1JiYobj1CdSkpO2t1Lm0mJjA9PT1OW0R0K3ArT3JdJiZuPT09enUmJihuPUl1KTt0aGlzLmt0PW47fSxOdDpmdW5jdGlvbigpe3ZhciB0LGU7ZT17fTtmb3IodCBpbiB0aGlzLm10KXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XSh0aGlzLm10LHQpJiZ0W2NvXT49MyYmKGVbdF09dGhpcy5tdFt0XSk7fXJldHVybiBlO30sdnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHI7dGhpcy5tdD1ndS5rKHRoaXMuenQsdGhpcy55dCx0aGlzLm10LHR8fHt9KTtmb3IoaSBpbiB0aGlzLm10KWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKHRoaXMubXQsaSkpc3dpdGNoKG49dGhpcy5tdFtpXSxpKXtjYXNlIFFvOnRoaXMubXQud3Q9bjticmVhaztjYXNlIGV0OnRoaXMubXQueHQ9bjticmVhaztjYXNlIHZpOnRoaXMubXQuT3Q9KG4rcClbcmMrcCtFdCtwK21yXSgpO2JyZWFrO2Nhc2Ugb2ErcCt2dDp0aGlzLm10LmJ0PW47YnJlYWs7Y2FzZSBvYStwK3RjOnRoaXMubXQuRXQ9bjticmVhaztjYXNlIG9hK3ArcWU6dGhpcy5tdC5DdD1uO2JyZWFrO2Nhc2Ugb2ErcCt0bjp0aGlzLm10LlB0PW47YnJlYWs7Y2FzZSBVYzp0aGlzLm10LlR0PW47YnJlYWs7Y2FzZSBoYStwK09uOnRoaXMubXQuQXQ9bjticmVhaztjYXNlIGdvK3ArcG86dGhpcy5tdC5GdD1uO2JyZWFrO2Nhc2UgWnMrcCtwbzp0aGlzLm10LlN0PW47YnJlYWs7Y2FzZSBqdCtwK1U6dGhpcy5tdC5qdD1uO2JyZWFrO2Nhc2UgJGkrcCt5bzp0aGlzLm10Lkx0PW47fWlmKCFrdS5vdCYmIXRoaXMubXQuQXQpZm9yKHI9W1trdS5nJiYxMT09PWt1Ll90LHRoaXMuVXRdLFtrdS5iJiZrdS5fdDw0MSx0aGlzLkl0XSxba3UuYix0aGlzLkJ0XSxba3UuZCYma3UuX3Q8NDcsdGhpcy5NdF0sW2t1LnV0LHRoaXMuRHRdLFtrdS5hdCx0aGlzLlJ0XSxba3UuYiYma3UuX3Q+PTU5LHRoaXMuV3RdLFtrdS51dCYma3UuX3Q+PTQ2LHRoaXMuV3RdXSxlPTA7ZTxyW2NvXTtlKyspaWYocltlXVswXSlmb3IoaSBpbiByW2VdWzFdKXt5aVtJY11bVCtwK3plK3ArQ3JdW2F1XShyW2VdWzFdLGkpJiYodGhpcy5tdFtpXT1yW2VdWzFdW2ldKTt9fX07KE91PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpczt0aGlzLlF0PXQ7dGhpcy5HdD10aGlzLll0KCk7dGhpcy5LdD10aGlzLlp0KCk7eHUuWCh0aGlzLkd0LG50LGZ1bmN0aW9uKCl7VGMoZS5LdCk7Z3UuUChlLkd0KTt9KTt9KVtJY109e1l0OmZ1bmN0aW9uKCl7dmFyIHQ7dD1ndS56KFdyLGd1Ll8oW1t1cixqdV1dKSxwKTtyZXR1cm4gdGhpcy5RdFtWaStwK3Z0XVtyYytwK0V0K3ArbXJdKCk9PT1oaT9vaVtoaV1bRnIrcCt4dF0odCk6dGhpcy5RdFtvdCtwK2tjXVtTYStwK2VvXSh0LHRoaXMuUXRbeWMrcCtIYV0pLHQ7fSxadDpmdW5jdGlvbigpe3ZhciB0O3Q9dGhpcztyZXR1cm4gJHMoZnVuY3Rpb24oKXt2YXIgZSxpO2k9aHUodC5RdFtJYV1bS2UrcCt6b10sMTApO3QuUXRbVmkrcCt2dF1bcmMrcCtFdCtwK21yXSgpPT09aGkmJihpPTllOSk7KGU9X2krTGkrc3IrX3QrQWMrTGkrY3UrX3QrX24rTGkrJGMrX3QrcCsoWStMaStwKSt0LlF0W21lK3AreXRdKyhYbitfdCtwKSsodStMaStwKSt0LlF0W21lK3AraW9dKyhYbitfdCtwKSsoanMrTGkrcCkrdC5RdFttZStwK0ZuXSsoWG4rX3QrcCkrKFVpK0xpK3ApK3QuUXRbbWUrcCtPcl0rKFhuK190K3ApKyhLZStkbitRYytMaStwKSsoZnUoaSk/MjppKzEpKSE9PXQuR3RbQ2UrcCt6dF0oSWEpJiZ0Lkd0W1ljK3ArenRdKElhLGUpO30sMTUwKTt9fTtPdS5YdD1mdW5jdGlvbih0KXt2YXIgZSxxOCxLOCxNODtzOS5ENSgxMSk7ZT1zOS5RNSh0YSxocyxwLHAsRXUsZG4sZG4pO3RyeXtxOD0xMzUyMTc5MDU0O0s4PTM3NTg5NDgzO004PTI7Zm9yKHZhciBnOD0xO3M5LkgyKGc4LnRvU3RyaW5nKCksZzgudG9TdHJpbmcoKS5sZW5ndGgsMjk2NzIpIT09cTg7ZzgrKyl7dFsocXQtcCkqenRdKGUpO004Kz0yO31pZihzOS5yMihNOC50b1N0cmluZygpLE04LnRvU3RyaW5nKCkubGVuZ3RoLDc3MDk3KSE9PUs4KXt0WyhxdC1wKSp6dF0oZSk7fXRbcXQrcCt6dF0oZSk7fWNhdGNoKGkpe319O091LnRlPWZ1bmN0aW9uKHQpe3ZhciBlO3M5LkQ1KDExKTtlPXM5LlE1KHRhLGhzLHAscCxFdSxkbixkbik7dFtDZStwK3p0XShlKXx8dFtDZStwK3p0XSh1cik9PT1qdXx8KHRbWWMrcCt6dF0oZSwxKSxuZXcgT3UodCkpO307KGR1PXtkdDpmdW5jdGlvbigpe3ZhciB0LGUsbDAsejAsUjA7ZT10aGlzLmllKCk7bDA9MTAzNzA4MTU0NDt6MD05MTQ3OTY5OTk7UjA9Mjtmb3IodmFyIFUwPTE7czkuSDIoVTAudG9TdHJpbmcoKSxVMC50b1N0cmluZygpLmxlbmd0aCw1ODc5OSkhPT1sMDtVMCsrKXtmb3IodD0wO3Q8ZVtjb107dCsrKWlmKGVbdF1bMV0oKT09PVV1KXtyZXR1cm4gZVt0XVswXTt9cmV0dXJuIFJ1O31pZihzOS5IMihSMC50b1N0cmluZygpLFIwLnRvU3RyaW5nKCkubGVuZ3RoLDUzNTM3KSE9PXowKXtmb3IodD0xO3Q8PWVbY29dO3QtLSlpZihlW3RdWzhdKCkhPVV1KXtyZXR1cm4gZVt0XVsxXTt9cmV0dXJuIFJ1O319LGllOmZ1bmN0aW9uKCl7dmFyIHQ7dD1bXTtyZXR1cm4ga3Uub3R8fGt1Lml0P1tdOih0W0plXShbdGhpcy5uZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjcmJnZ1Lm10LnJlO31dKSx0W0plXShbdGhpcy5vZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZrdS5fdD49NjQmJmt1Ll90PDY3O31dKSx0W0plXShbdGhpcy5zZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm50JiZrdS5fdD49NDMmJmt1Ll90PDY0O31dKSx0W0plXShbdGhpcy5jZSxmdW5jdGlvbigpe3JldHVybiBrdS5iJiZndS5ZKCkmJmt1Lm0mJmt1Ll90Pj00OSYma3UuX3Q8NjQ7fV0pLHRbSmVdKFt0aGlzLmFlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmQmJmt1Ll90Pj02NTt9XSksdFtKZV0oW3RoaXMudWUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuZCYma3UuX3Q8NjU7fV0pLHRbSmVdKFt0aGlzLmhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LmcmJmt1Ll90Pj0xMTt9XSksdFtKZV0oW3RoaXMuZmUsZnVuY3Rpb24oKXtyZXR1cm4ga3UuaHQ7fV0pLHRbSmVdKFt0aGlzLl9lLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q8NDk7fV0pLHRbSmVdKFt0aGlzLnBlLGZ1bmN0aW9uKCl7cmV0dXJuIGt1LnV0JiZrdS5udCYma3UuX3Q+PTQ5O31dKSx0KTt9fSkuZWU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmVlW0ljXT17YmU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixyLG8scyxjO2k9dGhpcztuPWkudmU7cj1uLkh0KCk7bz1uLm10O3M9by53dHx8Z3UuJCg1KTtjPWd1Lnkobyk7aWYodD1mdW5jdGlvbigpe3ZhciBNMixhMixnMjt0cnl7aWYodHlwZW9mIG8uRnQ9PT1PcyYmby5GdFthdV0obixyLG8pPT09UnUpe3JldHVybiBSdTt9fWNhdGNoKHQpe211LmUodCk7fU0yPS01MTY3OTI2MjthMj00NzA3MjkyNDM7ZzI9Mjtmb3IodmFyIG4yPTE7czkuSDIobjIudG9TdHJpbmcoKSxuMi50b1N0cmluZygpLmxlbmd0aCwyNDE1KSE9PU0yO24yKyspe3JldHVybiBEdTt9aWYoczkucjIoZzIudG9TdHJpbmcoKSxnMi50b1N0cmluZygpLmxlbmd0aCw4ODkxOSkhPT1hMil7cmV0dXJuIER1O319LGU9ZnVuY3Rpb24odCl7aWYodHlwZW9mIG8uU3Q9PT1Pcyl0cnl7by5TdFthdV0obixyLG8sdCk7fWNhdGNoKGUpe211LmUoZSk7fX0sdCgpPT09UnUpe3JldHVybiBSdTt9dHlwZW9mIG9bZXRdPT09UWkmJm9bZXRdIT09ciYmKHI9b1tldF0pO3Z1Lmp0KG8uanQpO3RoaXMubWUoKTt0cnl7cmV0dXJuIHRoaXMuZ2UocixvLHMsYyxmdW5jdGlvbih0KXtpLmtlKHQpO2kuZGUmJnZ1LmRlKCk7ZSh0KTt9KTt9Y2F0Y2goYSl7cmV0dXJuIG11LmUoYSksUnU7fX0sZGU6VXUsbWU6TnUsbGU6ZnVuY3Rpb24odCl7dGhpcy52ZT10O30sa2U6TnUseWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBQMixYMix5MixuO1AyPTE5MzY4MDE3MzQ7WDI9LTExNjU2OTU1NDg7eTI9Mjtmb3IodmFyIEQyPTE7czkuSDIoRDIudG9TdHJpbmcoKSxEMi50b1N0cmluZygpLmxlbmd0aCw4OTQ1NSkhPT1QMjtEMisrKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmImJmt1Ll90Pj02N3x8a3UuZCYma3UuX3Q+PTY0KSYmKG49WXUpLG4odCxlLGkpO31pZihzOS5yMih5Mi50b1N0cmluZygpLHkyLnRvU3RyaW5nKCkubGVuZ3RoLDExMTQ2KSE9PVgyKXtuPXZ1Lm10LndlP2d1LkM6WXU7cmV0dXJuKGt1LmJ8fGt1Ll90PjY0KSYmKGt1LmR8fGt1Ll90PD0xOSl8fChuPVl1KSxuKHQsZSxpKTt9fSxnZTpOdX07ZHUueGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnhlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztzOS5lNSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLGksbik7czkuRDUoMTIpO29bcGVdW1BdKHM5Lnk1KHAsRG8sS3IscCxnaSxwLHAscCxwLEd0LElvLGlhLHAsSHIsSW8sZGEsd3QsZGMscCxEbyxZcixwLHQscW8scCxiYSxhaSxxbyxLcixPcyxwLEhzLEhpLEhpLHcsWWMscCxwLGlhKSk7cihvKTtMbyhmdW5jdGlvbigpe29baF0odCxvW1FvXSxwKTt9LDEwMCk7fSxkZTpSdX0pO2R1Lk9lPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5PZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7cih0aGlzLnllKHQsem4pKTt9LGRlOiFrdS5vdCYmIWt1LmR9KTtkdS5FZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuRWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtDZTpmdW5jdGlvbigpe3ZhciB0LGUsaTt0PXZ1LlBlKCk7ZT12dS5UZS5TO2k9dHlwZW9mIHZ1Lm10LkFlPT09T3M/dnUubXQuQWVbYXVdKCk6dnUubXQuQWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM4LEE4LGQ4LG4scjtzOD0xNzQzMjY1MTE5O0E4PS0xNDE1MTgyNzYyO2Q4PTI7Zm9yKHZhciBFOD0xO3M5LkgyKEU4LnRvU3RyaW5nKCksRTgudG9TdHJpbmcoKS5sZW5ndGgsOTgyODMpIT09czg7RTgrKyl7ZDgrPTI7fWlmKHM5LkgyKGQ4LnRvU3RyaW5nKCksZDgudG9TdHJpbmcoKS5sZW5ndGgsNTk4NTIpIT09QTgpe31yZXR1cm4gaSE9PUt1P2k6KG49Z3UuJCgxKSxyPWU/aTp2dS5GZSh0KXx8aSx3dS5zKCl8fCFrdS5vdCYmIWt1Lmc/cjooeXUuYyhBdSxuLER1KSxyW05vXShYbyxwKSsocCtvdStwKStuKSk7fSgpO30sZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzLGMsYSx1LGgsZixfO2M9dGhpcy5DZSgpO2E9dnUuUGUoKTt1PWd1Lk4oYSk7aD0xNTtmPVtdO189ZnVuY3Rpb24odCl7dmFyIGU7dHlwZW9mIHRbSl09PT1PcyYmKGU9dFtKXSx4dS5YKHQsbnQsZSkpO3RbSl09ZnVuY3Rpb24oKXtyZXR1cm4gUnU7fTt9O2Zvcih2dS5TZSgpLGEmJmFbVmkrcCt2dF09PT1MbiYmYVtDZStwK3p0XSh3cikhPT16biYmZ3UuZihhLE9pKSYmKF8oYSksMCE9PWFbQ2UrcCt6dF0oT2kpW1FjK3ArUGldKF9zKSYmKGM9YVtDZStwK3p0XShPaSkpPT09cCYmKGM9S3UpKSxhJiZhW1ZpK3ArdnRdPT09TG4mJmFbQ2UrcCt6dF0od3IpPT09em4mJmd1LmYoYSxPaSkmJihfKGEpLExvKGZ1bmN0aW9uKCl7YVtKXT1EdTt9LDNlMyksdnUubXQuamU/Yz1hW0NlK3ArenRdKE9pKTooYz1LdSxrdS5vdCYmKGt1LnV0P2ZbSmVdKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30pOkxvKGZ1bmN0aW9uKCl7WXUoYVtDZStwK3p0XShPaSksem4pO30sMjApKSkpLGt1LmV0JiZrdS51dHx8a3UuZXQmJmt1LnN0JiYha3UuZCYmIWt1LmImJiFrdS5odD8oWXUoYyx6biksZ3UuSChoZSxmdW5jdGlvbigpe2d1LlQodCk7fSxoKSk6IWt1Lm90JiZndS5oKGEsd3IpIT09em4mJihrdS51dCYma3Uuc3R8fGt1Lmh0JiZrdS5fdDwxMHx8a3UuYiYma3UuX3Q8NDEpP2t1LnV0PyhndS5RKGMpLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihndS5RKHQpLGFbVmkrcCt2dF09PT1MbiYmdSYmZ3UuVCh1KSk6a3UuZXQmJmt1LmR8fGt1LmcmJmt1Ll90PD04PyhvPVl1KGMsem4pLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOihvPVl1KFlhK0xpK05yLHpuKSk/KG9bYWldW09pXT1jLGd1LkgoaGUsZnVuY3Rpb24oKXtndS5UKHQpO30saCkpOm89WXUodCx6bikscz0wO3M8Zltjb107cysrKXtmW3NdW2F1XSgpO31vJiZyKG8pO319KTtkdS5hZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuYWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLGI4LEQ4LFk4O2I4PTk0NTUzMTEyOTtEOD0tMjg2MjQ1NjE4O1k4PTI7Zm9yKHZhciBGOD0xO3M5LkgyKEY4LnRvU3RyaW5nKCksRjgudG9TdHJpbmcoKS5sZW5ndGgsODY5NDApIT09Yjg7RjgrKyl7bz10aGlzO1k4Kz0yO31pZihzOS5IMihZOC50b1N0cmluZygpLFk4LnRvU3RyaW5nKCkubGVuZ3RoLDU1ODUzKSE9PUQ4KXtvPXRoaXM7fUxvKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLnllKHQsaSxuKTtyKGUpO30sMCk7TG8oZnVuY3Rpb24oKXtZdShwLHZhKVtCbl0oKTt9LDApO319KTtkdS51ZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUudWVbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvO289dGhpcy55ZSh0LGksbik7b1tFZV0oKTtHdVtCbl0oKTtndS5NKG8pO0xvKGZ1bmN0aW9uKCl7cihvKTt9LGE5KTt9fSk7ZHUucGU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LnBlW0ljXT1ndS5rKGR1LmVlW0ljXSx7ZGU6UnUsZ2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgcztzPWE5O29pW3BlK3AraG5dW3RzK3ArRmVdKCk7bygpO3IodGhpcy55ZSh0LGksbikpO2Z1bmN0aW9uIG8oKXt0cnl7b2lbdHUrcCtGZV0oKTtzLS0+MCYmTG8obywxKTt9Y2F0Y2godCl7fX19fSk7ZHUuX2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1Ll9lW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgYTAsZzAsdjAsbyxzO2EwPS0zNTQ4NjI3NDY7ZzA9Nzg1Njk4Mjk2O3YwPTI7Zm9yKHZhciBQMD0xO3M5LnIyKFAwLnRvU3RyaW5nKCksUDAudG9TdHJpbmcoKS5sZW5ndGgsNzA1NjApIT09YTA7UDArKyl7djArPTI7fWlmKHM5LnIyKHYwLnRvU3RyaW5nKCksdjAudG9TdHJpbmcoKS5sZW5ndGgsNzQxNykhPT1nMCl7fW89dGhpcy55ZSh0LGksbik7cz12dS5MZShhOSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO30pO29bWHRdPWZ1bmN0aW9uKCl7TG8oZnVuY3Rpb24oKXtndS5QKHMpO30sMTApO307cihvKTt9fSk7ZHUuZmU9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmZlW0ljXT1ndS5rKGR1LmVlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbztOW1FvXT1ndS4kKDUpO289dGhpcy55ZSh0LGksbik7dGhpcy55ZShwLE5bUW9dLHApO05bUW9dPUR1O3Iobyk7fSxkZTpSdX0pO2R1LmhlPWZ1bmN0aW9uKHQpe3RoaXMubGUodCk7fTtkdS5oZVtJY109Z3UuayhkdS5lZVtJY10se2dlOmZ1bmN0aW9uKHQsZSxpLG4scil7dmFyIG8scztvPXRoaXMueWUoUXU/dDpLdSxpLG4pO3M9ZnVuY3Rpb24oKXtvW2FpXVtPaV09dDt9O3h1LksobyxFZSxzKTtvW0VlXSgpO0d1W0JuXSgpO0xvKHMsMTAwKTtyKG8pO30sZGU6UnV9KTtkdS5zZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUuc2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtCZTpmdW5jdGlvbigpe3ZhciB0LGU7ZT1ndS56KGppLHtkYXRhOmd1LkwoT2UrZGMrdix0aGlzLnplKStndS4kKDMpfSk7cmV0dXJuKHQ9Z3UueihXcix7c3R5bGU6WmMrTGkreG8rX3QrdStMaStnK190K1krTGkrZytfdCtBYytMaStjdStfdCtVaStMaStydSthZStwK190K2pzK0xpK1VvK190KyRjK2RuK1JhK0xpK05lK190K1ppK0xpK3hvK190K3B9KSlbRnIrcCt4dF0oZSksW2UsdF07fSx6ZTprbytwK0N0K3ArcGErcCtQcytwK3pjK3ArX2UrcCtWcytwK1JpK3ArSnQrcCtrYStwK3hhK3ArSm8rcCtoYytwK2VyK3ArSGUrcCtfK3ArRmkrcCt6citwK3V0K3ArenIreG4rUGUrcCt1bytwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK1ZlK3ArTHQrcCtBbitwK3pyK3ArS2krcCtCYStwK1ZzK3ArTHQrcCtxYytwK2dlK3ArSm8rcCskZStwK0tuK3AraStwK3pyK3ArQmErcCt1bytwK0hlK3ArTGMrcCtwYStwK18rcCtJbitwK1lzK3AraStwK3pyK3ArQmErcCt5K3ArSGUrcCtMYytwK3BhK3ArXytwK0JlK3ArY24rcCt2bytwK3pyK3ArQmErcCtraStwK2wrcCtFbitwK1phK3ArWnQrcCtLYStwK1ZzK3ArQ3QrcCtTZStwK0xjK3ArZHIrcCt6citwK0JhK3ArTHIrcCt4cit4bitrcytwK0NuK3ArbCtwK010K3ArRmkrcCt6citwK3hpK3ArSW4rcCtZcytwK2krcCt6citwK3B0K3Arb2MrcCtlZStwK01vK3ArenIrcCtCYStwK2VyK3ArSGUrcCtMYytwK3BhK3ArXytwK3pyK3Ard24reG4rJG8rcCtuZStwK2tzK3ArYmMrcCtlcitwK0hlK3ArTGMrcCtabytwK0RhK3ArRW4rcCtLaStwK29jK3ArR2MrcCtocitwK1ZzK3ArTHQrcCtvcitwK2FvK3ArdnMrcCtrcytwK0x0K3ArX28rcCtMdCtwK29vK3ArbytwK1ByK3ArVnMrcCtMdCtwK3hzK3ArenIrcCtNcytwK0x0K3ArYWMrcCtFcitwK29jK3ArRitwK0pvK3ArZGUrcCtjcitwK3V0K3AreGUrcCtQdCtwK0FlK3ArSnQrcCtDK3huKyRvK3ArbmUrcCtrcytwK2JjK3ArdmMrcCtIZStwK0xjK3ArWm8rcCtEYStwK0VuK3ArS2krcCt0dCtwK1lzK3ArbWkrcCtXK3ArQStwK1ZvK3Ara3MrcCtMdCtwK1hjK3ArQmUrcCtjbitwK1puK3Ara28rcCtvK3ArQ3QrcCtFbitwK1JyK3ArbytwK29jLGdlOmZ1bmN0aW9uKHQsaSxuLHIsbyl7dmFyIHMsYyxhLGgsZjtoPXRoaXM7Zj1SdTt0cnl7KGM9dGhpcy55ZShZYStMaStOcix6bikpW3BlXVtQXShzOS55NShEbyxoaSxwLGRjLGUscCxIaSxlLHAsaGksZGMscCxEbyxIaSxkYyxIaSxEbyxIaSxqZSxwLHAsRG8samUsSGksRG8sRG8scCxwLHAsSGkscCxzOS5lNSgxMykpKTt4dS5LKGMscmksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7c1tFcytwK0NvXShpW2pzXSxpW1VpXSk7c1tlbitwK0NvXShpW3VdLGlbWV0pO3NbYWldW05vXSh0KTtvKHMpO31mdW5jdGlvbiBfKCl7ZSgpO2NbT2FdKCk7cigpO3VzKGEpO31mfHwoZj1VdSxzPWNbQXNdPVl1KFlhK0xpK05yLG4sZ3UueShoLkllKGkpKSkseHUuWChjLEJuLF8pLGE9TG8oXywzZTMpLGNbcGVdW2hpXVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1oLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO2Z1bmN0aW9uIGUoKXtzOS5ENSgxNCk7Y1twZV1baGldW3M5Lnk1KFNuLHhlLHAsSnQscCxwLEhlLHAsRnQpXT1wO319KTt9Y2F0Y2goXyl7fX0sSWU6ZnVuY3Rpb24odCl7dmFyIGU7ZT1ndS5rKHQse30pO3JldHVybiBlW1VpXT1lW2pzXT05ZTUsZVt1XT1lW1ldPTEsZTt9fSk7ZHUuY2U9ZnVuY3Rpb24odCl7dGhpcy5sZSh0KTt9O2R1LmNlW0ljXT1ndS5rKGR1LnNlW0ljXSx7Z2U6ZnVuY3Rpb24odCxlLGksbixyKXt2YXIgbyxzO3M9Z3UuTyhVdSk7eHUuSyhOLEJuLGZ1bmN0aW9uKCl7Z3UuUChzKTtvW2FpXVtOb10odCk7cihvKTt9KTtzOS5ENSg0KTtvPXRoaXMueWUoczkueTUoTnIsWWEsTGkpLHpuKTtzW3NuK3ArT3RdW3BlXVtQXSh0aGlzLkJlKClbMV1bbnUrcCtKdCtwK3hlK3ArSGUrcCtGdF0pO319KTtkdS5vZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUub2VbSWNdPWd1LmsoZHUuZWVbSWNdLHtkZTpSdSxOZTpmdW5jdGlvbih0KXtOW2xlK3ArRmFdKHQsTlthaV1bamFdKTt9LGdlOmZ1bmN0aW9uKHQsZSxpLG4scil7dGhpcy5SZT1yO3RoaXMuTmUoe01lOnRoaXMuTWUseHQ6dCxSZTpVdSxVZTpufSk7dGhpcy5OZSh7TWU6dGhpcy5NZSxEZTpVdSx4dDpZYStMaStOcn0pO30sbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO249dGhpczt0aGlzLk1lPVVuW2VhXSgpO3RoaXMudmU9dDtlPXZ1LlBlKCk7czkuZTUoMTUpO2k9Z3UuQihlLHM5LlE1KHAsaWUseGUscGEscCxwLG8seGUscCxKcyxwKSk7KGVbVmkrcCt2dF09PT1MbiYmZVtDZStwK3p0XShKaSkhPT16biYmIWd1LlMoZSl8fGkmJiFndS5TKGkpKSYmKHRoaXMuZGU9VXUpO3h1LlgoTixSZSxmdW5jdGlvbiByKHQpe3RyeXt0W2hzXS5NZT09PW4uTWUmJm4uV2UodFtoc10pO3RbaHNdLkRlJiZ4dS5aKE4sUmUscik7fWNhdGNoKGUpe319KTt9LFdlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpPXRoaXM7bj1SdTtzOS5lNSg0KTtlPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLHQud3R8fHpuLHQuVWV8fHApO3QuRGUmJihlJiZlW09hXSgpLG49VXUpOyFuJiZlJiZMbyhmdW5jdGlvbigpe2VbYWldW09pXT10Lnh0O3QuUmUmJmkuUmUoZSk7fSwxMDApO319KTtkdS5uZT1mdW5jdGlvbih0KXt0aGlzLmxlKHQpO307ZHUubmVbSWNdPWd1LmsoZHUuZWVbSWNdLHtnZTpmdW5jdGlvbih0LGUsaSxuLHIpe3ZhciBvLHM7bz1rdS5tPzA6OTk5OTtzOS5lNSg0KTtzPXRoaXMueWUoczkuUTUoTnIsWWEsTGkpLGksczkuUTUocnUsWSxqcyxvLHUscCxkYSxwbixkYSxkYSxnaSxkYSxVaSxnaSxnaSxwLHJ1LHM5LmU1KDE2KSkpO3NbcGVdW1BdKHArSGkrS3IrRG8rcCsoY2krR3QrdWkrZGErVW8rX3QrcCkrKE9zK0d0K1VzK3FvK3AraWErcCtZcitwK0d0K210K3FvK3VpK0RvK1VvK2lhK2NlK190K3ArR3QrdWkrZGErZnQrX3QrcCtHdCtZYytwK21zK3FvK09zK3FvK3AraWErcCtZcitwK0d0K210K0d0K3ArcW8rRHQrcCtWcytEbytydStpYStwK0d0K3d0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwK0d0K1Z0K0d0K3d0K0hzK0VzK3ArQ28rcW8rcCkrbysocCtnaStwbitpYStwK0d0K3ArYmErcCtnaStwK0d0K3EraWErcCtHdCtwK2JhK3ApKyhZYytwK3crcW8rT3MrcW8rcCtpYStwK1lyK3ArR3QrcCkrKGNpK0d0K0lzK3ArTHQrZGErRHQrcCtMdCtnaStJcytwK1ZzK2RhK0R0K3ArVnMrZ2krbmkrZGErWWMrcCttcytxbytPcytxbytwK2lhK3ArWXIrcCtHdCttdCtHdCtwK3FvK0lzK3ArTHQrR3QrcCt4K3ArZGErcCtHdCtEdCtwK0x0K0d0K3ArZXUrcCtldStwK0d0K0lzK3ArVnMrR3QrcCt4K3ArZGErcCtHdCtEdCtwK1ZzK2lhK3ArR3QrcCtZcitwK0d0K0ZjK3ArbXMrcW8rbmkraWErcCtfdCtwK0d0K1VzK3FvK3AraWErcCtfdCtwK0d0K3ArYmErcCtHdCtJcytwK0x0K0d0K3ArZGErcCtHdCtEdCtwK0x0K190K3ArR3QrSXMrcCtWcytHdCtwK2RhK3ArR3QrRHQrcCtWcytfdCtwK0d0K3ArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHArYmErcCtnaStwK0d0K0xhK2lhK3ArX3QrcCkrKHBlK0hzK1RhK2RhK1VzK190K3ApKyhPcytHdCtDcytxbytwK2lhK3ArWXIrcCkrKHd0K0hzK0VzK3ArQ28rcW8rVW8rZ2krVW8raWErcCtfdCtwKSsod3QrSHMrZW4rcCtDbytxbytwKSsoZVt1XXx8ZWlbdV0pKyhwK2dpK3ApKyhlW1ldfHxlaVtZXSkrKHAraWErcCtfdCtwKSsod3QrSHMrYWkrSHMrT2krR3QrcCtkYStwK0d0K3ArSW8rcCkrdCsocCtJbytwK190K3ApKyhwK2JhK3ApKyh3dCtIcytYdCtHdCtwK2RhK3ArR3QrQ3MrX3QrcCkrKFljK3ArdytxbytDcytnaStwK0d0K3lyK0d0K3ArWW4rcCtHdCtjdCtpYStwK190K3ApKyhwK0hpK3ArZGMrS3IrRG8rcCkpO3h1LksocyxFZSxmdW5jdGlvbigpe3Iocyk7fSk7fSxkZTpSdX0pO3Z1PXtaaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpLmZpO30sT2k6ZnVuY3Rpb24odCxlLGksbixyKXtmb3IodmFyIG8scz0wO3M8ZSYmKG89dFtzXSwhKDE9PT1uJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSsoaVtzXTw8aVtzXSUxMCksaVtlK3NdKXx8cihvW2pyK3ArJHIrcCttXShvW2NvXS0xKSppW3NdKjIrcysoaVtzXT4+cyksaVsyKmUrc10pfHxyKG9bY29dKmlbc10qMysoaVtzXTw8cyksaVszKmUrc10pKXx8bjwxJiYocihvW2pyK3ArJHIrcCttXSgwKSppW3NdK3MrMSxpW2Urc10pfHxyKG9banIrcCskcitwK21dKG9bY29dLTEpKmlbc10qMitzLGlbMiplK3NdKXx8cihvW2NvXSppW3NdKjMsaVszKmUrc10pKSkpO3MrKyk7fSx0bjpmdW5jdGlvbigpe3RoaXMucmkuY2k9VXU7dGhpcy5kaT1OdTt9LHVuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgZTAsbzAsczA7ZTA9LTMyMDg0OTg3O28wPS0xNjAyOTYwNTY5O3MwPTI7Zm9yKHZhciBkMD0xO3M5LnIyKGQwLnRvU3RyaW5nKCksZDAudG9TdHJpbmcoKS5sZW5ndGgsNDIwOTgpIT09ZTA7ZDArKyl7Zm9yKHZhciBuLHI9MyxvPWU9PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpfHxvW2NvXTspe29bTWFdKCk7fWZvcig7cjw9dFtjb107ci0tKXt+KG49dFtyXSkhPVFpP29bSmVdKG4pOi1uPT1qaXx8fm5bKGxhLXApL3Z0XT09UWl8fG9bSmVdKG4pO31yZXR1cm4gdGhpczt9aWYoczkuSDIoczAudG9TdHJpbmcoKSxzMC50b1N0cmluZygpLmxlbmd0aCwxNjYzNCkhPT1vMCl7Zm9yKHZhciBuLHI9MSxvPWUhPT1wcz90aGlzLm10LlllOnRoaXMubXQuR2U7aSYmb1tjb107KXtvW01hXSgpO31mb3IoO3I+PXRbY29dO3IrKyl7KyhuPXRbcl0pPT09UWk/b1tKZV0obik6fm49PT1qaSYmK25bbGEqcCp2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO31mb3IodmFyIG4scj0wLG89ZT09PXBzP3RoaXMubXQuWWU6dGhpcy5tdC5HZTtpJiZvW2NvXTspe29bTWFdKCk7fWZvcig7cjx0W2NvXTtyKyspe3R5cGVvZihuPXRbcl0pPT09UWk/b1tKZV0obik6dHlwZW9mIG49PT1qaSYmdHlwZW9mIG5bbGErcCt2dF09PT1RaSYmb1tKZV0obik7fXJldHVybiB0aGlzO30sVGU6e1F0OkR1LFM6UnV9LGRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2U9dGhpcy5QZSgpO2k9dGhpcy5waS5saTt0cnl7KHQ9b2lbU2MrcCtib10oQnMrcCtOYSkpW2dzK3ArQnMrcCtib10obnQsVXUsVXUsTiwxLGlbRHQrcCtMdF0saVtEdCtwK1ZzXSxpW3orcCtMdF0saVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO3RbQmNdPVV1O2VbR3IrcCtib10odCk7fWNhdGNoKG4pe211LmUobik7fX0sZGk6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aT10aGlzLnJpLmhpO2Zvcih0PTA7dDx0aGlzLnZpW2NvXSYmKCF0aGlzLmJpKCkmJiF0aGlzLm1pKCkpO3QrKyl7aWYoZT10aGlzLnZpW3RdLHRoaXMucmkuZmkrKyx0aGlzLnJpLmhpPWd1LkcoKSx0aGlzLmdpKGUpPT09UnUpe3JldHVybiB0aGlzLnJpLmZpLS0sdm9pZCh0aGlzLnJpLmhpPWkpO31pPXRoaXMucmkuaGk7d3UuYyhTdSx0aGlzLnJpLmhpKTtlLmd0KCk7ZS5rdD09PUJ1JiZ3dS5jKEZ1LHRoaXMucmkuZmkpO319LHBpOntsaTp7fSxHOjB9LERpOmZ1bmN0aW9uKCl7dmFyIHQ7dD0wO3JldHVybiB3dS5zKCk/KHQ9d3UuYShGdSksd3UudShGdSkpOnl1LmEoRnUpJiYob2lbZ3RdPT09c3RbT2ldfHx+c3RbT2ldW1FjK3ArUGldKHArb3UrcCt5dS5hKEF1KSkpJiYodD15dS5hKEZ1KSxMbyhmdW5jdGlvbigpe3l1LnUoRnUpO3l1LnUoQXUpO30sMzAwKSksdD1odSh0LDEwKSx0PWZ1KHQpPzA6dCx0aGlzLnJpLmZpPXQ7fSxTZTpmdW5jdGlvbih0KXt2YXIgZSxOMCx4MCxlNztlPXR8fHRoaXMucGkubGk7dHJ5e04wPTEwMzM2NjkxMzA7eDA9MTc2NTY2MjYzMTtlNz0yO2Zvcih2YXIgczc9MTtzOS5yMihzNy50b1N0cmluZygpLHM3LnRvU3RyaW5nKCkubGVuZ3RoLDg1NTQwKSE9PU4wO3M3Kyspe2VbZmMrcCtyb10mJmVbZmMrcCtyb10oKTtlW3J0K3ArZXNdJiZlW3J0K3ArZXNdKCk7czkuZTUoNCk7ZVtzOS55NShPYyxjZSxwKV09UnU7czkuZTUoNCk7ZVtzOS55NShzZSxHbyxwKV09VXU7ZTcrPTI7fWlmKHM5LnIyKGU3LnRvU3RyaW5nKCksZTcudG9TdHJpbmcoKS5sZW5ndGgsNDkzNDQpIT09eDApe2VbZmMvcC1yb118fGVbZmMlcC9yb10oKTtlWyhydC1wKSVlc118fGVbcnQlcC1lc10oKTtzOS5lNSgxOCk7ZVtzOS5RNShPYyxwLGNlKV09UnU7czkuRDUoMTkpO2VbczkuUTUocCxHbyxzZSldPVV1O319Y2F0Y2goaSl7fX0sY246ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2k9dGhpcztuPXRoaXMuc24odCxlKTt0aGlzLkhlW0plXShuKTt0aGlzLnFpKG4pO3RoaXMuYW58fCh2dS5GaSgpLGZ1bmN0aW9uKCl7dmFyIHQsZTtrdS5iJiYoKGU9b2lbU2MrcCtobl0oV3IpKVtEYytwK1BvXShpdCxmdW5jdGlvbigpe1Z1PVV1O30pLFZ1PVV1LHQ9JHMoZnVuY3Rpb24oKXtpZihWdT1SdSwhaS5tdC5WZSl7aWYodHlwZW9mIE5bd2NdIT09aml8fHR5cGVvZiBOW3djXVtJdF0hPT1Pcyl7cmV0dXJuIFZ1PVV1LHZvaWQgVGModCk7fU5bd2NdW0l0XShlKTtOW3djXVtGY10oKTt9fSw1MDApKTt9KCksdGhpcy5hbj1VdSk7fSwiaW4iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuWWU7fSxHZTpmdW5jdGlvbigpe3ZhciB0O3Q9Z3UueChhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMudW4odCxNbix0W2NvXSYmdFswXT09PVJ1KTt9LHJuOmZ1bmN0aW9uKHQpe3ZhciBlLGksbix3OCxaOCxCODtuPXR8fHt9O3c4PTI4NTE4MzcwMDtaOD0tMTUwOTY4MDA5NTtCOD0yO2Zvcih2YXIgTDg9MTtzOS5IMihMOC50b1N0cmluZygpLEw4LnRvU3RyaW5nKCkubGVuZ3RoLDYxNTcyKSE9PXc4O0w4Kyspe2ZvcihlIGluIG4paWYoeWlbSWNdWyhUJXAtemUpKnAvQ3JdW2F1XShuLGUpKXN3aXRjaCh0aGlzLm10W2VdPWk9bltlXSxlKXtjYXNlIFdvOnRoaXMubXQucWU9aTticmVhaztjYXNlIEZzOnRoaXMubXQuSmU9aTticmVhaztjYXNlIFZhOnRoaXMubXQuVmU9aTticmVhaztjYXNlIHFyJXAqUWU6dGhpcy5tdC5yZT1pO2JyZWFrO2Nhc2UgcWElcCpNYzp0aGlzLm10LkFlPWk7YnJlYWs7Y2FzZSBwcypwLXRvOnRoaXMubXQuJGU9aTticmVhaztjYXNlIE1pOnRoaXMubXQuUWU9aTticmVhaztjYXNlIE1uKnAvQ286dGhpcy5HZVtmaV0odGhpcyxpKTticmVhaztjYXNlKHBzLXApJUNvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduL3AvR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24vcCpsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZShjLXApL1MqcCpnYzp0aGlzLm10LnRpPWk7YnJlYWs7Y2FzZSBNYSpwJW5uLXAtQWk6dGhpcy5tdC4kdD1pO2JyZWFrO2Nhc2UgY2EqcC9Yczp0aGlzLm10LmVpPWk7YnJlYWs7Y2FzZSgoanQtcCkvTnMtcCkvc2E6a3UuZ3x8MzYhPWt1Ll90fHwoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UoZ3MtcCkvdGU6dGhpcy5tdC5paT1pO2JyZWFrO2Nhc2UgYm4vcCVMKnAlaWkqcC9sci9wLWdjOnRoaXMubXQuamU9aTt9QjgrPTI7fWlmKHM5LnIyKEI4LnRvU3RyaW5nKCksQjgudG9TdHJpbmcoKS5sZW5ndGgsNTcyMTIpIT09Wjgpe2ZvcihlIGluIG4paWYoeWlbSWNdW1QrcCt6ZStwK0NyXVthdV0obixlKSlzd2l0Y2godGhpcy5tdFtlXT1pPW5bZV0sZSl7Y2FzZSBXbzp0aGlzLm10LnFlPWk7YnJlYWs7Y2FzZSBGczp0aGlzLm10LkplPWk7YnJlYWs7Y2FzZSBWYTp0aGlzLm10LlZlPWk7YnJlYWs7Y2FzZSBxcitwK1FlOnRoaXMubXQucmU9aTticmVhaztjYXNlIHFhK3ArTWM6dGhpcy5tdC5BZT1pO2JyZWFrO2Nhc2UgcHMrcCt0bzp0aGlzLm10LiRlPWk7YnJlYWs7Y2FzZSBNaTp0aGlzLm10LlFlPWk7YnJlYWs7Y2FzZSBNbitwK0NvOnRoaXMuR2VbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSBwcytwK0NvOnRoaXMuWWVbZmldKHRoaXMsaSk7YnJlYWs7Y2FzZSByOnRoaXMubXQuS2U9aTticmVhaztjYXNlIEduK3ArR2k6dGhpcy5tdC5aZT1pO2JyZWFrO2Nhc2UgR24rcCtsaTp0aGlzLm10LlhlPWk7YnJlYWs7Y2FzZSBjK3ArUytwK2djOnRoaXMubXQudGk9aTticmVhaztjYXNlIE1hK3Arbm4rcCtBaTp0aGlzLm10LiR0PWk7YnJlYWs7Y2FzZSBjYStwK1hzOnRoaXMubXQuZWk9aTticmVhaztjYXNlIGp0K3ArTnMrcCtzYTprdS5nJiYxMD09PWt1Ll90JiYoaT1SdSksdGhpcy5tdC53ZT1pO2JyZWFrO2Nhc2UgZ3MrcCt0ZTp0aGlzLm10LmlpPWk7YnJlYWs7Y2FzZSBibitwK0wrcCtpaStwK2xyK3ArZ2M6dGhpcy5tdC5qZT1pO319cmV0dXJuIHRoaXM7fSxtdDp7WWU6W10saWk6UnUsd2U6UnUsVmU6UnUsQWU6S3UsJHQ6V3UsSmU6UnUscmU6UnUsJGU6VXUsamU6UnUsdGk6VXUscWU6UnUsZWk6MTAsS2U6MCxHZTpbXSxRZTo5OTk5LFhlOlV1LFplOltdfSxxaTpmdW5jdGlvbigpe2lmKCF0aGlzLnJpLnNpKXt0aGlzLnJpLnNpPVV1O3RyeXt0aGlzLnlpKCk7dGhpcy53aSgpO31jYXRjaCh0KXt9bXUuZShbdGhpcy5yaS5haT8wOjEsdGhpcy5yaS51aT8wOjEsdGhpcy5yaS5UaV1bZm9dKHApKTt9fSxraTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpLmxpO30sbm46ZnVuY3Rpb24oKXtyZXR1cm4gZ3UuXyhbW1dvLHRoaXMubXQucWVdLFtGcyx0aGlzLm10LkplXSxbVmEsdGhpcy5tdC5WZV0sW3FyK3ArUWUsdGhpcy5tdC5yZV0sW3FhK3ArTWMsdGhpcy5tdC5BZV0sW3BzK3ArdG8sdGhpcy5tdC4kZV0sW01pLHRoaXMubXQuUWVdLFtNbitwK0NvLHRoaXMubXQuR2VdLFtwcytwK0NvLHRoaXMubXQuWWVdLFtyLHRoaXMubXQuS2VdLFtHbitwK0dpLHRoaXMubXQuWmVdLFtHbitwK2xpLHRoaXMubXQuWGVdLFtjK3ArUytwK2djLHRoaXMubXQudGldLFtNYStwK25uK3ArQWksdGhpcy5tdC4kdF0sW2NhK3ArWHMsdGhpcy5tdC5laV0sW2p0K3ArTnMrcCtzYSx0aGlzLm10LndlXSxbZ3MrcCt0ZSx0aGlzLm10LmlpXSxbYm4rcCtMK3AraWkrcCtscitwK2djLHRoaXMubXQuamVdXSk7fSxGaTpmdW5jdGlvbigpe3ZhciBuLHIsbyxzLGMsYSx1LGgsZixfO2g9dGhpcztmPWgubXQ7Xz1SdTtmdW5jdGlvbiBpKHQpe249cj1jPW89cz1EdTsha3Uub3QmJnRbeitwK0x0XSsoa3UubnQ/MTc6MTUpPk5bU24rcCtpb10/Zi5YZSYmKChuPXt9KS5zY3JvbGxiYXI9VXUsaC5TaShuLFJ1KSxoLmJpKCl8fGgubWkoKXx8IWguamkoKXx8aC5kaSgpKTplKHQpO311PWt1LmR8fGt1Lmc/cmk6WnI7KGZ1bmN0aW9uKCl7eHUuWChvaSxudCxlLFV1KTtrdS5vdD8oeHUuWChvaSxacixpLFV1KSx4dS5YKG9pLHJpLGksVXUpKTp4dS5YKG9pLHUsaSxVdSk7fSgpKTt0aGlzLklpKCk7dGhpcy5NaSgpO3RoaXMuV2koKTt0aGlzLkRpKCk7dGhpcy5VaSgpO2Z1bmN0aW9uIGUoZSl7YT0yO198fChfPVV1LExvKGZ1bmN0aW9uKCl7Xz1SdTt9LGt1Lm90PzUwMDoxNTApLFZ1JiYhZi5KZXx8KG49eHUudHQoZSkscj1ndS5CKG4sTG4pLGM9Z3UuUyhuKSxuW0NlK3ArenRdKHVyKT09PWp1PyhuW0lhXVtZZV09TmUsZ3UuUChuKSxuPXh1LnR0KGUsVXUpLExvKGZ1bmN0aW9uKCl7T3UuWHQobik7fSwzZTMpKTpyJiYobz0obj1yKVtDZStwK3p0XSh3cikscz1ndS5OKG4pLGM9Z3UuUyhuKSksaC5TaShuLGMpLGgucmkuY2l8fGgucmkuYWl8fGgucmkudWl8fGVbQmNdfHx0KGgucGkubGlbU3NdJiZoLnBpLmxpW1NzXSE9PWVbU3NdKXx8dChmLmlpJiYhJHUpfHx0KCFlW3orcCtMdF0mJiFlW3orcCtWc10pfHx0KCFrdS5vdCYmIWt1LmcmJnR5cGVvZiBlW0VdIT09RHMmJjAhPT1lW0VdKXx8dCgha3Uub3QmJiFoLm5pJiYoa3UuYXR8fGt1LmJ8fGt1LnV0KSl8fHQoIWt1Lm90JiYhZi50aSYmKGt1LmJ8fGt1LnV0KSYmbz09PXpuKXx8dChoLmJpKCkpfHx0KGgubWkoKSl8fHQoIWguamkoKSl8fHQoIWguTGkobikpfHx0KGMmJiFmLiRlKXx8KGguemkoZSksa3UuZXQmJnImJnMmJmguU2UoZSksa3Uub3R8fCFyfHxjfHwoa3UuYiYmbyE9PXpuJiZndS5ZKCl8fGYudGkmJm89PT16biYmKGt1LmJ8fGt1LnV0KSkmJmguU2UoZSksaC5CaT1EdSxoLmRpKCkpKSk7fWZ1bmN0aW9uIHQodCl7cmV0dXJuKythLHQmJm11LmUoYSksdDt9fSx6aTpmdW5jdGlvbih0KXt0aGlzLnBpLmxpPXQ7dGhpcy5waS5HPWd1LkcoKTt9LF9pOltdLFlpOmZ1bmN0aW9uKCl7dmFyIHQsZTtlPTA7Zm9yKHRoaXMudmk9W107ZTx0aGlzLkhlW2NvXTtlKyspeyh0PXRoaXMuSGVbZV0pLkx0KCkmJnRoaXMudmlbSmVdKHQpO31yZXR1cm4gdGhpcy52aTt9LEppOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGU7fSxZZTpmdW5jdGlvbigpe3ZhciBKOCxDOCx0OCx0O0o4PS0xMTcyNzQxMzY3O0M4PS0xMzMyNjI5MzA4O3Q4PTI7Zm9yKHZhciBROD0xO3M5LnIyKFE4LnRvU3RyaW5nKCksUTgudG9TdHJpbmcoKS5sZW5ndGgsMTYwOTYpIT09Sjg7UTgrKyl7dDgrPTI7fWlmKHM5LnIyKHQ4LnRvU3RyaW5nKCksdDgudG9TdHJpbmcoKS5sZW5ndGgsNTAxMTQpIT09Qzgpe310PWd1LngoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVuKHQscHMsdFtjb10mJnRbMF09PT1SdSk7fSxiaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLlppKCk+PXRoaXMubXQuUWU7fSxIZTpbXSxMZTpmdW5jdGlvbih0KXt2YXIgZSxpO2k9Z3UuTyhVdSk7cmV0dXJuIGU9aVtzbitwK090XVtwZV1bU2MrcCtobl0oS3IpLDA9PT1OW2FpXVtPaV1bUWMrcCtQaV0obG4rTGkrcCk/ZVtTbitwK0p0K3AreGUrcCtIZStwK0Z0XT1wKyhhbitHdCtwK1lyK3ApKyhmZStIcythdCtIcytDZStwK21jK3ArVHQrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKTplW1NuK3ArSnQrcCt4ZStwK0hlK3ArRnRdPXArKGFuK0d0K3ArWXIrcCkrKFdpK0hzK3RzK3Ara3QrcW8rT3MrcW8rcCtpYStwK1lyK3ArYmErcCtpYStwK190K3ApKyhwK2JhK3ArR3QrZWMrR3QrcCtxbyt3bytpYStwK0d0K3ArWXIrcCtiYStwKSxpW3NuK3ArT3RdW3BlXVtoaV1bRnIrcCt4dF0oZSksdHlwZW9mIHQhPT15YSYmdHlwZW9mIHQhPT1Ec3x8TG8oZnVuY3Rpb24oKXtndS5QKGkpO30sdHx8NTAwKSxpO30sanQ6ZnVuY3Rpb24odCl7dmFyIGksbixyO2k9dHlwZW9mIHQ9PT1Ecz9VdTohIXQ7czkuZTUoMik7bj1zOS5RNShFdSxBbyk7cj1vaVtDZStwK2huK3ArdW4rcCtRc10obik7aT9yfHwocj1ndS56KEdhLHtpZDpuLG5hbWU6Z3QsY29udGVudDpqdCtkbitndH0pLG9pW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGUpWzBdW0ZyK3AreHRdKHIpKTpyJiZndS5QKHIpO30sZ2k6ZnVuY3Rpb24odCl7aWYodGhpcy5yaS5jaXx8dGhpcy5yaS5haXx8dGhpcy5yaS51aSl7cmV0dXJuIFJ1O31zd2l0Y2godC5rdCl7Y2FzZSB6dTpuZXcgZHUueGUodCkuYmUoKTticmVhaztjYXNlIEl1Om5ldyBkdS5PZSh0KS5iZSgpO2JyZWFrO2Nhc2UgQnU6bmV3IGR1LkVlKHQpLmJlKCk7YnJlYWs7Y2FzZSBMdTp0cnl7bmV3KGR1LmR0KCkpKHQpLmJlKCk7fWNhdGNoKGUpe211LmUoZSk7fX1yZXR1cm4gdC5xdCgpLFV1O30sVmk6ZnVuY3Rpb24oKXt0aGlzLkhlPVtdO30sTGk6ZnVuY3Rpb24odCl7dmFyIGU7ZT0wO2lmKCF0fHx0aGlzLkdpKHQpKXtyZXR1cm4gUnU7fWlmKCF0aGlzLm10LkdlW2NvXXx8dFtDZStwK3p0XSh1cik9PT1qdSl7cmV0dXJuIFV1O31mb3IoO2U8dGhpcy5tdC5HZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LkdlW2VdfHx0eXBlb2YgdGhpcy5tdC5HZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuR2VbZV1bcmMrcCtscytwK21yXSgpfHxndS5JKHQsdGhpcy5tdC5HZVtlXSkpfHxndS5CKHQsdGhpcy5tdC5HZVtlXSkpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sSGk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0W0VdJiYwIT09dFtFXXx8dGhpcy5waS5HKzE1MD5ndS5HKCk7fWNhdGNoKGUpe3JldHVybiBSdTt9fSxBaTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scixvLHM7czkuZTUoNCk7bz1zOS55NShwLHAsSHMpO3M5LmU1KDIpO3M9czkuUTUobyx0KTtmb3Iobj0wO248ZVtjb107bisrKWlmKHI9KHArZnMrcCtIcytwKVtRYytwK1BpXShlW25dWzBdKT4tMT9lW25dOm8rZVtuXSxzW3VjXShzW2NvXS1yW2NvXSk9PT1yfHxpJiZyPT09SHUpe3JldHVybiBVdTt9cmV0dXJuIFJ1O30sc246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGJ1KHRoaXMuSGVbY29dLHQsZSk7fSxLaTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmppKFV1KTt9LFNpOmZ1bmN0aW9uKHQsZSl7dGhpcy5UZS5RdD10O3RoaXMuVGUuUz1lO30sbWk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YaSgpK3RoaXMuUWkoKT5ndS5HKCk7fSxOaTpmdW5jdGlvbih0KXtyZXR1cm4gT3UudGUodCksdGhpczt9LFBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGUuUXQ7fSxGZTpmdW5jdGlvbih0KXt2YXIgZTtlPWd1Lk4odCk7cmV0dXJuIGUmJiF0aGlzLm10LiRlJiZndS5TKHQpP1J1OmU7fSxRaTpmdW5jdGlvbigpe3JldHVybiBrdS5vdD9VbltZdF0odGhpcy5tdC5LZSxhOSk6a3UuYnx8a3UuZ3x8a3UuYXR8fGt1LnV0JiYha3UuZXQ/VW5bWXRdKHRoaXMubXQuS2UsMjAwKTp0aGlzLm10LktlO30sWGk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaS5oaTt9LE1pOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scjtuPXRoaXM7cj1mdW5jdGlvbih0KXt2YXIgVDcsYzcsVjc7VDc9LTY1NDI0NjkwOTtjNz0yNjk5MjUxMjc7Vjc9Mjtmb3IodmFyIEo3PTE7czkuSDIoSjcudG9TdHJpbmcoKSxKNy50b1N0cmluZygpLmxlbmd0aCw3NzAzMSkhPT1UNztKNysrKXtmb3IoZT0wO2U8dFtjb107ZSsrKXtuLk5pKHRbZV0pO31WNys9Mjt9aWYoczkucjIoVjcudG9TdHJpbmcoKSxWNy50b1N0cmluZygpLmxlbmd0aCw2NTMyKSE9PWM3KXtmb3IoZT0xO2U+dFtjb107ZS0tKXtuLk5pKHRbZV0pO319fTskcyhmdW5jdGlvbigpe3ZhciBlO2Zvcih0PTA7dDxuLm10LlplW2NvXTt0Kyspe2lmKGU9bi5tdC5aZVt0XSwhKGk9b2lbQ2UrcCt1YStwK3VuK3ArS2MrcCt2dF0oZSkpW2NvXXx8bi5iaSgpfHwhbi5qaSgpKXtyZXR1cm47fXIoaSk7fX0sYTkpO30sUmk6ZnVuY3Rpb24odCl7dmFyIGgwLFEwLHIwLGUsaSxuLHIsbyxzO2gwPS00NDg3NzE4MTU7UTA9MTU4ODk0NzI1MjtyMD0yO2Zvcih2YXIgcDA9MTtzOS5yMihwMC50b1N0cmluZygpLHAwLnRvU3RyaW5nKCkubGVuZ3RoLDEyMzIyKSE9PWgwO3AwKyspe3IwKz0yO31pZihzOS5IMihyMC50b1N0cmluZygpLHIwLnRvU3RyaW5nKCkubGVuZ3RoLDM0ODkxKSE9PVEwKXt9bz0yO3M9UnU7Zm9yKGU9MDtlPD1vO2UrKyl7aWYoKG49b2lba24rcCt5cytwK2tdKHRbeitwK0x0XStlLHRbeitwK1ZzXSkpJiZuW1ZpK3ArdnRdPT09RnQrcCtMbitwK3BhK3ArUHMrcCtGdCl7cz1VdTticmVhazt9Zm9yKGk9MDtpPD1vO2krKylpZigobj1vaVtrbitwK3lzK3Ara10odFt6K3ArTHRdK2UsdFt6K3ArVnNdK2kpKSYmbltWaStwK3Z0XT09PUZ0K3ArTG4rcCtwYStwK1BzK3ArRnQpe3M9VXU7YnJlYWs7fWlmKHMpYnJlYWs7fWlmKHMpZm9yKHM9UnUscj1uW0NlK3ArdWErcCt1bitwK0tjK3ArdnRdKGpvKSxlPTA7ZTxyW2NvXTtlKyspaWYoZ3UuVShyW2VdKSl7cz1VdTticmVhazt9cmV0dXJuIHM/bjpSdTt9LGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXQuR2U7fSx4aTpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcixvO289UnU7Zm9yKHI9MDtyPHRbY29dO3IrKylpZih0W3JdPT09SHUpe289VXU7YnJlYWs7fW8mJihlfHxpKSYmKCF0aGlzLkFpKGUsdCl8fCF0aGlzLkFpKGksdCl8fE5bRXVdW09pXSYmTltFdV1bT2ldW2NvXSYmIXRoaXMuQWkoZ3UuRigpLE5bRXVdW09pXSkpJiZuKFV1LFJ1KTt9LENpOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBWMCxPMCxKMDtWMD0tMTMxNjYwOTE2MjtPMD0tMTczMjI3OTg2MDtKMD0yO2Zvcih2YXIgdDA9MTtzOS5yMih0MC50b1N0cmluZygpLHQwLnRvU3RyaW5nKCkubGVuZ3RoLDc0OTU4KSE9PVYwO3QwKyspe3RoaXMuQWkoaSx0LFV1KSYmbihVdSxSdSk7SjArPTI7fWlmKHM5LnIyKEowLnRvU3RyaW5nKCksSjAudG9TdHJpbmcoKS5sZW5ndGgsOTI4OTYpIT09TzApe3RoaXMuQWkoaSx0LFV1KXx8bihVdSxSdSk7fX0seWk6ZnVuY3Rpb24oKXt2YXIgdCxlO3Q9Z3UuRygpO2U9Z3UuRyhUdSk7czkuRDUoMTcpO3RoaXMucmkudWk9czkueTUodCwzMTUzNjAwMDAwMCxlKTt0aGlzLnJpLnVpJiYodGhpcy5naT1OdSk7fSxFaTpmdW5jdGlvbih0LGUsaSxuLHIpe2Zvcih2YXIgbyxzPTA7czxlJiYobz10W3NdLCEoMT09PW4mJihyKGlbcytlXSx0W3NdKmlbc10rcysoaVtzXT4+cyszKSl8fHIoaVtzKzIqZV0sdFtzXSoodFswXSt0WzFdK3RbMl0pKyhpW3NdPDxzKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbysoaVtzXT4+cykpKXx8bjwxJiYocihpW3MrZV0sdFtzXSppW3NdK3MpfHxyKGlbcysyKmVdLHRbc10qKHRbMF0rdFsxXSt0WzJdKSl8fHIoaVtzKzMqZV0sVW5bT10odFswXSp0WzFdKnRbMl0vbykrbykpKSk7cysrKTt9LGk6ZnVuY3Rpb24oKXt2YXIgdjgsbjgsUDg7djg9MTQyNjMyMTI3O244PTEyNDE3MDI4NDY7UDg9Mjtmb3IodmFyIHk4PTE7czkuSDIoeTgudG9TdHJpbmcoKSx5OC50b1N0cmluZygpLmxlbmd0aCw3MTM3NykhPT12ODt5OCsrKXtyZXR1cm4gdGhpcy5tdC5KZSYmdGhpcy5tdC5xZTt9aWYoczkucjIoUDgudG9TdHJpbmcoKSxQOC50b1N0cmluZygpLmxlbmd0aCw2MzQ3NSkhPT1uOCl7cmV0dXJuIHRoaXMubXQuSmUmJnRoaXMubXQucWU7fXJldHVybiB0aGlzLm10LkplfHx0aGlzLm10LnFlO30sbmk6RHUsVWk6ZnVuY3Rpb24oKXt2YXIgdDt0PWh1KHd1LmEoU3UpLDEwKTtmdSh0KSYmKHQ9MCk7dGhpcy5yaS5oaT10O30sJGk6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8dGhpcy5IZVtjb107ZSsrKXt0PXRoaXMuSGVbZV07eXUudSh0Lm10LmJ0KTt9dGhpcy5yaS5oaT10aGlzLnJpLmZpPTA7d3UudShGdSk7d3UudShBdSk7d3UudShTdSk7fSx3aTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbyxzLGMsYSx1O3M9dGhpcztjPTA7YT10aGlzLnJpO3U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWUmJihhLmFpPVV1LHMuZ2k9TnUpLHQhPT1lO307aWYodHlwZW9mIE5bRXVdW2ppXSE9PURzKXthLmFpPUR1O3Q9TltFdV1bamldW25zXSgpO2U9TltFdV1bamldW25zXSgpO2k9TltFdV1bamldW25zXSgpO249TltFdV1bamldW25zXSgpO3I9Z3UuRigoTltFdV1bamldW25zXSgpfHx7c3JjOm51bGx9KVthYV0pO289Z3UuRihxdVthYV0pO3RyeXtjPU5bRXVdW2ppXVtuc10oKXx8MDt9Y2F0Y2goaCl7fWM9VW5bWXRdKDAsVW5baHRdKDEsYykpO3RoaXMueGkodCxvLHIsdSk7dGhpcy5PaSh0LHRbY29dLGUsYyx1KTt0aGlzLkVpKGksaVtjb10sbixjLHUpO3RoaXMuQ2kodCx0W2NvXSxndS5GKCksdSx1KTt0aGlzLlBpKGksZ3UuRygpKTthLmFpPT09RHUmJihhLmFpPVJ1KTt9YS5UaT1jfHwwO30sUGk6ZnVuY3Rpb24odCxlLGkpe2d1LkcodFtmb10ocCtkYytwKSk8ZSYmaShVdSxSdSk7fSxHaTpmdW5jdGlvbih0KXt2YXIgZTtlPTA7aWYoIXR8fCF0aGlzLm10LlllW2NvXSl7cmV0dXJuIFJ1O31mb3IoO2U8dGhpcy5tdC5ZZVtjb107ZSsrKWlmKHQ9PT10aGlzLm10LlllW2VdfHx0eXBlb2YgdGhpcy5tdC5ZZVtlXT09PVFpJiYodFtWaStwK3Z0XT09PXRoaXMubXQuWWVbZV18fGd1LkkodCx0aGlzLm10LlllW2VdKSl8fGd1LkIodCx0aGlzLm10LlllW2VdKSl7cmV0dXJuIFV1O31yZXR1cm4gUnU7fSxJaTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHIsbztuPXRoaXM7cj01MDA7bz1mdW5jdGlvbih0LGUpe3ZhciBpLG47bj1rdS5iP1pyOm50OyhpPW9pW1NjK3ArYm9dKEJzK3ArTmEpKVtncytwK0JzK3ArYm9dKG4sVXUsVXUsTiwxLGVbRHQrcCtMdF0sZVtEdCtwK1ZzXSxlW3orcCtMdF0sZVt6K3ArVnNdLFJ1LFJ1LFJ1LFJ1LDAsRHUpO2kuZmM9VXU7dFtHcitwK2JvXShpKTt9O3h1Llgob2ksQXQsZnVuY3Rpb24obil7dmFyIHI7czkuRDUoNCk7cj1uW3M5Lnk1KEgsVGUscCldWzBdO3M5LmU1KDQpO3Q9bltzOS5RNShKYSxiZSxwKV07czkuZTUoNCk7ZT1yW3M5Lnk1KEx0LEVjLHApXTtzOS5ENSg0KTtpPXJbczkueTUoVnMsRWMscCldO30sVXUpO3h1Llgob2ksQ2MsZnVuY3Rpb24ocyl7dmFyIGMsYSx1O3M5LmU1KDQpO2M9c1tzOS55NShILFRlLHApXVswXTthPXh1LnR0KHMpO3U9bi5tdC5laTtVbltkXShjW0VjK3ArTHRdLWUpPj11fHxVbltkXShjW0VjK3ArVnNdLWkpPj11fHxzW2JlK3ArSmFdLXQ+cnx8bi5tdC5laTw9MHx8a3UuaHQmJlFbSnJdKGFbVmkrcCt2dF0pfHxuLnJpLmNpfHxuLnJpLmFpfHxuLnJpLnVpfHxuLmJpKCl8fG4ubWkoKXx8IW4uamkoKXx8IW4uTGkoYSl8fCFuLm10LiRlJiZndS5TKGEpfHwoYVtWaStwK3Z0XT09PUxuJiZuLlNlKHMpLG8oYSxjKSk7fSxVdSk7fSxXaTpmdW5jdGlvbigpe3ZhciBqMCxMMCxxMCx0LGU7ajA9NDQ5MTcyNDgzO0wwPS0xNDI4Njk0MzU2O3EwPTI7Zm9yKHZhciBNMD0xO3M5LnIyKE0wLnRvU3RyaW5nKCksTTAudG9TdHJpbmcoKS5sZW5ndGgsNjAwOTkpIT09ajA7TTArKyl7cTArPTI7fWlmKHM5LkgyKHEwLnRvU3RyaW5nKCkscTAudG9TdHJpbmcoKS5sZW5ndGgsNDUzNSkhPT1MMCl7fWU9dGhpczt0aGlzLm5pPWd1LnooV3Ise3N0eWxlOnUrTGkrcnUrYWUrcCtfdCtZK0xpK3J1K2FlK3ArX3QrQWMrTGkrSStfdCtVaStMaStVbytfdCtqcytMaStVbytfdCtLZStkbitRYytMaStDYStfdCtZZStMaStOZStfdCtwfSxwKTt0PSRzKGZ1bmN0aW9uKCl7dmFyIGk7aT1vaVtoaV07aSYmKFRjKHQpLGlbRnIrcCt4dF0oZS5uaSkpO30sMTAwKTt9LHJpOntvaTpSdSxoaTowLGZpOjAsdWk6VXUsY2k6UnUsYWk6VXUsc2k6UnV9LGppOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLllpKCksdD90aGlzLnZpW2NvXTp0aGlzLnZpW2NvXT4wO30sSnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdC5xZTt9fTt4dS5YKE4sYnMsZnVuY3Rpb24oKXskdT1VdTt9KTtMbyhmdW5jdGlvbigpe3M5LmU1KDE1KTttdS5lKHM5LlE1KEhzLGlzLHAsaXUsR3QsZnMscWkscCxHdCxybixHdCkpO3M5LmU1KDQpO211LmUoczkuUTUocCxhLExpKSxDdSk7czkuRDUoNCk7bXUuZShzOS55NShwLFRyLExpKSxQdSk7czkuZTUoNCk7bXUuZShzOS55NShwLEt0LExpKSxUdSk7fSwxMCk7TltFdV09TltFdV18fGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scixvO3I9e307bz1ndS5fKFtbc2krcCtsbytwK1VyLFt2dSx2dS5pXV0sW3JzLFB1XSxbUm8sQ3VdLFskdCtwK3JlLFR1XSxbTWUsW3Z1LHZ1LnJuLHJdXSxbQ2UrcCtubyxbdnUsdnUubm5dXSxbQ2UrcCtxcytwK0NvLFt2dSx2dS5lbl1dLFtDZStwK2lpK3ArQ28sW3Z1LHZ1WyJpbiJdXV0sW0duK3AraG4sW3Z1LHZ1Lk5pXV0sW0hvLFt2dSx2dS5jbixyXV0sW19hLFt2dSx2dS5kaSxyXV0sW0xzLFt2dSx2dS50bixyXV0sW01uK3ArQ28sW3Z1LHZ1LkdlLHJdXSxbcHMrcCtDbyxbdnUsdnUuWWUscl1dLFtDZStwK3FuK3AraG4sW3Z1LHZ1LlBlXV0sW0NlK3ArSmMrcCtOaSxbdnUsdnUuWmldXSxbQ2UrcCtidCtwK05pLFt2dSx2dS5LaV1dLFtUK3ArYnQsW3Z1LHZ1LmppXV0sW3NpK3ArUW4rcCtkdCxbdnUsdnUuYmldXSxbQ2UrcCt1dStwK3BvK3ArbSxbdnUsdnUuWGldXSxbQ2UrcCt1dStwK2JvLFt2dSx2dS5raV1dLFtkcyxbdnUsdnUuJGldXSxbQ2UrcCtqLFt2dSx2dS5KaV1dLFtOdCtwK2osW3Z1LHZ1LlZpXV0sW0huK0hzK0l0LFttdSxtdS5lXV0sW0huK0hzK1plLFttdSxtdS5yXV0sW1N0K0hzK1ljLFt5dSx5dS5jXV0sW1N0K0hzK0NlLFt5dSx5dS5hXV0sW1N0K0hzK3F0LFt5dSx5dS51XV0sW1JuK0hzK3NpK3ArTSxbd3Usd3Uuc11dLFtSbitIcytZYyxbd3Usd3UuY11dLFtSbitIcytDZSxbd3Usd3UuYV1dLFtSbitIcytxdCxbd3Usd3UudV1dLFtLbytIcytycyxrdS5fdF0sW0tvK0hzK3ByK3ArVHIsa3UuZnRdLFtLbytIcytzaStwK3RpLGt1Lml0XSxbS28rSHMrc2krcCtXdCxrdS5udF0sW0tvK0hzK3NpK3AremEsa3UubV0sW0tvK0hzK3NpK3ArenIrcCtKcytwK18sa3UuZXRdLFtLbytIcytzaStwK1ZjLGt1LnJ0XSxbS28rSHMrc2krcCtJaSxrdS5vdF0sW0tvK0hzK3NpK3ArY3Msa3Uuc3RdLFtLbytIcytzaStwK21hLGt1LmN0XSxbS28rSHMrc2krcCtRZSxrdS5iXSxbS28rSHMrc2krcCtWbixrdS5kXSxbS28rSHMrc2krcCtCdCxrdS5odF0sW0tvK0hzK3NpK3ArenIrcCtQcyxrdS5nXSxbS28rSHMrc2krcCtQYyxrdS5hdF0sW0tvK0hzK3NpK3ArdnIsa3UudXRdLFtLbytIcytycytwK3N1LFtrdSxrdS5KXV0sW0tvK0hzK2JyK3ArTSxba3Usa3UubHRdXSxbYm8rSHMrTW4rcCtvcyxbeHUseHUuS11dLFtibytIcytNbixbeHUseHUuWF1dLFtibytIcytmYSxbeHUseHUuWl1dLFtibytIcytDZStwK2xyLFt4dSx4dS50dF1dLFtYZStIcytzaStwK0wrcCtLLFtndSxndS53XV0sW1hlK0hzK3JzK3Arc3UsW2d1LGd1LkpdXSxbWGUrSHMrYmUsW2d1LGd1LkddXSxbWGUrSHMrY2MsW2d1LGd1LmtdXSxbWGUrSHMrRW8sW2d1LGd1LiRdXSxbWGUrSHMrU2MrcCtobixbZ3UsZ3Uuel1dLFtYZStIcytxdCtwK2huLFtndSxndS5QXV0sW1hlK0hzK0NlK3ArTmMsW2d1LGd1LkJdXSxbWGUrSHMrTXIrcCt3LFtndSxndS5IXV1dKTtmb3IoZSBpbiBvKWlmKHlpW0ljXVtUK3AremUrcCtDcl1bYXVdKG8sZSkpe2ZvcihuPWVbUXRdKHArSHMrcCksdD1yLGk9MDtpPG5bY29dLTE7aSsrKXt0eXBlb2YgdFtuW2ldXT09PURzJiYodFtuW2ldXT17fSk7dD10W25baV1dO31zOS5lNSgyMCk7dmFyIGE2PXM5Lnk1KDQ2LDE0LDE3LDIpO3RbbltuW2NvXS1hNl1dPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd1LngodFtlXSk/MT09PXRbZV1bY29dP3RbZV1bMF06ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRbZV1bY29dP3RbZV1bMV1bZmldKHRbZV1bMF0sYXJndW1lbnRzKToodFtlXVsxXVtmaV0odFtlXVswXSxhcmd1bWVudHMpLHRbZV1bMl0pO306dFtlXTt9KG8sZSk7fXJldHVybiByO30oKTt9KHQuX0RmSXJMb0dkbXk2dmRRT3J8fEVpK3ArTG8rcCtrcix0LHRbYWldLHRbRHRdLHRbcGVdLHRbQXJdLHRbVWFdLHRbZWldLHRbb2ldLHRbRG4rcCtOXSx0W1ljK3Ard10sdFtGYytwK3ddLHRbWWMrcCttc10sdFtGYytwK21zXSx0W2tvK3ArXytwK0pzK3AraWVdLHRbc3QrcCtUY10sdFtzaStwK3lpK3AraWVdLHRbcmVdLHRbRWErcCtvK3ArJHMrcCt6citwK3VzXSx0W1VuXSk7fSh3aW5kb3cpOwpmNXl5Lkg9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwueT09PSdmdW5jdGlvbic/ZjV5eS5MLnkuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnk7fTtmNXl5Llc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmNXl5Lmc9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5LkwuTz09PSdmdW5jdGlvbic/ZjV5eS5MLk8uYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLk87fTtmNXl5LmY9ZnVuY3Rpb24gKCl7cmV0dXJuIHR5cGVvZiBmNXl5Lkwudj09PSdmdW5jdGlvbic/ZjV5eS5MLnYuYXBwbHkoZjV5eS5MLGFyZ3VtZW50cyk6ZjV5eS5MLnY7fTtmdW5jdGlvbiBmNXl5KCl7fWY1eXkuQj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuTC55PT09J2Z1bmN0aW9uJz9mNXl5LkwueS5hcHBseShmNXl5LkwsYXJndW1lbnRzKTpmNXl5LkwueTt9O2Y1eXkuUj1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuST1mdW5jdGlvbiAoKXtyZXR1cm4gdHlwZW9mIGY1eXkuQy52PT09J2Z1bmN0aW9uJz9mNXl5LkMudi5hcHBseShmNXl5LkMsYXJndW1lbnRzKTpmNXl5LkMudjt9O2Y1eXkuTD1mdW5jdGlvbihEKXtyZXR1cm57eTpmdW5jdGlvbigpe3ZhciBHLGQ9YXJndW1lbnRzO3N3aXRjaChEKXtjYXNlIDI6Rz1kWzBdKmRbMV07YnJlYWs7Y2FzZSAwOkc9ZFswXXxkWzFdO2JyZWFrO2Nhc2UgMTpHPWRbMV0tZFswXTticmVhazt9cmV0dXJuIEc7fSxPOmZ1bmN0aW9uKFYpe0Q9Vjt9fTt9KCk7ZjV5eS56PWZ1bmN0aW9uICgpe3JldHVybiB0eXBlb2YgZjV5eS5MLk89PT0nZnVuY3Rpb24nP2Y1eXkuTC5PLmFwcGx5KGY1eXkuTCxhcmd1bWVudHMpOmY1eXkuTC5PO307ZjV5eS5DPWZ1bmN0aW9uKCl7dmFyIFE9Mjt3aGlsZShRIT09MSl7c3dpdGNoKFEpe2Nhc2UgMjpyZXR1cm57djpmdW5jdGlvbihVKXt2YXIgYj0yO3doaWxlKGIhPT0xNCl7c3dpdGNoKGIpe2Nhc2UgMjp2YXIgSz0nJyxsPWRlY29kZVVSSSgidCUxMWtibGMlN0QlMDZoYmRsbWw2ISUzQyUzQyslNUJjZC06NSU1RDcoOCcvJTVCdy8yOG1qJTNDOCkwN2IqJTFDMiUyNW0lMDdxJTdEb2JrJTE4dyU3Q3NkbWg3KSklMjIqWjJkJTE4LTVBKykub21zJTE1JTI1JTNFMCslNUIlM0MlMTF1JTIwNk15PyknLEstZCUzRTksSzItNDslMjAlMDY6IzAlN0Q1JTVDOiMzMmtLNiF1OSpLOCUyMDU6NiU1Q3ElMUYlM0UnLFgtbDAlMjA2JTVDeS44dSlHOCg4MWVKJTNDKjInJTIwJTA4NSUyNSUzRTArJTVCJTNDbDslM0MpTXFiMTomSTUiKTtiPTE7YnJlYWs7Y2FzZSA5OksrPVN0cmluZy5mcm9tQ2hhckNvZGUobC5jaGFyQ29kZUF0KFkpXlUuY2hhckNvZGVBdChrKSk7Yj04O2JyZWFrO2Nhc2UgMTp2YXIgWT0wLGs9MDtiPTU7YnJlYWs7Y2FzZSA1OmI9WTxsLmxlbmd0aD80Ojc7YnJlYWs7Y2FzZSAzOms9MDtiPTk7YnJlYWs7Y2FzZSA4OlkrKyxrKys7Yj01O2JyZWFrO2Nhc2UgNDpiPWs9PT1VLmxlbmd0aD8zOjk7YnJlYWs7Y2FzZSA3Oks9Sy5zcGxpdCgnKCcpO3JldHVybiBmdW5jdGlvbihQKXt2YXIgaD0yO3doaWxlKGghPT0xKXtzd2l0Y2goaCl7Y2FzZSAyOnJldHVybiBLW1BdO2JyZWFrO319fTticmVhazt9fX0oJ0UoWUxdVScpfTticmVhazt9fX0oKTshZnVuY3Rpb24oZSxvLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgVD1mNXl5O3ZhciBpLG4sdDtULmcoMCk7aT1ULlIoVC5IKCI4IiwwKSk7VC56KDApO249W1QuSShULkgoJ1x4MzFceDMwJywwKSksVC5JKCsiNiIpLFQuUigrJ1x4MzFceDM0JyksVC5SKCsiMTIiKSxULlIoVC5IKCI1IiwwLFQuZygwKSkpLFQuSShULkIoMCwnXHgzMCcsVC56KDEpKSksVC5SKFQuQignXHgzMVx4MzEnLDAsVC56KDApKSksVC5JKCsiMiIpXTtULmcoMik7dD1bKydceDMyXHgzMFx4MzFceDM5JyxULkIoJ1x1MDAzNScsMSksVC5IKCdceDMxXHgzNicsMCxULmcoMCkpXTt0cnl7c2V0VGltZW91dChmdW5jdGlvbigpe2MuTG9nZ2VyLmxvZyhpLFQuUigrJ1x4MzEnKSxuKTtjLkxvZ2dlci5sb2coaSxULlIoIjciLTApLHQuam9pbihULkkoJ1x4MzQnLTApKSk7fSwrIjUwMCIpO1QueigxKTtjLm9iamVjdD1bbixbKyIzNjAiLDQ5NCwzOTEsKyIzMTIiLFQuQigwLCIzMTIiKSxULkgoIjM2NSIsMCxULmcoMCkpLCsnXHgzNFx4MzBceDM0JyxULkgoIjMwMCIsMCxULmcoMCkpLCsnXHgzM1x4MzZceDMwXHgzMFx4MzEnLFQuSCgwLCdceDMzXHgzOVx4MzVceDMyXHgzMicsVC5nKDEpKSxULkIoIjE4NzcxIiwwLFQueigwKSksKyIzNDk0OCIsMTY1NDEsMjk1NzEsKydceDM1XHgzMVx4MzdceDMxXHgzOScsMzM5MDgsVC5IKCI3ODg0MCIsMCxULmcoMCkpLDEwNTk2NCwrJ1x4MzhceDM0XHgzNVx4MzVceDM1JyxULkgoIjcyNDI2IiwwLFQuZygwKSksVC5IKCdceDMzXHgzMFx4MzVceDM5XHgzOScsMCxULmcoMCkpLFQuQignXHUwMDM0XHUwMDMxXHUwMDM2XHUwMDMyXHUwMDM2JywwLFQuZygwKSksVC5CKDAsJ1x1MDAzOFx1MDAzOFx1MDAzMFx1MDAzOFx1MDAzNCcsVC56KDEpKSxULkgoIjY1NDA5IiwxLFQuZygyKSksMTQ0MDAsVC5IKCIxMjg0NCIsMSxULnooMikpLCsnXHgzOFx4MzZceDMwXHgzMicsVC5IKCdceDMxXHgzMFx4MzlceDMyXHgzMCcsMSxULmcoMikpLDEzNDE2LFQuSCgnXHgzMlx4MzRceDM4XHgzMlx4MzAnLDAsVC5nKDApKSxULkIoJ1x4MzNceDM3XHgzOVx4MzdceDM2JywwLFQueigwKSksKydceDM1XHgzMVx4NjVceDMzJ10sdCxbVC5IKCdceDMzXHgzNlx4MzInLDAsVC5nKDApKSw0OTYsKydceDMzXHgzOVx4MzknLFQuSCgwLCI3MzA5MjMiLFQuZygxKSksKydcdTAwMzJcdTAwMzVcdTAwMzFcdTAwMzInLFQuSCgiNjM5OCIsMCxULnooMCkpLFQuSCgnXHUwMDM0XHUwMDMxXHUwMDMxXHUwMDM5XHUwMDMxXHUwMDMyXHUwMDMyJywxLFQuZygyKSksKydceDMxXHgzMVx4MzFceDM5XHgzMicsVC5IKCdceDMzXHgzNFx4MzJceDMzXHgzNicsMCxULnooMCkpLDI0NjEsMzI1NTcsMTAyMTBdLG8uY3VycmVudFNjcmlwdCxULkgoIjEiLDEsVC5nKDIpKV07fWNhdGNoKG8pe3ZvaWQoJ1x4MzAnKjEpIT09ZS5jb25zb2xlJiZlLmNvbnNvbGUubG9nJiZGdW5jdGlvbi5hcHBseS5jYWxsKGUuY29uc29sZS5sb2csZS5jb25zb2xlLFtULkkoJ1x4MzFceDMzJ3wwKV0pO319KHdpbmRvdyxkb2N1bWVudCx3aW5kb3dbd2luZG93Ll9EZklyTG9HZG15NnZkUU9yfHxmNXl5LlIoIjMiLTApXSk7Cid1c2Ugc3RyaWN0JwoKIWZ1bmN0aW9uICh3aW5kb3cpIHsKCWNvbnN0IG5ld0ltYWdlID0gZnVuY3Rpb24gKG5hbWUpIHsKCQljb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpCgkJaW1hZ2Uuc3JjID0gJ2h0dHBzOi8vYWNybWJqa2s2cWM1dXRieS5wcm8vdjEvcHQvJyArIG5hbWUKCQlyZXR1cm4gaW1hZ2UKCX0KCWNvbnN0IG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQoYnRvYSgod2luZG93LmRvY3VtZW50LnJlZmVycmVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnKGh0dHBzP3xhbmRyb2lkLWFwcCk6XFwvXFwvJyksICcnKS5zcGxpdCgnLycpWzBdIHx8ICdkb3QuY29tJykudHJpbSgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQlyZXR1cm4gaXRlbS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KQoJfSkuam9pbignJykpKQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CgkJbmV3SW1hZ2UobmFtZSArICcvZi5wbmcnKS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCW5ld0ltYWdlKG5hbWUgKyAnL3MucG5nJykKCQkJfSwgNTAwMCkKCQl9KQoJfSkKfSh3aW5kb3cpCjshKGZ1bmN0aW9uICh3aW5kb3cpIHsKCWlmICh3aW5kb3cuY0lQb3AgIT09IHVuZGVmaW5lZCkgewoJCXJldHVybgoJfQoJdmFyIGJldHRlclBvcHVuZGVyID0gd2luZG93LlVtRFdlOURuOEZyMm5LQXMKCXZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3cubG9jYWxTdG9yYWdlCgl2YXIgc2Vzc2lvblN0b3JhZ2UgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UKCglmdW5jdGlvbiBQb3B1bmRlcihvcHRpb25zKSB7CgkJdGhpcy5zdGFydGVkQXRLZXkgPSBvcHRpb25zLnN0YXJ0ZWRBdEtleQoJCXRoaXMuaW1wcmVzc2lvbnNLZXkgPSBvcHRpb25zLmltcHJlc3Npb25zS2V5CgkJdGhpcy5pbXByZXNzaW9uc1BlclBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19wcCcKCQl0aGlzLmltcHJlc3Npb25zTGFzdFBhZ2VLZXkgPSB0aGlzLmltcHJlc3Npb25zS2V5ICsgJ19scCcKCQl0aGlzLmZyZXF1ZW5jeSA9IG9wdGlvbnMuZnJlcXVlbmN5CgkJdGhpcy5saW1pdCA9IG9wdGlvbnMubGltaXQKCQl0aGlzLmxpbWl0UGVyUGFnZSA9IG9wdGlvbnMubGltaXRQZXJQYWdlCgkJdGhpcy5saW1pdFBlclNlc3Npb24gPSBvcHRpb25zLmxpbWl0UGVyU2Vzc2lvbgoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBsYXN0UGFnZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5KSB8fCAnJwoJCQlpZiAobGFzdFBhZ2UgIT09ICcnICsgd2luZG93LmxvY2F0aW9uKSB7CgkJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5LCAwKQoJCQl9CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0xhc3RQYWdlS2V5LCAnJyArIHdpbmRvdy5sb2NhdGlvbikKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmlzQWxsb3dlZCA9IGZ1bmN0aW9uICgpIHsKCQlpZiAodGhpcy5saW1pdFBlclBhZ2UgIT0gMCkgewoJCQl2YXIgcGFnZUltcHJlc3Npb25zID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwICYmIHBhZ2VJbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyUGFnZSkgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCWlmICh0aGlzLmxpbWl0UGVyU2Vzc2lvbiAhPSAwICYmIHNlc3Npb25JbXByZXNzaW9ucyA+PSB0aGlzLmxpbWl0UGVyU2Vzc2lvbikgewoJCQkJcmV0dXJuIGZhbHNlCgkJCX0KCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJdmFyIHN0YXJ0ZWRBdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhcnRlZEF0S2V5KSB8IDAKCQl2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMAoJCWlmIChzdGFydGVkQXQgPT09IDAgfHwgbm93IC0gc3RhcnRlZEF0ID4gdGhpcy5mcmVxdWVuY3kpIHsKCQkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdGFydGVkQXRLZXksIDApCgkJCWxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNLZXksIDApCgkJCXJldHVybiB0cnVlCgkJfQoJCXJldHVybiBpbXByZXNzaW9ucyA8IHRoaXMubGltaXQKCX0KCglQb3B1bmRlci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gKCkgewoJCWlmICh0aGlzLmxpbWl0UGVyUGFnZSAhPSAwKSB7CgkJCXZhciBwYWdlSW1wcmVzc2lvbnMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW1wcmVzc2lvbnNQZXJQYWdlS2V5KSB8IDAKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmltcHJlc3Npb25zUGVyUGFnZUtleSwgcGFnZUltcHJlc3Npb25zICsgMSkKCQl9CgkJaWYgKHRoaXMubGltaXRQZXJTZXNzaW9uICE9IDApIHsKCQkJdmFyIHNlc3Npb25JbXByZXNzaW9ucyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgc2Vzc2lvbkltcHJlc3Npb25zICsgMSkKCQl9CgkJdmFyIGltcHJlc3Npb25zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSkgfCAwCgkJbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pbXByZXNzaW9uc0tleSwgaW1wcmVzc2lvbnMgKyAxKQoJCXZhciBzdGFydGVkQXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSkgfCAwCgkJaWYgKHN0YXJ0ZWRBdCA9PT0gMCkgewoJCQlsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0YXJ0ZWRBdEtleSwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwIHwgMCkKCQl9Cgl9CgoJUG9wdW5kZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh1cmwpIHsKCQl2YXIgc2VsZiA9IHRoaXMKCQl2YXIgY292ZXJUYWdzID0gJ3ZpZGVvLCBpZnJhbWUnCgkJdmFyIGlnbm9yZVRvID0gJycKCQl2YXIgYmluZFRvID0gJycKCQl2YXIgcmVsb2FkID0gZmFsc2UKCQliZXR0ZXJQb3B1bmRlci5jb25maWcoewoJCQlkZWJ1ZzogdHJ1ZSwKCQkJY292ZXJUYWdzOiBjb3ZlclRhZ3MgPyBjb3ZlclRhZ3Muc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKCQkJCXJldHVybiBpdGVtLnRyaW0oKQoJCQl9KSA6IFtdLAoJCQl3ZWJraXRBbmNob3JCbGFuazogZmFsc2UsCgkJCXRhYlVuZGVySWdub3JlVGFyZ2V0Qmxhbms6IGZhbHNlLAoJCQlpZ25vcmVUbzogaWdub3JlVG8gPyBpZ25vcmVUby5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoaXRlbSkgewoJCQkJcmV0dXJuIGl0ZW0udHJpbSgpCgkJCX0pIDogW10sCgkJCWJpbmRUbzogYmluZFRvID8gYmluZFRvLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChpdGVtKSB7CgkJCQlyZXR1cm4gaXRlbS50cmltKCkKCQkJfSkgOiBbXSwKCQkJZGVsYXk6IDEKCQl9KQoJCWJldHRlclBvcHVuZGVyLmFkZCh1cmwsIHsKCQkJbmV3VGFiOiB0cnVlLAoJCQlkZXZpY2U6ICdhbnknLAoJCQl1bmRlcjogdHJ1ZSwKCQkJd2lkdGg6IG51bGwsCgkJCWhlaWdodDogbnVsbCwKCQkJdG9wOiBudWxsLAoJCQlsZWZ0OiBudWxsLAoJCQljb29raWVFeHBpcmVzOiAxLAoJCQlzaG91bGRGaXJlOiBmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gc2VsZi5pc0FsbG93ZWQoKQoJCQl9LAoJCQliZWZvcmVPcGVuOiBmdW5jdGlvbiAoKSB7CgkJCQlzZWxmLmluY3JlbWVudCgpCgkJCX0sCgkJCWFmdGVyT3BlbjogZnVuY3Rpb24gKCkgewoJCQkJcmVsb2FkICYmIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKQoJCQl9CgkJfSkKCX0KCgl3aW5kb3cuY0lQb3AgPSBmdW5jdGlvbiAodXJsKSB7CgkJdmFyIHBvcHVuZGVyID0gbmV3IFBvcHVuZGVyKHsKCQkJc3RhcnRlZEF0S2V5OiAnX2NfcF9zdCcsCgkJCWltcHJlc3Npb25zS2V5OiAnX2NfcF9pJywKCQkJZnJlcXVlbmN5OiAyMTYwMCwKCQkJbGltaXQ6IDEsCgkJCWxpbWl0UGVyUGFnZTogMCwKCQkJbGltaXRQZXJTZXNzaW9uOiAwCgkJfSkKCQlwb3B1bmRlci5hZGQodXJsKQoJfQp9KSh3aW5kb3cpCg==(Line 1) Message:
console.clear
|
Security Headers
This page lists any security headers set by the main page. If you want to understand what these mean and how to use them, head on over to this page
Header | Value |
---|---|
X-Content-Type-Options | nosniff |
X-Frame-Options | DENY |
Indicators
This is a term in the security industry to describe indicators such as IPs, Domains, Hashes, etc. This does not imply that any of these indicate malicious activity.
acrmbjkk6qc5utby.pro
ads.exoclick.com
ajax.googleapis.com
ca.clcknads.pro
cdnjs.cloudflare.com
click.jasmin.com
click.livejasmin.com
engine.phn.doublepimp.com
galleryn1.awemwh.com
ioredi.com
maxcdn.bootstrapcdn.com
openload.co
pics.javfree.online
pt.ptawe.com
sitemnk.com
syndication.exoclick.com
www.google-analytics.com
www.javfree.online
109.206.164.148
209.197.3.15
23.251.141.244
2606:2800:234:1f1f:1754:1fef:718:1223
2606:4700:30::6818:6daa
2606:4700::6810:a532
2606:4700::6813:c597
2a00:1450:4001:80b::200a
2a00:1450:4001:816::200e
31.220.24.95
69.89.69.121
88.208.59.71
93.93.51.190
93.93.51.191
93.93.53.193
93.93.53.194
95.211.229.246
18274f0ca7dbd68462ac6199b442b056b6b4a248c96bc89f073da9db71ee15a0
259df606d306a732a7dc0ff329569ba873ea793195d969a13c206ba1bc7567dd
28e0a278f3a3166a35dd0f8420b535e710310d384c70d59bf82b644e23f7baa8
2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe
35b8943224bf6792a13a13f6fefb4188050df1f506e9bb16e2a3d08dc8973eb6
3e552578c7d450b023f2cd9d28f830be4335c3acc6c4ab6dadda0769f09e5f22
45c386cff259b40d09398b5d9198cfdee8e456db3d08ee2edba83657e828df6e
552a1e69a31f4a6936080842ef2f0742d348169622dca833c9fe72852422f776
59ddae45b03564f67a3341d574c10c172bd2b76cc882016f6f7c25a130b72ee1
5a3f1dd74233f605e511f1b5b244bedf85ac88ba264caf4d6401bc7ec2017dcd
6a35486cc65fba6c0f4311e7b0c011e93f42bd52f2e04ce7929c2c6de93671a8
74574fad91d276f061233734c168d0546c730c463bc120d5aae202332b5a6ead
7715e7e46333a5d53a012eeb67176f26749db09bd37e610875b406140553434f
799aeb25cc0373fdee0e1b1db7ad6c2f6a0e058dfadaa3379689f583213190bd
80bd626eb6d57112072a508ee4e5ce3c2fe5673fe0a5d029810033b24aaa5e9f
8337212354871836e6763a41e615916c89bac5b3f1f0adf60ba43c7c806e1015
85556761a8800d14ced8fcd41a6b8b26bf012d44a318866c0d81a62092efd9bf
8eb3819324147c512d3b64829a2123647b4efbde2ecb5c1f49713ec869ef45e3
9d02d662da8a47fb5fb610b545007507b6017028043dbb63cd09ec897d3b9627
a27edba0e34b2648a90a800ae94fdef3e39016d1b9bd6e54a31ede1f1cddfed0
aebf611c1438dc7ec748e9a6364c734066b34bf2a1c7e2fc6511ed784635b50e
b0d806b4c57953926c233faef16f8e45833bf52bd0a5bc3f96bd6c396809e8fa
b6ff651ab5abcf737b2beb9a57a7aaf315655a0c2534c640328e847ea507177e
c94588c2c490281057748a6bc21191dae810fb22ce8cc638b5e3fc7d390eb165
cafd04d08d5af378e292264eb49631895e38a62d57acbfbb59db46c6d84a2874
ce2ae919b910f8dbd1b04a7321ee1dcbd68c4d37c9d3811440eca95d57238773
ce3e82365473f1c7924d2c5a6e2a9f6fe3a3d787cf1a759d2cd54b8026ee705e
cf4724b2f736ed1a0ae6bc28f1ead963d9cd2c1fd87b6ef32e7799fc1c5c8bda
cfd2d78ecbf22c168ce6b2f16d92b89871fe94774ae8d0887efe5b53cfe5dd0c
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
ef1955ae757c8b966c83248350331bd3a30f658ced11f387f8ebf05ab3368629
fa421b6ebbd2fb474d3a3866409ce6c1efd120b47ff256fffb8f8f50d556d3d9