20.2 sec in total
6.6 sec
13 sec
608 ms
Visit old.xcellence-it.com now to see the best up-to-date Old Xcellence It content for India and also check out these interesting facts you probably never knew about old.xcellence-it.com
Hire a leading e-Commerce, Web Design and Web Development Company from India specializing in innovative website design, web site development, e-commerce, open source development. Hire professional out...
Visit old.xcellence-it.comWe analyzed Old.xcellence-it.com page load time and found that the first response time was 6.6 sec and then it took 13.6 sec to load all DOM resources and completely render a web page. This is a poor result, as 90% of websites can load faster.
old.xcellence-it.com performance score
name
value
score
weighting
Value13.0 s
0/100
10%
Value36.7 s
0/100
25%
Value34.9 s
0/100
10%
Value5,180 ms
0/100
30%
Value0.245
51/100
15%
Value36.8 s
0/100
10%
6628 ms
74 ms
23 ms
665 ms
794 ms
Our browser made a total of 280 requests to load all elements on the main page. We found that 0% of them (1 request) were addressed to the original Old.xcellence-it.com, 78% (219 requests) were made to Xcellence-it.com and 11% (30 requests) were made to . The less responsive or slowest element that took the longest time to load (6.6 sec) belongs to the original domain Old.xcellence-it.com.
Page size can be reduced by 946.3 kB (18%)
5.2 MB
4.2 MB
In fact, the total size of Old.xcellence-it.com main page is 5.2 MB. This result falls beyond the top 1M of websites and identifies a large and not optimized web page that may take ages to load. Only a small number of websites need less resources to load. Images take 3.4 MB which makes up the majority of the site volume.
Potential reduce by 717.2 kB
HTML content can be minified and compressed by a website’s server. The most efficient way is to compress content using GZIP which reduces data amount travelling through the network between server and browser. HTML code on this page is well minified. It is highly recommended that content of this web page should be compressed using GZIP, as it can save up to 717.2 kB or 82% of the original size.
Potential reduce by 201.0 kB
Image size optimization can help to speed up a website loading time. The chart above shows the difference between the size before and after optimization. Old Xcellence It images are well optimized though.
Potential reduce by 27.6 kB
It’s better to minify JavaScript in order to improve website performance. The diagram shows the current total size of all JavaScript files against the prospective JavaScript size after its minification and compression. This website has mostly compressed JavaScripts.
Potential reduce by 432 B
CSS files minification is very important to reduce a web page rendering time. The faster CSS files can load, the earlier a page can be rendered. Old.xcellence-it.com has all CSS files already compressed.
Number of requests can be reduced by 106 (46%)
230
124
The browser has sent 230 CSS, Javascripts, AJAX and image requests in order to completely render the main page of Old Xcellence It. We recommend that multiple CSS and JavaScript files should be merged into one by each type, as it can help reduce assets requests from 71 to 1 for JavaScripts and from 25 to 1 for CSS and as a result speed up the page load time.
old.xcellence-it.com
6628 ms
js
74 ms
YyhlLmNvbmNhdGVtb2ppKTplLndwZW1vamkmJmUudHdlbW9qaSYmKGMoZS50d2Vtb2ppKSxjKGUud3BlbW9qaSkpKX0od2luZG93LGRvY3VtZW50LHdpbmRvdy5fd3BlbW9qaVNldHRpbmdzKTsK
23 ms
autoptimize_single_fc91fba09b1fd17db7e856cdd3d534bc.css
665 ms
style.min.css
794 ms
classic-themes.min.css
695 ms
autoptimize_single_37e40fb2401e9d466c5588da228b2394.css
702 ms
autoptimize_single_eeb616c7d096549b9792359164dafe24.css
705 ms
font-awesome.min.css
708 ms
autoptimize_single_d22aee6ec88006fb65619463349dd22c.css
759 ms
autoptimize_single_110d1ff81b41cb7bc44312e3191eced4.css
795 ms
autoptimize_single_4068ae4f19957debfd1c95b0e8c336bf.css
807 ms
font-awesome.min.css
810 ms
autoptimize_single_7f19be3472a3b12fd25a499bf583e42e.css
812 ms
autoptimize_single_180548c085ebd8c92bedca9e4a0d9a3e.css
856 ms
autoptimize_single_5bbc3a130a8ed970ebe837b91857a46b.css
903 ms
autoptimize_single_28f73eb1b675b082950aa0ea16bd1bd6.css
1005 ms
css
46 ms
autoptimize_single_caf2bcc067214f053488ce0906bd11a5.css
908 ms
autoptimize_single_51b2916fcb7a9f89a21b70e0c7688a59.css
906 ms
autoptimize_single_ec20d9b39c014af8bd601cf616ab8bfb.css
905 ms
autoptimize_single_9f20cdc00aa649e74fe408bd90414f2a.css
945 ms
autoptimize_single_28f73eb1b675b082950aa0ea16bd1bd6.css
1007 ms
autoptimize_single_8f12cb17faf4d1ed7aa8aacb796aa726.css
1005 ms
autoptimize_single_db2267e1450eea0f0ba9778600158265.css
1005 ms
jquery.min.js
1112 ms
jquery-migrate.min.js
1040 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgTFNfTWV0YSA9IHsidiI6IjcuNS4wIiwiZml4R1NBUCI6IjEifTsKLyogXV0+ICovCg==
8 ms
autoptimize_single_7290f615d9c37eefaff298dea30c0472.js
1270 ms
autoptimize_single_03fe6c407d2972c7e6428b05b1ef8522.js
1271 ms
autoptimize_single_9091dd5a66a320472f06396cdde44ea7.js
1108 ms
frontend-gtag.min.js
1105 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgcGJMb2NhbGl6ZU9iaiA9IHsic2Vjb25kcyI6InNlY29uZHMiLCJ0aGlzV2lsbENsb3NlIjoiVGhpcyB3aWxsIGNsb3NlIGluIiwiaWNvbnMiOnsiY2xvc2VfaWNvbiI6IjxzdmcgY2xhc3M9XCJheXNfcGJfbWF0ZXJpYWxfY2xvc2VfaWNvblwiIHhtbG5zPVwiaHR0cHM6XC9cL3d3dy53My5vcmdcLzIwMDBcL3N2Z1wiIGhlaWdodD1cIjM2cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIzNnB4XCIgZmlsbD1cIiMwMDAwMDBcIiBhbHQ9XCJQb3AtdXAgQ2xvc2VcIj48cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCJcLz48cGF0aCBkPVwiTTE5IDYuNDFMMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnpcIlwvPjxcL3N2Zz4iLCJjbG9zZV9jaXJjbGVfaWNvbiI6IjxzdmcgY2xhc3M9XCJheXNfcGJfbWF0ZXJpYWxfY2xvc2VfY2lyY2xlX2ljb25cIiB4bWxucz1cImh0dHBzOlwvXC93d3cudzMub3JnXC8yMDAwXC9zdmdcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjM2XCIgYWx0PVwiUG9wLXVwIENsb3NlXCI+PHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiXC8+PHBhdGggZD1cIk0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem01IDEzLjU5TDE1LjU5IDE3IDEyIDEzLjQxIDguNDEgMTcgNyAxNS41OSAxMC41OSAxMiA3IDguNDEgOC40MSA3IDEyIDEwLjU5IDE1LjU5IDcgMTcgOC40MSAxMy40MSAxMiAxNyAxNS41OXpcIlwvPjxcL3N2Zz4iLCJ2b2x1bWVfdXBfaWNvbiI6IjxzdmcgY2xhc3M9XCJheXNfcGJfZmFfdm9sdW1lXCIgeG1sbnM9XCJodHRwczpcL1wvd3d3LnczLm9yZ1wvMjAwMFwvc3ZnXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIzNlwiPjxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIlwvPjxwYXRoIGQ9XCJNMyA5djZoNGw1IDVWNEw3IDlIM3ptMTMuNSAzYzAtMS43Ny0xLjAyLTMuMjktMi41LTQuMDN2OC4wNWMxLjQ4LS43MyAyLjUtMi4yNSAyLjUtNC4wMnpNMTQgMy4yM3YyLjA2YzIuODkuODYgNSAzLjU0IDUgNi43MXMtMi4xMSA1Ljg1LTUgNi43MXYyLjA2YzQuMDEtLjkxIDctNC40OSA3LTguNzdzLTIuOTktNy44Ni03LTguNzd6XCJcLz48XC9zdmc+Iiwidm9sdW1lX211dGVfaWNvbiI6IjxzdmcgeG1sbnM9XCJodHRwczpcL1wvd3d3LnczLm9yZ1wvMjAwMFwvc3ZnXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiPjxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIlwvPjxwYXRoIGQ9XCJNNyA5djZoNGw1IDVWNGwtNSA1SDd6XCJcLz48XC9zdmc+In19OwovKiBdXT4gKi8K
7 ms
autoptimize_single_4bc7700508cc60b72417e6690f79e12b.js
1181 ms
autoptimize_single_ad9ddb62f81d8308fcd7b1d51817150d.js
1268 ms
autoptimize_single_975740e1b7247793c153b39891167e9e.js
1269 ms
javascript;base64,CiAgICAgICAgICAvKiogVGhpcyBzZWN0aW9uIGlzIG9ubHkgbmVlZGVkIG9uY2UgcGVyIHBhZ2UgaWYgbWFudWFsbHkgY29weWluZyAqKi8KICAgICAgICAgIGlmICh0eXBlb2YgTWF1dGljU0RLTG9hZGVkID09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgdmFyIE1hdXRpY1NES0xvYWRlZCA9IHRydWU7CiAgICAgICAgICAgICAgdmFyIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdOwogICAgICAgICAgICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICAgICAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogICAgICAgICAgICAgIHNjcmlwdC5zcmMgPSAnaHR0cHM6Ly9tYS5ub3BhY2NlbGVyYXRlLmNvbS9tZWRpYS9qcy9tYXV0aWMtZm9ybS5qcz92YTMxY2RmZGYnOwogICAgICAgICAgICAgIHNjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgTWF1dGljU0RLLm9uTG9hZCgpOwogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpOwogICAgICAgICAgICAgIHZhciBNYXV0aWNEb21haW4gPSAnaHR0cHM6Ly9tYS5ub3BhY2NlbGVyYXRlLmNvbSc7CiAgICAgICAgICAgICAgdmFyIE1hdXRpY0xhbmcgPSB7CiAgICAgICAgICAgICAgICAgICdzdWJtaXR0aW5nTWVzc2FnZSc6ICJQbGVhc2Ugd2FpdC4uLiIKICAgICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBNYXV0aWNTREsgIT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICBNYXV0aWNTREsub25Mb2FkKCk7CiAgICAgICAgICB9CiAgICAgIA==
6 ms
javascript;base64,CglpZihqUXVlcnkoJ2JvZHknKS5oYXNDbGFzcygnbGF6eS1lbmFibGVkJykgJiYgalF1ZXJ5KHdpbmRvdykud2lkdGgoKSA8PSA4MDApIHsKCQlqUXVlcnkoJ2JvZHknKS5yZW1vdmVDbGFzcygnbGF6eS1lbmFibGVkJykKCX0K
5 ms
javascript;base64,alF1ZXJ5KGZ1bmN0aW9uKCkgeyBfaW5pdExheWVyU2xpZGVyKCAnI2xheWVyc2xpZGVyXzFfdWc3aHBsZDhvcGx0Jywge3NsaWRlclZlcnNpb246ICc3LjUuMCcsIHR5cGU6ICdmdWxsd2lkdGgnLCByZXNwb25zaXZlVW5kZXI6IDEyODAsIHNsaWRlQkdTaXplOiAnYXV0bycsIHN0YXJ0SW5WaWV3cG9ydDogZmFsc2UsIHBhdXNlT25Ib3ZlcjogJ2VuYWJsZWQnLCBza2luOiAndjUnLCBnbG9iYWxCR0NvbG9yOiAnI2YwZjRmNycsIGdsb2JhbEJHU2l6ZTogJ2NvdmVyJywgaG92ZXJQcmV2TmV4dDogZmFsc2UsIG5hdlN0YXJ0U3RvcDogZmFsc2UsIHNob3dDaXJjbGVUaW1lcjogZmFsc2UsIHRodW1ibmFpbE5hdmlnYXRpb246ICdkaXNhYmxlZCcsIHVzZVNyY3NldDogdHJ1ZSwgc2tpbnNQYXRoOiAnaHR0cHM6Ly93d3cueGNlbGxlbmNlLWl0LmNvbS93cC1jb250ZW50L3BsdWdpbnMvTGF5ZXJTbGlkZXIvYXNzZXRzL3N0YXRpYy9sYXllcnNsaWRlci9za2lucy8nfSk7IH0pOw==
5 ms
javascript;base64,DQp2YXIgVGF3a19BUEk9VGF3a19BUEl8fHt9LCBUYXdrX0xvYWRTdGFydD1uZXcgRGF0ZSgpOw0KKGZ1bmN0aW9uKCl7DQp2YXIgczE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksczA9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdOw0KczEuYXN5bmM9dHJ1ZTsNCnMxLnNyYz0naHR0cHM6Ly9lbWJlZC50YXdrLnRvLzU5ZDFkOWIyYzI4ZWNhNzVlNDYyMzg0Ni9kZWZhdWx0JzsNCnMxLmNoYXJzZXQ9J1VURi04JzsNCnMxLnNldEF0dHJpYnV0ZSgnY3Jvc3NvcmlnaW4nLCcqJyk7DQpzMC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzMSxzMCk7DQp9KSgpOw0K
1 ms
javascript;base64,aWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8xJykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0gZWxzZSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8xJykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0=
1 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiggJCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2Ugc3RyaWN0JzsKICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNob3dfb25seV9vbmNlID0gJ29mZic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNNb2JpbGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbG9zZVBvcHVwT3ZlcmxheSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNQYWdlU2Nyb2xsRGlzYWJsZWQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlUG9wdXBPdmVybGF5ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BhZ2VTY3JvbGxEaXNhYmxlZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcucGxheS1idG4nKS5vbignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19tdXNpY19zb3VuZCcpLmNzcyh7J2Rpc3BsYXknOidibG9jayd9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzaG93X29ubHlfb25jZSA9PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmFqYXgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3d3dy54Y2VsbGVuY2UtaXQuY29tL3dwLWFkbWluL2FkbWluLWFqYXgucGhwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAncG9zdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F5c19wYl9zZXRfY29va2llX29ubHlfb25jZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQ0VPIFZpZGVvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGFBdHRyID0gJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8xJykuYXR0cignZGF0YS1heXMtZmxhZycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfZmxhZyAmJiBkYXRhQXR0ciA9PSAndHJ1ZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfMScpLmNzcygnZGlzcGxheScsJ2Jsb2NrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfMScpLmNzcygncG9pbnRlci1ldmVudHMnLCAnYXV0bycpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA3NjgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl8xIHNwYW4nKS5odG1sKCQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfMSBzcGFuJykuYXR0cignZGF0YS1heXMtbW9iaWxlLXNlY29uZHMnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfMSBzcGFuJykuaHRtbCgkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzEgc3BhbicpLmF0dHIoJ2RhdGEtYXlzLXNlY29uZHMnKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyX3BiXzEgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMScpLnJlbW92ZUNsYXNzKCQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfbW9kYWxfYW5pbWF0ZV9vdXRfMScpLnZhbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzEnKS5hZGRDbGFzcygkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX21vZGFsX2FuaW1hdGVfaW5fMScpLnZhbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzEnKS5jc3MoJ2Rpc3BsYXknLCAnYmxvY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA3NjggJiYgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfMScpLmF0dHIoJ2RhdGEtbW9iaWxlLW92ZXJsYXknKSA9PSAndHJ1ZScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfMScpLmNzcyh7J29wYWNpdHknOiAnMC41JywgJ2Rpc3BsYXknOiAnYmxvY2snfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzEnKS5jc3MoeydvcGFjaXR5JzogJzAuNTAwMDAwJywgJ2Rpc3BsYXknOiAnYmxvY2snfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2hlY2tfMScpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNoZWNrXzEnKS5hdHRyKCdjaGVja2VkJywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1tb2RhbC1jaGVja2JveF8xJykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCA9ICQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkXzEnKS52YWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zZWNvbmRzID0gKGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQgLyAxMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc291bmRfc3JjID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9zb3VuZF8xJykuYXR0cignc3JjJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsb3NlX3NvdW5kX3NyYyA9ICQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfY2xvc2Vfc291bmRfMScpLmF0dHIoJ3NyYycpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkID0gcGFyc2VGbG9hdChheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKSAtIDUwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnb2ZmJyA9PT0gJ29uJyAmJiB0eXBlb2Ygc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNheXNfcGJfc291bmRfMScpLmdldCgwKS5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfcGF1c2Vfc291bmRfMScpLm9uKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfMScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Nsb3NlIHNvdW5kIHN0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfcGF1c2Vfc291bmRfMScpLm9uKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzEnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfMSAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzEnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfMScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8xJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8xJykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jbG9zZSBzb3VuZCBlbmQKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWVfcGJfc3RyXzEgPSAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzEgc3BhbicpLmF0dHIoJ2RhdGEtYXlzLXNlY29uZHMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA3NjgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1vYmlsZVRpbWVyID0gKyQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfMSBzcGFuJykuYXR0cignZGF0YS1heXMtbW9iaWxlLXNlY29uZHMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl8xIHNwYW4nKS5odG1sKG1vYmlsZVRpbWVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV9wYl9zdHJfMSA9IG1vYmlsZVRpbWVyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGltZV9wYl8xID0gcGFyc2VJbnQodGltZV9wYl9zdHJfMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGltZV9wYl8xICE9PSB1bmRlZmluZWQpeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGltZV9wYl8xICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWVyX3BiXzEgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1RpbWVfcGJfMSA9IHRpbWVfcGJfMS0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF5c19wYl9lZmZlY3RPdXRfMSA9ICQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfbW9kYWxfYW5pbWF0ZV9vdXRfMScpLnZhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl8xIHNwYW4nKS50ZXh0KG5ld1RpbWVfcGJfMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzEnKS5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmltYXRpb24tZHVyYXRpb24nOiBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NlY29uZHMgKyAncycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5ld1RpbWVfcGJfMSA8PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzEnKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMScpLmF0dHIoJ2NsYXNzJywgJ2F5cy1wYi1tb2RhbCBheXMtcGItbW9kYWxfMSAgJyskKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX21vZGFsX2FuaW1hdGVfb3V0XzEnKS52YWwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF8xICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMScpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzEnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnb2ZmJyA9PT0gJ29uJyAmJiB0eXBlb2Ygc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfMScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNheXNfcGJfY2xvc2Vfc291bmRfMScpLmdldCgwKS5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzEgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMScpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfMScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8xJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzEnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfMScpLm9uZSgnY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzEnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzEnKS5hdHRyKCdjbGFzcycsICdheXMtcGItbW9kYWwgYXlzLXBiLW1vZGFsXzEgICcrYXlzX3BiX2VmZmVjdE91dF8xKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnaWZyYW1lJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gL2h0dHBzOlwvXC93d3cueW91dHViZS5jb20vOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3JjID0gJCh0aGlzKS5hdHRyKCdzcmMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdzcmMnLCAkKHRoaXMpLmF0dHIoJ3NyYycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgndmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2YgJCh0aGlzKS5nZXQoMCkgIT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhICQodGhpcykuZ2V0KDApLnBhdXNlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmdldCgwKS5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5cy1wYi1tb2RhbHMnKS5maW5kKCdhdWRpby53cC1hdWRpby1zaG9ydGNvZGUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZiAkKHRoaXMpLmdldCgwKSAhPSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEgJCh0aGlzKS5nZXQoMCkucGF1c2VkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZ2V0KDApLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF8xICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzEnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8xJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfMScpLmNzcyh7J29wYWNpdHknOiAnMCcsICdkaXNwbGF5JzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8xKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX3BiX2ZsYWcgPSAgdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdrZXlkb3duJywgZnVuY3Rpb24oZXZlbnQpIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIGF5c19wYl9mbGFnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT0gMjcpIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzEnKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX3BiX2ZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnb2ZmJyA9PT0gJ29uJyAmJiB0eXBlb2Ygc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9zb3VuZF8xJykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgJiYgdHlwZW9mIGNsb3NlX3NvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ29mZicgPT09ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAhPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNheXNfcGJfY2xvc2Vfc291bmRfMScpLmdldCgwKS5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfMSAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMScpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfMScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8xJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfMScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJ2NsaWNrU2VsZWN0b3InICE9ICdib3RoJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjbG9zZVBvcHVwT3ZlcmxheSAmJiAnT24nID09ICdPbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzEnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBiX3BhcmVudF9kaXYgPSAkKHRoaXMpLmZpbmQoJy5heXMtcGItbW9kYWxzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9kaXYgPSAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnLmF5cy1wYi1tb2RhbF8xJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGJfcGFyZW50X2Rpdi5pcyhwYl9kaXYpICYmIHBiX3BhcmVudF9kaXYuaGFzKHBiX2RpdikubGVuZ3RoID09PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfMScpLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfMScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzEnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzEgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzEnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzEnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMScpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzEnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2xvc2VQb3B1cE92ZXJsYXkgJiYgJ09uJyA9PSAnT24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc18xJykub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfcGFyZW50X2RpdiA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9kaXYgPSAkKHRoaXMpLmZpbmQoJy5heXMtcGItbW9kYWxfMScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBiX2Rpdi5pcyhlLnRhcmdldCkgJiYgcGJfZGl2LmhhcyhlLnRhcmdldCkubGVuZ3RoID09PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfMScpLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfMScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzEnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzEgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzEnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzEnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8xKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMScpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzEnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl8xJykuY3NzKCdkaXNwbGF5Jywnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8xJykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmltYXRpb24tZHVyYXRpb24nOiBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NlY29uZHMgKyAncycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfMScpLm9uZSgnY2xpY2snLCBmdW5jdGlvbigpeyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXlzX3BiX2VmZmVjdE91dF8xID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX291dF8xJykudmFsKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzEnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMScpLmF0dHIoJ2NsYXNzJywgJ2F5cy1wYi1tb2RhbCBheXMtcGItbW9kYWxfMSAgJytheXNfcGJfZWZmZWN0T3V0XzEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ2lmcmFtZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gL2h0dHBzOlwvXC93d3cueW91dHViZS5jb20vOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzcmMgPSAkKHRoaXMpLmF0dHIoJ3NyYycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignc3JjJywgJCh0aGlzKS5hdHRyKCdzcmMnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5cy1wYi1tb2RhbHMnKS5maW5kKCd2aWRlby53cC12aWRlby1zaG9ydGNvZGUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mICQodGhpcykuZ2V0KDApICE9ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhICQodGhpcykuZ2V0KDApLnBhdXNlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZ2V0KDApLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnYXVkaW8ud3AtYXVkaW8tc2hvcnRjb2RlJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZiAkKHRoaXMpLmdldCgwKSAhPSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISAkKHRoaXMpLmdldCgwKS5wYXVzZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmdldCgwKS5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF8xICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzEnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc18xJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzEnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzEnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfMScpLmNzcyh7J29wYWNpdHknOiAnMCcsICdkaXNwbGF5JzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzUGFnZVNjcm9sbERpc2FibGVkKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnYm9keScpLmFkZENsYXNzKCdwYl9kaXNhYmxlX3Njcm9sbF8xJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJ2h0bWwnKS5hZGRDbGFzcygncGJfZGlzYWJsZV9zY3JvbGxfMScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KGRvY3VtZW50KS5vbignY2xpY2snLCAnLmF5cy1wYi1tb2RhbC1jbG9zZV8xJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCdib2R5JykucmVtb3ZlQ2xhc3MoJ3BiX2Rpc2FibGVfc2Nyb2xsXzEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJ2h0bWwnKS5yZW1vdmVDbGFzcygncGJfZGlzYWJsZV9zY3JvbGxfMScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnT24nICE9ICdPbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV8xJykuY3NzKHsnb3BhY2l0eSc6ICcwJywgJ2Rpc3BsYXknOiAnbm9uZSAhaW1wb3J0YW50JywgJ3BvaW50ZXItZXZlbnRzJzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMScpLmNzcygncG9pbnRlci1ldmVudHMnLCAnYXV0bycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc18xJykuY3NzKCdwb2ludGVyLWV2ZW50cycsJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCdmYWxzZScgPT0gJ3RydWUnICYmIHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoMCAhPSAwICYmICdvZmYnICE9ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV8xJykuY3NzKHsnZGlzcGxheSc6ICdub25lJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzEnKS5jc3MoeydkaXNwbGF5JzogJ2Jsb2NrJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigwICE9IDAgJiYgJ29mZicgIT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzEnKS5jc3MoeydkaXNwbGF5JzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfMScpLmNzcyh7J2Rpc3BsYXknOiAnYmxvY2snfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZigwID09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNsb3NlUG9wdXBPdmVybGF5ICYmICdPbicgPT0gJ09uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzEnKS5vbignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfcGFyZW50ID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9kaXYgPSAkKHRoaXMpLmZpbmQoJy5heXMtcGItbW9kYWxfMScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYl9kaXYuaXMoZS50YXJnZXQpICYmIHBiX2Rpdi5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV8xJykuY2xpY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBheXNfcGJfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2tleWRvd24nLCBmdW5jdGlvbihldmVudCkgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIGF5c19wYl9mbGFnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09IDI3KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV8xJykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfcGJfZmxhZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ09uJyAhPSAnT24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV8xJykuY3NzKHsnb3BhY2l0eSc6ICcwJywgJ2Rpc3BsYXknOiAnbm9uZSAhaW1wb3J0YW50JywgJ3BvaW50ZXItZXZlbnRzJzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8xJykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdhdXRvJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfMScpLmNzcygncG9pbnRlci1ldmVudHMnLCdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJ2NsaWNrU2VsZWN0b3InICE9ICdib3RoJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgdmlkZW8nKS5oYXNDbGFzcygnd3AtdmlkZW8tc2hvcnRjb2RlJykpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9XaWR0aCAgPSAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyB2aWRlby53cC12aWRlby1zaG9ydGNvZGUnKS5hdHRyKCd3aWR0aCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9IZWlnaHQgPSAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyB2aWRlby53cC12aWRlby1zaG9ydGNvZGUnKS5hdHRyKCdoZWlnaHQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgLndwLXZpZGVvJykucmVtb3ZlQXR0cignc3R5bGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIC5tZWpzLWNvbnRhaW5lcicpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyB2aWRlby53cC12aWRlby1zaG9ydGNvZGUnKS5yZW1vdmVBdHRyKCdzdHlsZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIC53cC12aWRlbycpLmNzcyh7J3dpZHRoJzogJzEwMCUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyAubWVqcy1jb250YWluZXInKS5jc3Moeyd3aWR0aCc6ICcxMDAlJywnaGVpZ2h0JzogdmlkZW9IZWlnaHQgKyAncHgnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyB2aWRlby53cC12aWRlby1zaG9ydGNvZGUnKS5jc3Moeyd3aWR0aCc6ICcxMDAlJywnaGVpZ2h0JzogdmlkZW9IZWlnaHQgKyAncHgnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sMTAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIGlmcmFtZScpLmF0dHIoJ3N0eWxlJykgIT0gJycpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyBpZnJhbWUnKS5yZW1vdmVBdHRyKCdzdHlsZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDUwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJ29mZicgPT0gJ29uJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlbyA9ICQoZG9jdW1lbnQpLmZpbmQoJ3ZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmlkZW8ubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9baV0uYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLm5leHQoKS52YWwoKSA9PT0gJ29uJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5c192aWRlb193aW5kb3cnKS5maW5kKCcuY2xvc2UtaW1hZ2UtYnRuJykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9KSggalF1ZXJ5ICk7CiAgICAgICAgICAgICAgICA=
8 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mIGF5c1BvcHVwT3B0aW9ucyA9PT0gInVuZGVmaW5lZCIpewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzUG9wdXBPcHRpb25zID0gW107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGF5c1BvcHVwT3B0aW9uc1siMSJdICA9ICJleUp3YjNCMWNHSnZlQ0k2ZXlKcFpDSTZJakVpTENKMGFYUnNaU0k2SWtORlR5QldhV1JsYnlJc0luQnZjSFZ3WDI1aGJXVWlPaUlpTENKa1pYTmpjbWx3ZEdsdmJpSTZJaUlzSW1OaGRHVm5iM0o1WDJsa0lqb2lNU0lzSW1GMWRHOWpiRzl6WlNJNklqQWlMQ0pqYjI5cmFXVWlPaUl3SWl3aWQybGtkR2dpT2pjd01Dd2lhR1ZwWjJoMElqbzBNREFzSW1KblkyOXNiM0lpT2lJalptWm1abVptSWl3aWRHVjRkR052Ykc5eUlqb2lJekF3TURBd01DSXNJbUp2Y21SbGNuTnBlbVVpT2lJeElpd2lZbTl5WkdWeVkyOXNiM0lpT2lJalptWm1abVptSWl3aVltOXlaR1Z5WDNKaFpHbDFjeUk2SWpjaUxDSnphRzl5ZEdOdlpHVWlPaUlpTENKMWMyVnljMTl5YjJ4bElqb2lXMTBpTENKamRYTjBiMjFmWTJ4aGMzTWlPaUlpTENKamRYTjBiMjFmWTNOeklqb2lJaXdpWTNWemRHOXRYMmgwYld3aU9pSThhV1p5WVcxbElIZHBaSFJvUFZ3aU5UWXdYQ0lnYUdWcFoyaDBQVndpTXpFMVhDSWdjM0pqUFZ3aWFIUjBjSE02WEM5Y0wzZDNkeTU1YjNWMGRXSmxMbU52YlZ3dlpXMWlaV1JjTDBwNFVUY3hUV3R6V1VodlAzTnBQVGhSZGtWeU1HdHFOMGxIT1RRMFkwZGNJaUIwYVhSc1pUMWNJbGx2ZFZSMVltVWdkbWxrWlc4Z2NHeGhlV1Z5WENJZ1puSmhiV1ZpYjNKa1pYSTlYQ0l3WENJZ1lXeHNiM2M5WENKaFkyTmxiR1Z5YjIxbGRHVnlPeUJoZFhSdmNHeGhlVHNnWTJ4cGNHSnZZWEprTFhkeWFYUmxPeUJsYm1OeWVYQjBaV1F0YldWa2FXRTdJR2Q1Y205elkyOXdaVHNnY0dsamRIVnlaUzFwYmkxd2FXTjBkWEpsT3lCM1pXSXRjMmhoY21WY0lpQmhiR3h2ZDJaMWJHeHpZM0psWlc0K1BGd3ZhV1p5WVcxbFBpSXNJbTl1YjJabWMzZHBkR05vSWpvaVQyNGlMQ0p6YUc5M1gyOXViSGxmWm05eVgyRjFkR2h2Y2lJNkltOW1aaUlzSW5Ob2IzZGZZV3hzSWpvaVlXeHNJaXdpWkdWc1lYa2lPaUl3SWl3aWMyTnliMnhzWDNSdmNDSTZJakFpTENKaGJtbHRZWFJsWDJsdUlqb2labUZrWlVsdUlpd2lZVzVwYldGMFpWOXZkWFFpT2lKbVlXUmxUM1YwVlhCQ2FXY2lMQ0poWTNScGIyNWZZblYwZEc5dUlqb2lMbkJzWVhrdFluUnVJaXdpZG1sbGQxOXdiR0ZqWlNJNklpSXNJbUZqZEdsdmJsOWlkWFIwYjI1ZmRIbHdaU0k2SW1Oc2FXTnJVMlZzWldOMGIzSWlMQ0p0YjJSaGJGOWpiMjUwWlc1MElqb2lZM1Z6ZEc5dFgyaDBiV3dpTENKMmFXVjNYM1I1Y0dVaU9pSmtaV1poZFd4MElpd2liMjV2Wm1admRtVnliR0Y1SWpvaVQyNGlMQ0p2ZG1WeWJHRjVYMjl3WVdOcGRIa2lPaUl3TGpVd01EQXdNQ0lzSW5Ob2IzZGZjRzl3ZFhCZmRHbDBiR1VpT2lKUFptWWlMQ0p6YUc5M1gzQnZjSFZ3WDJSbGMyTWlPaUpQWm1ZaUxDSmpiRzl6WlY5aWRYUjBiMjRpT2lKdlptWWlMQ0pvWldGa1pYSmZZbWRqYjJ4dmNpSTZJaU5tWm1abVptWWlMQ0ppWjE5cGJXRm5aU0k2SWlJc0lteHZaMTkxYzJWeUlqb2lUMjRpTENKbmRXVnpkQ0k2SWs5dUlpd2lZV04wYVhabFgyUmhkR1ZmWTJobFkyc2lPaUp2Wm1ZaUxDSmhZM1JwZG1WSmJuUmxjblpoYkNJNklqSXdNak10TVRJdE1EVWdNVE02TkRJNk1UTWlMQ0prWldGamRHbDJaVWx1ZEdWeWRtRnNJam9pTWpBeU15MHhNaTB3TlNBeE16bzBNam94TXlJc0luQmlYM0J2YzJsMGFXOXVJam9pWTJWdWRHVnlMV05sYm5SbGNpSXNJbkJpWDIxaGNtZHBiaUk2SWpBaUxDSnZjSFJwYjI1eklqb2llMXdpWlc1aFlteGxYMkpoWTJ0bmNtOTFibVJmWjNKaFpHbGxiblJjSWpwY0ltOW1abHdpTEZ3aVltRmphMmR5YjNWdVpGOW5jbUZrYVdWdWRGOWpiMnh2Y2w4eFhDSTZYQ0lqTURBd1hDSXNYQ0ppWVdOclozSnZkVzVrWDJkeVlXUnBaVzUwWDJOdmJHOXlYekpjSWpwY0lpTm1abVpjSWl4Y0luQmlYMmR5WVdScFpXNTBYMlJwY21WamRHbHZibHdpT2x3aWRtVnlkR2xqWVd4Y0lpeGNJbVY0WTJWd2RGOXdiM04wWDNSNWNHVnpYQ0k2VzEwc1hDSmxlR05sY0hSZmNHOXpkSE5jSWpwYlhTeGNJbUZzYkY5d2IzTjBjMXdpT2x3aVhDSXNYQ0pqYkc5elpWOWlkWFIwYjI1ZlpHVnNZWGxjSWpvd0xGd2lZMnh2YzJWZlluVjBkRzl1WDJSbGJHRjVYMlp2Y2w5dGIySnBiR1ZjSWpvd0xGd2laVzVoWW14bFgyTnNiM05sWDJKMWRIUnZibDlrWld4aGVWOW1iM0pmYlc5aWFXeGxYQ0k2WENKdlptWmNJaXhjSW1WdVlXSnNaVjl3WWw5emIzVnVaRndpT2x3aWIyWm1YQ0lzWENKdmRtVnliR0Y1WDJOdmJHOXlYQ0k2WENJak1EQXdYQ0lzWENKaGJtbHRZWFJwYjI1ZmMzQmxaV1JjSWpveExGd2lZMnh2YzJWZllXNXBiV0YwYVc5dVgzTndaV1ZrWENJNk1TeGNJbkJpWDIxdlltbHNaVndpT2x3aWIyWm1YQ0lzWENKamJHOXpaVjlpZFhSMGIyNWZkR1Y0ZEZ3aU9sd2lYRngxTWpjeE5Wd2lMRndpWlc1aFlteGxYMk5zYjNObFgySjFkSFJ2Ymw5MFpYaDBYMjF2WW1sc1pWd2lPbHdpYjI1Y0lpeGNJbU5zYjNObFgySjFkSFJ2Ymw5MFpYaDBYMjF2WW1sc1pWd2lPbHdpWEZ4MU1qY3hOVndpTEZ3aVkyeHZjMlZmWW5WMGRHOXVYMmh2ZG1WeVgzUmxlSFJjSWpwY0lsd2lMRndpYlc5aWFXeGxYM2RwWkhSb1hDSTZYQ0pjSWl4Y0ltMXZZbWxzWlY5dFlYaGZkMmxrZEdoY0lqcGNJbHdpTEZ3aWJXOWlhV3hsWDJobGFXZG9kRndpT2x3aVhDSXNYQ0pqYkc5elpWOWlkWFIwYjI1ZmNHOXphWFJwYjI1Y0lqcGNJbkpwWjJoMExYUnZjRndpTEZ3aVpXNWhZbXhsWDJOc2IzTmxYMkoxZEhSdmJsOXdiM05wZEdsdmJsOXRiMkpwYkdWY0lqcGNJbTltWmx3aUxGd2lZMnh2YzJWZlluVjBkRzl1WDNCdmMybDBhVzl1WDIxdlltbHNaVndpT2x3aWNtbG5hSFF0ZEc5d1hDSXNYQ0p6YUc5M1gyOXViSGxmYjI1alpWd2lPbHdpYjJabVhDSXNYQ0p6YUc5M1gyOXVYMmh2YldWZmNHRm5aVndpT2x3aWIyWm1YQ0lzWENKamJHOXpaVjl3YjNCMWNGOWxjMk5jSWpwY0ltOXVYQ0lzWENKd2IzQjFjRjkzYVdSMGFGOWllVjl3WlhKalpXNTBZV2RsWDNCNFhDSTZYQ0p3YVhobGJITmNJaXhjSW5CdmNIVndYMk52Ym5SbGJuUmZjR0ZrWkdsdVoxd2lPakFzWENKd2IzQjFjRjl3WVdSa2FXNW5YMko1WDNCbGNtTmxiblJoWjJWZmNIaGNJanBjSW5CcGVHVnNjMXdpTEZ3aWNHSmZabTl1ZEY5bVlXMXBiSGxjSWpwY0lrbHVhR1Z5YVhSY0lpeGNJbU5zYjNObFgzQnZjSFZ3WDI5MlpYSnNZWGxjSWpwY0ltOW1abHdpTEZ3aVkyeHZjMlZmY0c5d2RYQmZiM1psY214aGVWOXRiMkpwYkdWY0lqcGNJbTltWmx3aUxGd2laVzVoWW14bFgzQmlYMloxYkd4elkzSmxaVzVjSWpwY0ltOW1abHdpTEZ3aVpXNWhZbXhsWDJocFpHVmZkR2x0WlhKY0lqcGNJbTltWmx3aUxGd2laVzVoWW14bFgyRjFkRzlqYkc5elpWOXZibDlqYjIxd2JHVjBhVzl1WENJNlhDSnZabVpjSWl4Y0ltVnVZV0pzWlY5emIyTnBZV3hmYkdsdWEzTmNJanBjSW05bVpsd2lMRndpYzI5amFXRnNYMnhwYm10elhDSTZlMXdpYkdsdWEyVmthVzVmYkdsdWExd2lPbHdpWENJc1hDSm1ZV05sWW05dmExOXNhVzVyWENJNlhDSmNJaXhjSW5SM2FYUjBaWEpmYkdsdWExd2lPbHdpWENJc1hDSjJhMjl1ZEdGcmRHVmZiR2x1YTF3aU9sd2lYQ0lzWENKNWIzVjBkV0psWDJ4cGJtdGNJanBjSWx3aUxGd2lhVzV6ZEdGbmNtRnRYMnhwYm10Y0lqcGNJbHdpTEZ3aVltVm9ZVzVqWlY5c2FXNXJYQ0k2WENKY0luMHNYQ0p6YjJOcFlXeGZZblYwZEc5dWMxOW9aV0ZrYVc1blhDSTZYQ0pjSWl4Y0ltTnNiM05sWDJKMWRIUnZibDl6YVhwbFhDSTZNU3hjSW1Oc2IzTmxYMkoxZEhSdmJsOXBiV0ZuWlZ3aU9sd2lYQ0lzWENKaWIzSmtaWEpmYzNSNWJHVmNJanBjSWtSdmRIUmxaRndpTEZ3aVlYbHpYM0JpWDJodmRtVnlYM05vYjNkZlkyeHZjMlZmWW5SdVhDSTZYQ0p2Wm1aY0lpeGNJbVJwYzJGaWJHVmZjMk55YjJ4c1hDSTZYQ0p2Wm1aY0lpeGNJbVJwYzJGaWJHVmZjMk55YjJ4c1gyMXZZbWxzWlZ3aU9sd2liMlptWENJc1hDSmxibUZpYkdWZmIzQmxibDlrWld4aGVWOXRiMkpwYkdWY0lqcGNJbTltWmx3aUxGd2liM0JsYmw5a1pXeGhlVjl0YjJKcGJHVmNJanBjSWpCY0lpeGNJbVZ1WVdKc1pWOXpZM0p2Ykd4ZmRHOXdYMjF2WW1sc1pWd2lPbHdpYjJabVhDSXNYQ0p6WTNKdmJHeGZkRzl3WDIxdlltbHNaVndpT2x3aU1Gd2lMRndpWlc1aFlteGxYM0JpWDNCdmMybDBhVzl1WDIxdlltbHNaVndpT2x3aWIyWm1YQ0lzWENKd1lsOXdiM05wZEdsdmJsOXRiMkpwYkdWY0lqcGNJbU5sYm5SbGNpMWpaVzUwWlhKY0lpeGNJbkJpWDJKblgybHRZV2RsWDNCdmMybDBhVzl1WENJNlhDSmpaVzUwWlhJdFkyVnVkR1Z5WENJc1hDSndZbDlpWjE5cGJXRm5aVjl6YVhwcGJtZGNJanBjSW1OdmRtVnlYQ0lzWENKMmFXUmxiMTkwYUdWdFpWOTFjbXhjSWpwY0lsd2lMRndpY0dKZmJXbHVYMmhsYVdkb2RGd2lPbHdpWENJc1hDSndZbDltYjI1MFgzTnBlbVZjSWpveE15eGNJbkJpWDJadmJuUmZjMmw2WlY5bWIzSmZiVzlpYVd4bFhDSTZNVE1zWENKd1lsOTBhWFJzWlY5MFpYaDBYM05vWVdSdmQxd2lPbHdpY21kaVlTZ3lOVFVzTWpVMUxESTFOU3d3S1Z3aUxGd2laVzVoWW14bFgzQmlYM1JwZEd4bFgzUmxlSFJmYzJoaFpHOTNYQ0k2WENKdlptWmNJaXhjSW5CaVgzUnBkR3hsWDNSbGVIUmZjMmhoWkc5M1gzaGZiMlptYzJWMFhDSTZNaXhjSW5CaVgzUnBkR3hsWDNSbGVIUmZjMmhoWkc5M1gzbGZiMlptYzJWMFhDSTZNaXhjSW5CaVgzUnBkR3hsWDNSbGVIUmZjMmhoWkc5M1gzcGZiMlptYzJWMFhDSTZNQ3hjSW1OeVpXRjBaVjlrWVhSbFhDSTZYQ0l5TURJekxURXlMVEF4SURFeE9qUXpPalF5WENJc1hDSmpjbVZoZEdWZllYVjBhRzl5WENJNk55eGNJbUYxZEdodmNsd2lPbHdpZTF4Y1hDSnBaRnhjWENJNlhGeGNJamRjWEZ3aUxGeGNYQ0p1WVcxbFhGeGNJanBjWEZ3aVFYTm9kMmx1SUZCaGRHbHNYRnhjSW4xY0lpeGNJbVZ1WVdKc1pWOWthWE50YVhOelhDSTZYQ0p2Wm1aY0lpeGNJbVZ1WVdKc1pWOWthWE50YVhOelgzUmxlSFJjSWpwY0lrUnBjMjFwYzNNZ1lXUmNJaXhjSW1WdVlXSnNaVjlpYjNoZmMyaGhaRzkzWENJNlhDSnZabVpjSWl4Y0ltSnZlRjl6YUdGa2IzZGZZMjlzYjNKY0lqcGNJaU13TURCY0lpeGNJbkJpWDJKdmVGOXphR0ZrYjNkZmVGOXZabVp6WlhSY0lqb3dMRndpY0dKZlltOTRYM05vWVdSdmQxOTVYMjltWm5ObGRGd2lPakFzWENKd1lsOWliM2hmYzJoaFpHOTNYM3BmYjJabWMyVjBYQ0k2TVRVc1hDSmthWE5oWW14bFgzTmpjbTlzYkY5dmJsOXdiM0IxY0Z3aU9sd2liMlptWENJc1hDSmthWE5oWW14bFgzTmpjbTlzYkY5dmJsOXdiM0IxY0Y5dGIySnBiR1ZjSWpwY0ltOW1abHdpTEZ3aWMyaHZkMTl6WTNKdmJHeGlZWEpjSWpwY0ltOW1abHdpTEZ3aWFHbGtaVjl2Ymw5d1kxd2lPbHdpYjJabVhDSXNYQ0pvYVdSbFgyOXVYM1JoWW14bGRITmNJanBjSW05bVpsd2lMRndpY0dKZlltZGZhVzFoWjJWZlpHbHlaV04wYVc5dVgyOXVYMjF2WW1sc1pWd2lPbHdpYjI1Y0lpeGNJbU5zYjNObFgySjFkSFJ2Ymw5amIyeHZjbHdpT2x3aUl6QXdNREF3TUZ3aUxGd2lZMnh2YzJWZlluVjBkRzl1WDJodmRtVnlYMk52Ykc5eVhDSTZYQ0lqTURBd01EQXdYQ0lzWENKaWJIVnlaV1JmYjNabGNteGhlVndpT2x3aWIyWm1YQ0lzWENKaWJIVnlaV1JmYjNabGNteGhlVjl0YjJKcGJHVmNJanBjSW05bVpsd2lMRndpY0dKZllYVjBiMk5zYjNObFgyMXZZbWxzWlZ3aU9sd2lNakJjSWl4Y0ltVnVZV0pzWlY5aGRYUnZZMnh2YzJWZlpHVnNZWGxmZEdWNGRGOXRiMkpwYkdWY0lqcGNJbTltWmx3aUxGd2laVzVoWW14bFgyOTJaWEpzWVhsZmRHVjRkRjl0YjJKcGJHVmNJanBjSW05bVpsd2lMRndpYjNabGNteGhlVjl0YjJKcGJHVmZiM0JoWTJsMGVWd2lPbHdpTUM0MVhDSjlJbjE5IjsKICAgICAgICAgICAgICAgIA==
7 ms
javascript;base64,aWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8yJykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0gZWxzZSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8yJykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0=
7 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiggJCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2Ugc3RyaWN0JzsKICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNob3dfb25seV9vbmNlID0gJ29mZic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNNb2JpbGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbG9zZVBvcHVwT3ZlcmxheSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNQYWdlU2Nyb2xsRGlzYWJsZWQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlUG9wdXBPdmVybGF5ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BhZ2VTY3JvbGxEaXNhYmxlZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcudGVjaC1jdGEtYnV0dG9uIGJ1dHRvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX211c2ljX3NvdW5kJykuY3NzKHsnZGlzcGxheSc6J2Jsb2NrJ30pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNob3dfb25seV9vbmNlID09ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vd3d3LnhjZWxsZW5jZS1pdC5jb20vd3AtYWRtaW4vYWRtaW4tYWpheC5waHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdwb3N0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnYXlzX3BiX3NldF9jb29raWVfb25seV9vbmNlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdTY2hlZHVsZSBhIGRldmVsb3BlciBpbnRlcnZpZXcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YUF0dHIgPSAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzInKS5hdHRyKCdkYXRhLWF5cy1mbGFnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19mbGFnICYmIGRhdGFBdHRyID09ICd0cnVlJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc18yJykuY3NzKCdkaXNwbGF5JywnYmxvY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc18yJykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdhdXRvJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzIgc3BhbicpLmh0bWwoJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl8yIHNwYW4nKS5hdHRyKCdkYXRhLWF5cy1tb2JpbGUtc2Vjb25kcycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl8yIHNwYW4nKS5odG1sKCQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfMiBzcGFuJykuYXR0cignZGF0YS1heXMtc2Vjb25kcycpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJfcGJfMiA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8yJykucmVtb3ZlQ2xhc3MoJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX291dF8yJykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMicpLmFkZENsYXNzKCQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfbW9kYWxfYW5pbWF0ZV9pbl8yJykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMicpLmNzcygnZGlzcGxheScsICdibG9jaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCAmJiAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV8yJykuYXR0cignZGF0YS1tb2JpbGUtb3ZlcmxheScpID09ICd0cnVlJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV8yJykuY3NzKHsnb3BhY2l0eSc6ICcwLjUnLCAnZGlzcGxheSc6ICdibG9jayd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfMicpLmNzcyh7J29wYWNpdHknOiAnMC41MDAwMDAnLCAnZGlzcGxheSc6ICdibG9jayd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jaGVja18yJykucHJvcCgnY2hlY2tlZCcsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2hlY2tfMicpLmF0dHIoJ2NoZWNrZWQnLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLW1vZGFsLWNoZWNrYm94XzInKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWRfMicpLnZhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NlY29uZHMgPSAoYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCAvIDEwMDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VuZF9zcmMgPSAkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX3NvdW5kXzInKS5hdHRyKCdzcmMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xvc2Vfc291bmRfc3JjID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9jbG9zZV9zb3VuZF8yJykuYXR0cignc3JjJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQgPSBwYXJzZUZsb2F0KGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpIC0gNTA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdvZmYnID09PSAnb24nICYmIHR5cGVvZiBzb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c19wYl9zb3VuZF8yJykuZ2V0KDApLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl9wYXVzZV9zb3VuZF8yJykub24oJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9zb3VuZF8yJykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY2xvc2Ugc291bmQgc3RhcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgJiYgdHlwZW9mIGNsb3NlX3NvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ29mZicgPT09ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl9wYXVzZV9zb3VuZF8yJykub24oJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNheXNfcGJfY2xvc2Vfc291bmRfMicpLmdldCgwKS5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF8yICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8yJykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzInKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzInKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Nsb3NlIHNvdW5kIGVuZAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGltZV9wYl9zdHJfMiA9ICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfMiBzcGFuJykuYXR0cignZGF0YS1heXMtc2Vjb25kcycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbW9iaWxlVGltZXIgPSArJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl8yIHNwYW4nKS5hdHRyKCdkYXRhLWF5cy1tb2JpbGUtc2Vjb25kcycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzIgc3BhbicpLmh0bWwobW9iaWxlVGltZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lX3BiX3N0cl8yID0gbW9iaWxlVGltZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aW1lX3BiXzIgPSBwYXJzZUludCh0aW1lX3BiX3N0cl8yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aW1lX3BiXzIgIT09IHVuZGVmaW5lZCl7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aW1lX3BiXzIgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGltZXJfcGJfMiA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3VGltZV9wYl8yID0gdGltZV9wYl8yLS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXlzX3BiX2VmZmVjdE91dF8yID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX291dF8yJykudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzIgc3BhbicpLnRleHQobmV3VGltZV9wYl8yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMicpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbi1kdXJhdGlvbic6IGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc2Vjb25kcyArICdzJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobmV3VGltZV9wYl8yIDw9IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfMicpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8yJykuYXR0cignY2xhc3MnLCAnYXlzLXBiLW1vZGFsIGF5cy1wYi1tb2RhbF8yIGZpeGVkLXByaWNlLXBvcHVwIHNjaGVkdWxlLWRldmVsb3Blci1pbnRlcnZpZXcgJyskKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX21vZGFsX2FuaW1hdGVfb3V0XzInKS52YWwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF8yICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzInKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnb2ZmJyA9PT0gJ29uJyAmJiB0eXBlb2Ygc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfMicpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNheXNfcGJfY2xvc2Vfc291bmRfMicpLmdldCgwKS5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzIgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfMicpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8yJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzInKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfMicpLm9uZSgnY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzInKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzInKS5hdHRyKCdjbGFzcycsICdheXMtcGItbW9kYWwgYXlzLXBiLW1vZGFsXzIgZml4ZWQtcHJpY2UtcG9wdXAgc2NoZWR1bGUtZGV2ZWxvcGVyLWludGVydmlldyAnK2F5c19wYl9lZmZlY3RPdXRfMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ2lmcmFtZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IC9odHRwczpcL1wvd3d3LnlvdXR1YmUuY29tLzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNyYyA9ICQodGhpcykuYXR0cignc3JjJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignc3JjJywgJCh0aGlzKS5hdHRyKCdzcmMnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ3ZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mICQodGhpcykuZ2V0KDApICE9ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISAkKHRoaXMpLmdldCgwKS5wYXVzZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5nZXQoMCkucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnYXVkaW8ud3AtYXVkaW8tc2hvcnRjb2RlJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2YgJCh0aGlzKS5nZXQoMCkgIT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhICQodGhpcykuZ2V0KDApLnBhdXNlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmdldCgwKS5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfMiAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8yJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMicpLmNzcygnZGlzcGxheScsICdub25lJyk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzInKS5jc3MoeydvcGFjaXR5JzogJzAnLCAnZGlzcGxheSc6ICdub25lJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF5c19wYl9mbGFnID0gIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbigna2V5ZG93bicsIGZ1bmN0aW9uKGV2ZW50KSB7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiBheXNfcGJfZmxhZyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09IDI3KSB7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV8yJykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19wYl9mbGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfMicpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzInKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzIgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzInKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzInKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzInKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCdjbGlja1NlbGVjdG9yJyAhPSAnYm90aCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2xvc2VQb3B1cE92ZXJsYXkgJiYgJ09uJyA9PSAnT24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV8yJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9wYXJlbnRfZGl2ID0gJCh0aGlzKS5maW5kKCcuYXlzLXBiLW1vZGFscycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfZGl2ID0gJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJy5heXMtcGItbW9kYWxfMicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBiX3BhcmVudF9kaXYuaXMocGJfZGl2KSAmJiBwYl9wYXJlbnRfZGl2LmhhcyhwYl9kaXYpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzInKS5jbGljaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdvZmYnID09PSAnb24nICYmIHR5cGVvZiBzb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX3NvdW5kXzInKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiB0eXBlb2YgY2xvc2Vfc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyAmJiAnb2ZmJyA9PT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8yJykuZ2V0KDApLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF8yICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8yJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8yJykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzInKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8yJykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNsb3NlUG9wdXBPdmVybGF5ICYmICdPbicgPT0gJ09uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfMicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBiX3BhcmVudF9kaXYgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfZGl2ID0gJCh0aGlzKS5maW5kKCcuYXlzLXBiLW1vZGFsXzInKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYl9kaXYuaXMoZS50YXJnZXQpICYmIHBiX2Rpdi5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzInKS5jbGljaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdvZmYnID09PSAnb24nICYmIHR5cGVvZiBzb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX3NvdW5kXzInKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiB0eXBlb2YgY2xvc2Vfc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyAmJiAnb2ZmJyA9PT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8yJykuZ2V0KDApLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF8yICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8yJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8yJykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzInKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8yJykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfMicpLmNzcygnZGlzcGxheScsJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMicpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uLWR1cmF0aW9uJzogYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zZWNvbmRzICsgJ3MnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzInKS5vbmUoJ2NsaWNrJywgZnVuY3Rpb24oKXsgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF5c19wYl9lZmZlY3RPdXRfMiA9ICQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfbW9kYWxfYW5pbWF0ZV9vdXRfMicpLnZhbCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc18yJykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzInKS5hdHRyKCdjbGFzcycsICdheXMtcGItbW9kYWwgYXlzLXBiLW1vZGFsXzIgZml4ZWQtcHJpY2UtcG9wdXAgc2NoZWR1bGUtZGV2ZWxvcGVyLWludGVydmlldyAnK2F5c19wYl9lZmZlY3RPdXRfMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnaWZyYW1lJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSAvaHR0cHM6XC9cL3d3dy55b3V0dWJlLmNvbS87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNyYyA9ICQodGhpcykuYXR0cignc3JjJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdzcmMnLCAkKHRoaXMpLmF0dHIoJ3NyYycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ3ZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2YgJCh0aGlzKS5nZXQoMCkgIT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEgJCh0aGlzKS5nZXQoMCkucGF1c2VkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5nZXQoMCkucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5cy1wYi1tb2RhbHMnKS5maW5kKCdhdWRpby53cC1hdWRpby1zaG9ydGNvZGUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mICQodGhpcykuZ2V0KDApICE9ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhICQodGhpcykuZ2V0KDApLnBhdXNlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZ2V0KDApLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzIgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzInKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfMicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV8yJykuY3NzKHsnb3BhY2l0eSc6ICcwJywgJ2Rpc3BsYXknOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNQYWdlU2Nyb2xsRGlzYWJsZWQpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCdib2R5JykuYWRkQ2xhc3MoJ3BiX2Rpc2FibGVfc2Nyb2xsXzInKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnaHRtbCcpLmFkZENsYXNzKCdwYl9kaXNhYmxlX3Njcm9sbF8yJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuYXlzLXBiLW1vZGFsLWNsb3NlXzInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJ2JvZHknKS5yZW1vdmVDbGFzcygncGJfZGlzYWJsZV9zY3JvbGxfMicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnaHRtbCcpLnJlbW92ZUNsYXNzKCdwYl9kaXNhYmxlX3Njcm9sbF8yJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdPbicgIT0gJ09uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzInKS5jc3MoeydvcGFjaXR5JzogJzAnLCAnZGlzcGxheSc6ICdub25lICFpbXBvcnRhbnQnLCAncG9pbnRlci1ldmVudHMnOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8yJykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdhdXRvJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzInKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJ2ZhbHNlJyA9PSAndHJ1ZScgJiYgd2luZG93LmlubmVyV2lkdGggPCA3NjgpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigwICE9IDAgJiYgJ29mZicgIT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzInKS5jc3MoeydkaXNwbGF5JzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfMicpLmNzcyh7J2Rpc3BsYXknOiAnYmxvY2snfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKDAgIT0gMCAmJiAnb2ZmJyAhPSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfMicpLmNzcyh7J2Rpc3BsYXknOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV8yJykuY3NzKHsnZGlzcGxheSc6ICdibG9jayd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmKDAgPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2xvc2VQb3B1cE92ZXJsYXkgJiYgJ09uJyA9PSAnT24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfMicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9wYXJlbnQgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBiX2RpdiA9ICQodGhpcykuZmluZCgnLmF5cy1wYi1tb2RhbF8yJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBiX2Rpdi5pcyhlLnRhcmdldCkgJiYgcGJfZGl2LmhhcyhlLnRhcmdldCkubGVuZ3RoID09PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzInKS5jbGljaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF5c19wYl9mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbigna2V5ZG93bicsIGZ1bmN0aW9uKGV2ZW50KSB7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgJiYgYXlzX3BiX2ZsYWcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT0gMjcpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzInKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19wYl9mbGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnT24nICE9ICdPbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzInKS5jc3MoeydvcGFjaXR5JzogJzAnLCAnZGlzcGxheSc6ICdub25lICFpbXBvcnRhbnQnLCAncG9pbnRlci1ldmVudHMnOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzInKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ2F1dG8nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc18yJykuY3NzKCdwb2ludGVyLWV2ZW50cycsJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignY2xpY2tTZWxlY3RvcicgIT0gJ2JvdGgnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyB2aWRlbycpLmhhc0NsYXNzKCd3cC12aWRlby1zaG9ydGNvZGUnKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlb1dpZHRoICA9ICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmF0dHIoJ3dpZHRoJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlb0hlaWdodCA9ICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmF0dHIoJ2hlaWdodCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyAud3AtdmlkZW8nKS5yZW1vdmVBdHRyKCdzdHlsZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgLm1lanMtY29udGFpbmVyJykucmVtb3ZlQXR0cignc3R5bGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgLndwLXZpZGVvJykuY3NzKHsnd2lkdGgnOiAnMTAwJSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIC5tZWpzLWNvbnRhaW5lcicpLmNzcyh7J3dpZHRoJzogJzEwMCUnLCdoZWlnaHQnOiB2aWRlb0hlaWdodCArICdweCd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmNzcyh7J3dpZHRoJzogJzEwMCUnLCdoZWlnaHQnOiB2aWRlb0hlaWdodCArICdweCd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwxMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgaWZyYW1lJykuYXR0cignc3R5bGUnKSAhPSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIGlmcmFtZScpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sNTAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignb2ZmJyA9PSAnb24nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvID0gJChkb2N1bWVudCkuZmluZCgndmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aWRlby5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1tpXS5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykubmV4dCgpLnZhbCgpID09PSAnb24nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzX3ZpZGVvX3dpbmRvdycpLmZpbmQoJy5jbG9zZS1pbWFnZS1idG4nKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pKCBqUXVlcnkgKTsKICAgICAgICAgICAgICAgIA==
5 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mIGF5c1BvcHVwT3B0aW9ucyA9PT0gInVuZGVmaW5lZCIpewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzUG9wdXBPcHRpb25zID0gW107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGF5c1BvcHVwT3B0aW9uc1siMiJdICA9ICJleUp3YjNCMWNHSnZlQ0k2ZXlKcFpDSTZJaklpTENKMGFYUnNaU0k2SWxOamFHVmtkV3hsSUdFZ1pHVjJaV3h2Y0dWeUlHbHVkR1Z5ZG1sbGR5SXNJbkJ2Y0hWd1gyNWhiV1VpT2lJaUxDSmtaWE5qY21sd2RHbHZiaUk2SWlJc0ltTmhkR1ZuYjNKNVgybGtJam9pTVNJc0ltRjFkRzlqYkc5elpTSTZJakFpTENKamIyOXJhV1VpT2lJd0lpd2lkMmxrZEdnaU9qRXdOVEFzSW1obGFXZG9kQ0k2TnpVd0xDSmlaMk52Ykc5eUlqb2lJMlptWm1abVppSXNJblJsZUhSamIyeHZjaUk2SWlNd01EQXdNREFpTENKaWIzSmtaWEp6YVhwbElqb2lNU0lzSW1KdmNtUmxjbU52Ykc5eUlqb2lJMlptWm1abVppSXNJbUp2Y21SbGNsOXlZV1JwZFhNaU9pSTBJaXdpYzJodmNuUmpiMlJsSWpvaUlpd2lkWE5sY25OZmNtOXNaU0k2SWx0ZElpd2lZM1Z6ZEc5dFgyTnNZWE56SWpvaVptbDRaV1F0Y0hKcFkyVXRjRzl3ZFhBZ2MyTm9aV1IxYkdVdFpHVjJaV3h2Y0dWeUxXbHVkR1Z5ZG1sbGR5SXNJbU4xYzNSdmJWOWpjM01pT2lJdVptbDRaV1F0Y0hKcFkyVXRjRzl3ZFhBZ0xtWnBlR1ZrTFhCdmNIVndMV0p2WkhrbVozUTdhV1p5WVcxbElIdGNjbHh1SUNBZ0lHUnBjM0JzWVhrNklHNXZibVVnSVdsdGNHOXlkR0Z1ZER0Y2NseHVJQ0FnSUhkcFpIUm9PaUF3SUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNCb1pXbG5hSFE2SURBZ0lXbHRjRzl5ZEdGdWREdGNjbHh1ZlNJc0ltTjFjM1J2YlY5b2RHMXNJam9pUEdScGRpQmpiR0Z6Y3oxY0ltWnBlR1ZrTFhCeWFXTmxMWEJ2Y0hWd0xXaGxZV1JjSWo1Y2NseHVQR2d6UGxOamFHVmtkV3hsSUVFZ1JHVjJaV3h2Y0dWeUozTWdTVzUwWlhKMmFXVjNQRnd2YURNK1hISmNianhjTDJScGRqNWNjbHh1UEdScGRpQmpiR0Z6Y3oxY0ltWnBlR1ZrTFhCdmNIVndMV0p2WkhsY0lqNWNjbHh1UEdScGRpQmpiR0Z6Y3oxY0ltWnBlR1ZrTFhCdmNIVndMWFJsZUhRdGMybGtaVndpUGx4eVhHNDhaR2wySUdOc1lYTnpQVndpWm1sNFpXUXRjRzl3ZFhBdGRHVjRkQzEwYVhSc1pWd2lQbHh5WEc0OGFETStRMjl1ZEdGamRDQkpibVp2Y20xaGRHbHZianhjTDJnelBseHlYRzQ4WEM5a2FYWStYSEpjYmp4a2FYWWdZMnhoYzNNOVhDSm1hWGhsWkMxd2IzQjFjQzEwWlhoMExXTnZiVzF2Ymx3aVBseHlYRzVjY2x4dVJtbHNiQ0IxY0NCMGFHVWdabTl5YlNCaGJtUWdiM1Z5SUZSbFlXMGdkMmxzYkNCblpYUWdZbUZqYXlCMGJ5QjViM1VnZDJsMGFHbHVJREkwSUdodmRYSnpMbHh5WEc1Y2NseHVQRnd2WkdsMlBseHlYRzQ4WkdsMklHTnNZWE56UFZ3aVptbDRaV1F0Y0c5d2RYQXRkR1Y0ZEMxamIyNTBZV04wWENJK1BHRWdhSEpsWmoxY0luUmxiRG9yT1RFdE9Ua3dPVGsxTlRrME9Gd2lQaXM1TVMwNU9UQTVPVFUxT1RRNFBGd3ZZVDQ4WEM5a2FYWStYSEpjYmp4a2FYWWdZMnhoYzNNOVhDSm1hWGhsWkMxd2IzQjFjQzEwWlhoMExXVnRZV2xzWENJK1BHRWdhSEpsWmoxY0ltMWhhV3gwYnpwcGJtWnZRSGhqWld4c1pXNWpaUzFwZEM1amIyMWNJajVwYm1adlFIaGpaV3hzWlc1alpTMXBkQzVqYjIwOFhDOWhQanhjTDJScGRqNWNjbHh1UEhWc0lHTnNZWE56UFZ3aWMyOWphV0ZzTFd4cGJtdHpYQ0krWEhKY2JpQWdJQ0FnSUNBZ1BHeHBJR05zWVhOelBWd2ljMjlqYVdGc0xXeHBibXR6TFd4cGMzUmNJajVjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdQR0VnYUhKbFpqMWNJbWgwZEhCek9sd3ZYQzkzZDNjdVptRmpaV0p2YjJzdVkyOXRYQzlZWTJWc2JHVnVZMlZKVkZ3dlhDSWdkR0Z5WjJWMFBWd2lYMkpzWVc1clhDSStQR2tnWTJ4aGMzTTlYQ0pwWTI5dUxXWmhZMlZpYjI5clhDSStQRnd2YVQ0OFhDOWhQbHh5WEc0Z0lDQWdJQ0FnSUR4Y0wyeHBQbHh5WEc0Z0lDQWdJQ0FnSUR4c2FTQmpiR0Z6Y3oxY0luTnZZMmxoYkMxc2FXNXJjeTFzYVhOMFhDSStYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lEeGhJR2h5WldZOVhDSm9kSFJ3Y3pwY0wxd3ZkM2QzTG1sdWMzUmhaM0poYlM1amIyMWNMM2hqWld4c1pXNWpaV2wwWEM4L2FHdzlaVzVjSWlCMFlYSm5aWFE5WENKZllteGhibXRjSWo0OGFTQmpiR0Z6Y3oxY0ltbGpiMjR0YVc1emRHRmNJajQ4WEM5cFBqeGNMMkUrWEhKY2JpQWdJQ0FnSUNBZ1BGd3ZiR2srWEhKY2JpQWdJQ0FnSUNBZ1BHeHBJR05zWVhOelBWd2ljMjlqYVdGc0xXeHBibXR6TFd4cGMzUmNJajVjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdQR0VnYUhKbFpqMWNJbWgwZEhCek9sd3ZYQzlwYmk1c2FXNXJaV1JwYmk1amIyMWNMMk52YlhCaGJubGNMM2hqWld4c1pXNWpaUzFwZEZ3aUlIUmhjbWRsZEQxY0lsOWliR0Z1YTF3aVBqeHBJR05zWVhOelBWd2lhV052Ymkxc2FXNXJaV1JwYmx3aVBqeGNMMmsrUEZ3dllUNWNjbHh1SUNBZ0lDQWdJQ0E4WEM5c2FUNWNjbHh1SUNBZ0lDQWdJQ0E4YkdrZ1kyeGhjM005WENKemIyTnBZV3d0YkdsdWEzTXRiR2x6ZEZ3aVBseHlYRzRnSUNBZ0lDQWdJQ0FnSUNBOFlTQm9jbVZtUFZ3aWFIUjBjSE02WEM5Y0wzUjNhWFIwWlhJdVkyOXRYQzk0WTJWc2JHVnVZMlZwZEQ5c1lXNW5QV1Z1WENJZ2RHRnlaMlYwUFZ3aVgySnNZVzVyWENJK1BHa2dZMnhoYzNNOVhDSnBZMjl1TFhSM2FYUjBaWEpjSWo0OFhDOXBQanhjTDJFK1hISmNiaUFnSUNBZ0lDQWdQRnd2YkdrK1hISmNiaUFnSUNBZ0lDQThYQzkxYkQ1Y2NseHVQR1JwZGlCamJHRnpjejFjSW1acGVHVmtMWEJ2Y0hWd0xXSnZkSFJ2YlMxMFpYaDBYQ0krWEhKY2JseHlYRzVYWlNCaGMzTjFjbVVnWVdKemIyeDFkR1VnY0hKdmRHVmpkR2x2YmlCdlppQjViM1Z5SUdSaGRHRXVJRlJvWlNCcGJtWnZjbTFoZEdsdmJpQjViM1ZjZFRJd01UbDJaU0J3Y205MmFXUmxaQ0IzYVd4c0lISmxiV0ZwYmlCamIyNW1hV1JsYm5ScFlXd2dZVzVrSUhkdmJseDFNakF4T1hRZ1ltVWdjMmhoY21Wa0lIZHBkR2dnWVc1NUlIUm9hWEprSUhCaGNuUnBaWE11SUZKbGMzUWdZWE56ZFhKbFpDd2dlVzkxY2lCbGJXRnBiQ0IzYVd4c0lHNXZkQ0JpWlNCMWMyVmtJR1p2Y2lCaGJua2dkVzV6YjJ4cFkybDBaV1FnWTI5dGJYVnVhV05oZEdsdmJpNWNjbHh1WEhKY2JqeGNMMlJwZGo1Y2NseHVQRnd2WkdsMlBseHlYRzQ4SVMwdElGdG5jbUYyYVhSNVptOXliU0JwWkQxY0lqTmNJaUJoYW1GNFBWd2lkSEoxWlZ3aUlIUnBkR3hsUFZ3aWRISjFaVndpWFNBdExUNWNjbHh1UEdScGRpQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmQzSmhjSEJsY2w5NGFYUmtaWFpsYkc5d1pYSnphVzUwWlhKMmFXVjNabTl5YlZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJWOTNjbUZ3Y0dWeUlHWnZjbTB0WkdWMFlXbHNjMXdpUGp4bWIzSnRJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOTRhWFJrWlhabGJHOXdaWEp6YVc1MFpYSjJhV1YzWm05eWJWd2lJSEp2YkdVOVhDSm1iM0p0WENJZ1lXTjBhVzl1UFZ3aWFIUjBjSE02WEM5Y0wyMWhMbTV2Y0dGalkyVnNaWEpoZEdVdVkyOXRYQzltYjNKdFhDOXpkV0p0YVhRL1ptOXliVWxrUFRFd1hDSWdZWFYwYjJOdmJYQnNaWFJsUFZ3aVptRnNjMlZjSWlCbGJtTjBlWEJsUFZ3aWJYVnNkR2x3WVhKMFhDOW1iM0p0TFdSaGRHRmNJaUJ0WlhSb2IyUTlYQ0p3YjNOMFhDSWdaR0YwWVMxdFlYVjBhV010Wm05eWJUMWNJbmhwZEdSbGRtVnNiM0JsY25OcGJuUmxjblpwWlhkbWIzSnRYQ0krWEhKY2JqeGthWFlnYVdROVhDSnRZWFYwYVdObWIzSnRYM2hwZEdSbGRtVnNiM0JsY25OcGJuUmxjblpwWlhkbWIzSnRYMlZ5Y205eVhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV1Z5Y205eVhDSStQRnd2WkdsMlBseHlYRzQ4WkdsMklHbGtQVndpYldGMWRHbGpabTl5YlY5NGFYUmtaWFpsYkc5d1pYSnphVzUwWlhKMmFXVjNabTl5YlY5dFpYTnpZV2RsWENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExXMWxjM05oWjJVZ2MzVmpZMlZ6YzJaMWJHeDVMWE4xWW0xcGRGd2lQanhjTDJScGRqNWNjbHh1UEdScGRpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRhVzV1WlhKbWIzSnRYQ0krWEhKY2JqeGthWFlnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFhCaFoyVXRkM0poY0hCbGNpQnRZWFYwYVdObWIzSnRMWEJoWjJVdE1Wd2lJR1JoZEdFdGJXRjFkR2xqTFdadmNtMHRjR0ZuWlQxY0lqRmNJajVjY2x4dVBHUnBkaUJqYkdGemN6MWNJbVp2Y20wdGMyVmpkR2x2Ymx3aVBseHlYRzQ4WkdsMklHbGtQVndpYldGMWRHbGpabTl5YlY5NGFYUmtaWFpsYkc5d1pYSnphVzUwWlhKMmFXVjNabTl5YlY5bWFYSnpkRjl1WVcxbFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMWEp2ZHlCdFlYVjBhV05tYjNKdExYUmxlSFFnYldGMWRHbGpabTl5YlMxbWFXVnNaQzB4SUcxaGRYUnBZMlp2Y20wdGNtVnhkV2x5WldSY0lpQmtZWFJoTFhaaGJHbGtZWFJsUFZ3aVptbHljM1JmYm1GdFpWd2lJR1JoZEdFdGRtRnNhV1JoZEdsdmJpMTBlWEJsUFZ3aWRHVjRkRndpUGp4c1lXSmxiQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZiR0ZpWld4ZmVHbDBaR1YyWld4dmNHVnljMmx1ZEdWeWRtbGxkMlp2Y20xZlptbHljM1JmYm1GdFpWd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzFzWVdKbGJGd2lJR1p2Y2oxY0ltMWhkWFJwWTJadmNtMWZhVzV3ZFhSZmVHbDBaR1YyWld4dmNHVnljMmx1ZEdWeWRtbGxkMlp2Y20xZlptbHljM1JmYm1GdFpWd2lQa1pwY25OMElFNWhiV1U4WEM5c1lXSmxiRDVjY2x4dVBHbHVjSFYwSUdsa1BWd2liV0YxZEdsalptOXliVjlwYm5CMWRGOTRhWFJrWlhabGJHOXdaWEp6YVc1MFpYSjJhV1YzWm05eWJWOW1hWEp6ZEY5dVlXMWxYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFdsdWNIVjBYQ0lnYm1GdFpUMWNJbTFoZFhScFkyWnZjbTFiWm1seWMzUmZibUZ0WlYxY0lpQjBlWEJsUFZ3aWRHVjRkRndpSUhaaGJIVmxQVndpWENJZ2NHeGhZMlZvYjJ4a1pYSTlYQ0pGYm5SbGNpQkdhWEp6ZENCT1lXMWxYQ0lnWEM4K1hISmNianh6Y0dGdUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMWxjbkp2Y20xeloxd2lJSE4wZVd4bFBWd2laR2x6Y0d4aGVUb2dibTl1WlR0Y0lqNVVhR2x6SUdseklISmxjWFZwY21Wa0xqeGNMM053WVc0K1BGd3ZaR2wyUGx4eVhHNDhaR2wySUdsa1BWd2liV0YxZEdsalptOXliVjk0YVhSa1pYWmxiRzl3WlhKemFXNTBaWEoyYVdWM1ptOXliVjlzWVhOMFgyNWhiV1ZjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0ZEdWNGRDQnRZWFYwYVdObWIzSnRMV1pwWld4a0xUSWdiV0YxZEdsalptOXliUzF5WlhGMWFYSmxaRndpSUdSaGRHRXRkbUZzYVdSaGRHVTlYQ0pzWVhOMFgyNWhiV1ZjSWlCa1lYUmhMWFpoYkdsa1lYUnBiMjR0ZEhsd1pUMWNJblJsZUhSY0lqNDhiR0ZpWld3Z2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDJ4aFltVnNYM2hwZEdSbGRtVnNiM0JsY25OcGJuUmxjblpwWlhkbWIzSnRYMnhoYzNSZmJtRnRaVndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxc1lXSmxiRndpSUdadmNqMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWkdWMlpXeHZjR1Z5YzJsdWRHVnlkbWxsZDJadmNtMWZiR0Z6ZEY5dVlXMWxYQ0krVEdGemRDQk9ZVzFsUEZ3dmJHRmlaV3crWEhKY2JqeHBibkIxZENCcFpEMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWkdWMlpXeHZjR1Z5YzJsdWRHVnlkbWxsZDJadmNtMWZiR0Z6ZEY5dVlXMWxYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFdsdWNIVjBYQ0lnYm1GdFpUMWNJbTFoZFhScFkyWnZjbTFiYkdGemRGOXVZVzFsWFZ3aUlIUjVjR1U5WENKMFpYaDBYQ0lnZG1Gc2RXVTlYQ0pjSWlCd2JHRmpaV2h2YkdSbGNqMWNJa1Z1ZEdWeUlFeGhjM1FnVG1GdFpWd2lJRnd2UGx4eVhHNDhjM0JoYmlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdFpYSnliM0p0YzJkY0lpQnpkSGxzWlQxY0ltUnBjM0JzWVhrNklHNXZibVU3WENJK1ZHaHBjeUJwY3lCeVpYRjFhWEpsWkM0OFhDOXpjR0Z1UGp4Y0wyUnBkajVjY2x4dVBGd3ZaR2wyUGx4eVhHNDhaR2wySUdOc1lYTnpQVndpWm05eWJTMXpaV04wYVc5dVhDSStYSEpjYmp4a2FYWWdhV1E5WENKdFlYVjBhV05tYjNKdFgzaHBkR1JsZG1Wc2IzQmxjbk5wYm5SbGNuWnBaWGRtYjNKdFgyTnZiWEJoYm5sZmJtRnRaVndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxeWIzY2diV0YxZEdsalptOXliUzEwWlhoMElHMWhkWFJwWTJadmNtMHRabWxsYkdRdE0xd2lQanhzWVdKbGJDQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmJHRmlaV3hmZUdsMFpHVjJaV3h2Y0dWeWMybHVkR1Z5ZG1sbGQyWnZjbTFmWTI5dGNHRnVlVjl1WVcxbFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV3hoWW1Wc1hDSWdabTl5UFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUmtaWFpsYkc5d1pYSnphVzUwWlhKMmFXVjNabTl5YlY5amIyMXdZVzU1WDI1aGJXVmNJajVEYjIxd1lXNTVJRTVoYldVOFhDOXNZV0psYkQ1Y2NseHVQR2x1Y0hWMElHbGtQVndpYldGMWRHbGpabTl5YlY5cGJuQjFkRjk0YVhSa1pYWmxiRzl3WlhKemFXNTBaWEoyYVdWM1ptOXliVjlqYjIxd1lXNTVYMjVoYldWY0lpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRhVzV3ZFhSY0lpQnVZVzFsUFZ3aWJXRjFkR2xqWm05eWJWdGpiMjF3WVc1NVgyNWhiV1ZkWENJZ2RIbHdaVDFjSW5SbGVIUmNJaUIyWVd4MVpUMWNJbHdpSUhCc1lXTmxhRzlzWkdWeVBWd2lSVzUwWlhJZ1EyOXRjR0Z1ZVNCT1lXMWxYQ0lnWEM4K1BGd3ZaR2wyUGx4eVhHNDhaR2wySUdsa1BWd2liV0YxZEdsalptOXliVjk0YVhSa1pYWmxiRzl3WlhKemFXNTBaWEoyYVdWM1ptOXliVjlsYldGcGJGd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzF5YjNjZ2JXRjFkR2xqWm05eWJTMWxiV0ZwYkNCdFlYVjBhV05tYjNKdExXWnBaV3hrTFRRZ2JXRjFkR2xqWm05eWJTMXlaWEYxYVhKbFpGd2lJR1JoZEdFdGRtRnNhV1JoZEdVOVhDSmxiV0ZwYkZ3aUlHUmhkR0V0ZG1Gc2FXUmhkR2x2YmkxMGVYQmxQVndpWlcxaGFXeGNJajQ4YkdGaVpXd2dhV1E5WENKdFlYVjBhV05tYjNKdFgyeGhZbVZzWDNocGRHUmxkbVZzYjNCbGNuTnBiblJsY25acFpYZG1iM0p0WDJWdFlXbHNYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFd4aFltVnNYQ0lnWm05eVBWd2liV0YxZEdsalptOXliVjlwYm5CMWRGOTRhWFJrWlhabGJHOXdaWEp6YVc1MFpYSjJhV1YzWm05eWJWOWxiV0ZwYkZ3aVBrVnRZV2xzUEZ3dmJHRmlaV3crWEhKY2JqeHBibkIxZENCcFpEMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWkdWMlpXeHZjR1Z5YzJsdWRHVnlkbWxsZDJadmNtMWZaVzFoYVd4Y0lpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRhVzV3ZFhSY0lpQnVZVzFsUFZ3aWJXRjFkR2xqWm05eWJWdGxiV0ZwYkYxY0lpQjBlWEJsUFZ3aVpXMWhhV3hjSWlCMllXeDFaVDFjSWx3aUlIQnNZV05sYUc5c1pHVnlQVndpUlc1MFpYSWdSVzFoYVd4Y0lpQmNMejVjY2x4dVBITndZVzRnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFdWeWNtOXliWE5uWENJZ2MzUjViR1U5WENKa2FYTndiR0Y1T2lCdWIyNWxPMXdpUGxSb2FYTWdhWE1nY21WeGRXbHlaV1F1UEZ3dmMzQmhiajQ4WEM5a2FYWStYSEpjYmp4Y0wyUnBkajVjY2x4dVBHUnBkaUJqYkdGemN6MWNJbVp2Y20wdGMyVmpkR2x2Ymx3aVBseHlYRzQ4WkdsMklHbGtQVndpYldGMWRHbGpabTl5YlY5NGFYUmtaWFpsYkc5d1pYSnphVzUwWlhKMmFXVjNabTl5YlY5amIyNTBZV04wWDI1MWJXSmxjbHdpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxeWIzY2diV0YxZEdsalptOXliUzEwWld3Z2JXRjFkR2xqWm05eWJTMW1hV1ZzWkMwMUlHMWhkWFJwWTJadmNtMHRjbVZ4ZFdseVpXUmNJaUJrWVhSaExYWmhiR2xrWVhSbFBWd2lZMjl1ZEdGamRGOXVkVzFpWlhKY0lpQmtZWFJoTFhaaGJHbGtZWFJwYjI0dGRIbHdaVDFjSW5SbGJGd2lQanhzWVdKbGJDQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmJHRmlaV3hmZUdsMFpHVjJaV3h2Y0dWeWMybHVkR1Z5ZG1sbGQyWnZjbTFmWTI5dWRHRmpkRjl1ZFcxaVpYSmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YkdGaVpXeGNJaUJtYjNJOVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR1JsZG1Wc2IzQmxjbk5wYm5SbGNuWnBaWGRtYjNKdFgyTnZiblJoWTNSZmJuVnRZbVZ5WENJK1VHaHZibVVnVG5WdFltVnlQRnd2YkdGaVpXdytYSEpjYmp4cGJuQjFkQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZhVzV3ZFhSZmVHbDBaR1YyWld4dmNHVnljMmx1ZEdWeWRtbGxkMlp2Y20xZlkyOXVkR0ZqZEY5dWRXMWlaWEpjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGFXNXdkWFJjSWlCdVlXMWxQVndpYldGMWRHbGpabTl5YlZ0amIyNTBZV04wWDI1MWJXSmxjbDFjSWlCMGVYQmxQVndpZEdWc1hDSWdkbUZzZFdVOVhDSmNJaUJ3YkdGalpXaHZiR1JsY2oxY0lrVnVkR1Z5SUZCb2IyNWxJRzV2TGx3aUlGd3ZQbHh5WEc0OGMzQmhiaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0WlhKeWIzSnRjMmRjSWlCemRIbHNaVDFjSW1ScGMzQnNZWGs2SUc1dmJtVTdYQ0krVkdocGN5QnBjeUJ5WlhGMWFYSmxaQzQ4WEM5emNHRnVQanhjTDJScGRqNWNjbHh1UEdScGRpQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmVHbDBaR1YyWld4dmNHVnljMmx1ZEdWeWRtbGxkMlp2Y20xZmNISmxabVpsY21Wa1gzUmxZMmh1YjJ4dlozbGNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0Y205M0lHMWhkWFJwWTJadmNtMHRkR1Y0ZENCdFlYVjBhV05tYjNKdExXWnBaV3hrTFRjZ2JXRjFkR2xqWm05eWJTMXlaWEYxYVhKbFpGd2lJR1JoZEdFdGRtRnNhV1JoZEdVOVhDSndjbVZtWm1WeVpXUmZkR1ZqYUc1dmJHOW5lVndpSUdSaGRHRXRkbUZzYVdSaGRHbHZiaTEwZVhCbFBWd2lkR1Y0ZEZ3aVBqeHNZV0psYkNCcFpEMWNJbTFoZFhScFkyWnZjbTFmYkdGaVpXeGZlR2wwWkdWMlpXeHZjR1Z5YzJsdWRHVnlkbWxsZDJadmNtMWZjSEpsWm1abGNtVmtYM1JsWTJodWIyeHZaM2xjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGJHRmlaV3hjSWlCbWIzSTlYQ0p0WVhWMGFXTm1iM0p0WDJsdWNIVjBYM2hwZEdSbGRtVnNiM0JsY25OcGJuUmxjblpwWlhkbWIzSnRYM0J5WldabVpYSmxaRjkwWldOb2JtOXNiMmQ1WENJK1VISmxabVpsY21Wa0lGUmxZMmh1YjJ4dlozazhYQzlzWVdKbGJENWNjbHh1UEdsdWNIVjBJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUmtaWFpsYkc5d1pYSnphVzUwWlhKMmFXVjNabTl5YlY5d2NtVm1abVZ5WldSZmRHVmphRzV2Ykc5bmVWd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzFwYm5CMWRDQmNJaUJ1WVcxbFBWd2liV0YxZEdsalptOXliVnR3Y21WbVptVnlaV1JmZEdWamFHNXZiRzluZVYxY0lpQjBlWEJsUFZ3aWRHVjRkRndpSUhaaGJIVmxQVndpWENJZ2NHeGhZMlZvYjJ4a1pYSTlYQ0pGYm5SbGNpQlFjbVZtWm1WeVpXUWdWR1ZqYUc1dmJHOW5lVndpSUZ3dlBseHlYRzQ4YzNCaGJpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRaWEp5YjNKdGMyZGNJaUJ6ZEhsc1pUMWNJbVJwYzNCc1lYazZJRzV2Ym1VN1hDSStWR2hwY3lCcGN5QnlaWEYxYVhKbFpDNDhYQzl6Y0dGdVBqeGNMMlJwZGo1Y2NseHVQRnd2WkdsMlBseHlYRzQ4WkdsMklHTnNZWE56UFZ3aVptOXliUzF6WldOMGFXOXVYQ0krWEhKY2JqeGthWFlnYVdROVhDSnRZWFYwYVdObWIzSnRYM2hwZEdSbGRtVnNiM0JsY25OcGJuUmxjblpwWlhkbWIzSnRYM0J5WldabVpYSmxaRjlrWVhSbFgyRnVaRjkwYVcxbFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMWEp2ZHlCdFlYVjBhV05tYjNKdExXUmhkR1YwYVcxbExXeHZZMkZzSUcxaGRYUnBZMlp2Y20wdFptbGxiR1F0T0Z3aVBqeHNZV0psYkNCcFpEMWNJbTFoZFhScFkyWnZjbTFmYkdGaVpXeGZlR2wwWkdWMlpXeHZjR1Z5YzJsdWRHVnlkbWxsZDJadmNtMWZjSEpsWm1abGNtVmtYMlJoZEdWZllXNWtYM1JwYldWY0lpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRiR0ZpWld4Y0lpQm1iM0k5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHUmxkbVZzYjNCbGNuTnBiblJsY25acFpYZG1iM0p0WDNCeVpXWm1aWEpsWkY5a1lYUmxYMkZ1WkY5MGFXMWxYQ0krVUhKbFptWmxjbVZrSUVSaGRHVWdZVzVrSUZScGJXVThYQzlzWVdKbGJENWNjbHh1UEdsdWNIVjBJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUmtaWFpsYkc5d1pYSnphVzUwWlhKMmFXVjNabTl5YlY5d2NtVm1abVZ5WldSZlpHRjBaVjloYm1SZmRHbHRaVndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxcGJuQjFkQ0JrWVhSbExYUnBiV1ZjSWlCdVlXMWxQVndpYldGMWRHbGpabTl5YlZ0d2NtVm1abVZ5WldSZlpHRjBaVjloYm1SZmRHbHRaVjFjSWlCMGVYQmxQVndpWkdGMFpYUnBiV1V0Ykc5allXeGNJaUIyWVd4MVpUMWNJbHdpSUhCc1lXTmxhRzlzWkdWeVBWd2lVSEpsWm1abGNtVmtJRVJoZEdVZ1lXNWtJRlJwYldVZ1hDSWdYQzgrUEZ3dlpHbDJQbHh5WEc0OFpHbDJJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOTRhWFJrWlhabGJHOXdaWEp6YVc1MFpYSjJhV1YzWm05eWJWOWpiM1Z1ZEhKNVhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMWEp2ZHlCdFlYVjBhV05tYjNKdExYTmxiR1ZqZENCdFlYVjBhV05tYjNKdExXWnBaV3hrTFRsY0lqNDhiR0ZpWld3Z2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDJ4aFltVnNYM2hwZEdSbGRtVnNiM0JsY25OcGJuUmxjblpwWlhkbWIzSnRYMk52ZFc1MGNubGNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YkdGaVpXeGNJaUJtYjNJOVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR1JsZG1Wc2IzQmxjbk5wYm5SbGNuWnBaWGRtYjNKdFgyTnZkVzUwY25sY0lqNURiM1Z1ZEhKNVBGd3ZiR0ZpWld3K1hISmNianh6Wld4bFkzUWdhV1E5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHUmxkbVZzYjNCbGNuTnBiblJsY25acFpYZG1iM0p0WDJOdmRXNTBjbmxjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGMyVnNaV04wWW05NFhDSWdibUZ0WlQxY0ltMWhkWFJwWTJadmNtMWJZMjkxYm5SeWVWMWNJajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWx3aVBsTmxiR1ZqZENCRGIzVnVkSEo1UEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVFXWm5hR0Z1YVhOMFlXNWNJajVCWm1kb1lXNXBjM1JoYmp4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lseDFNREJqTld4aGJtUWdTWE5zWVc1a2Mxd2lQbHgxTURCak5XeGhibVFnU1hOc1lXNWtjenhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWtGc1ltRnVhV0ZjSWo1QmJHSmhibWxoUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVFXeG5aWEpwWVZ3aVBrRnNaMlZ5YVdFOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSkJibVJ2Y25KaFhDSStRVzVrYjNKeVlUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa0Z1WjI5c1lWd2lQa0Z1WjI5c1lUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa0Z1WjNWcGJHeGhYQ0krUVc1bmRXbHNiR0U4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKQmJuUmhjbU4wYVdOaFhDSStRVzUwWVhKamRHbGpZVHhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWtGdWRHbG5kV0VnWVc1a0lFSmhjbUoxWkdGY0lqNUJiblJwWjNWaElHRnVaQ0JDWVhKaWRXUmhQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpUVhKblpXNTBhVzVoWENJK1FYSm5aVzUwYVc1aFBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lRWEp0Wlc1cFlWd2lQa0Z5YldWdWFXRThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pCY25WaVlWd2lQa0Z5ZFdKaFBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lRWFZ6ZEhKaGJHbGhYQ0krUVhWemRISmhiR2xoUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVFYVnpkSEpwWVZ3aVBrRjFjM1J5YVdFOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSkJlbVZ5WW1GcGFtRnVYQ0krUVhwbGNtSmhhV3BoYmp4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrSmhhR0Z0WVhOY0lqNUNZV2hoYldGelBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lRbUZvY21GcGJsd2lQa0poYUhKaGFXNDhYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pDWVc1bmJHRmtaWE5vWENJK1FtRnVaMnhoWkdWemFEeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa0poY21KaFpHOXpYQ0krUW1GeVltRmtiM004WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKQ1pXeGhjblZ6WENJK1FtVnNZWEoxY3p4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrSmxiR2RwZFcxY0lqNUNaV3huYVhWdFBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lRbVZzYVhwbFhDSStRbVZzYVhwbFBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lRbVZ1YVc1Y0lqNUNaVzVwYmp4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrSmxjbTExWkdGY0lqNUNaWEp0ZFdSaFBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lRbWgxZEdGdVhDSStRbWgxZEdGdVBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lRbTlzYVhacFlWd2lQa0p2YkdsMmFXRThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pDYjI1aGFYSmxMQ0JUWVdsdWRDQkZkWE4wWVhScGRYTWdZVzVrSUZOaFltRmNJajVDYjI1aGFYSmxMQ0JUWVdsdWRDQkZkWE4wWVhScGRYTWdZVzVrSUZOaFltRThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pDYjNOdWFXRWdZVzVrSUVobGNucGxaMjkyYVc1aFhDSStRbTl6Ym1saElHRnVaQ0JJWlhKNlpXZHZkbWx1WVR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrSnZkSE4zWVc1aFhDSStRbTkwYzNkaGJtRThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pDYjNWMlpYUWdTWE5zWVc1a1hDSStRbTkxZG1WMElFbHpiR0Z1WkR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrSnlZWHBwYkZ3aVBrSnlZWHBwYkR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrSnlkVzVsYVZ3aVBrSnlkVzVsYVR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrSjFiR2RoY21saFhDSStRblZzWjJGeWFXRThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pDZFhKcmFXNWhJRVpoYzI5Y0lqNUNkWEpyYVc1aElFWmhjMjg4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKQ2RYSjFibVJwWENJK1FuVnlkVzVrYVR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrTmhjR1VnVm1WeVpHVmNJajVEWVhCbElGWmxjbVJsUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVEyRnRZbTlrYVdGY0lqNURZVzFpYjJScFlUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa05oYldWeWIyOXVYQ0krUTJGdFpYSnZiMjQ4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKRFlXNWhaR0ZjSWo1RFlXNWhaR0U4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKRFlYbHRZVzRnU1hOc1lXNWtjMXdpUGtOaGVXMWhiaUJKYzJ4aGJtUnpQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpUTJWdWRISmhiQ0JCWm5KcFkyRnVJRkpsY0hWaWJHbGpYQ0krUTJWdWRISmhiQ0JCWm5KcFkyRnVJRkpsY0hWaWJHbGpQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpUTJoaFpGd2lQa05vWVdROFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSkRhR2xzWlZ3aVBrTm9hV3hsUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVEyaHBibUZjSWo1RGFHbHVZVHhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWtOdmJHOXRZbWxoWENJK1EyOXNiMjFpYVdFOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSkRiMjF2Y205elhDSStRMjl0YjNKdmN6eGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa052YjJzZ1NYTnNZVzVrYzF3aVBrTnZiMnNnU1hOc1lXNWtjenhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWtOdmMzUmhJRkpwWTJGY0lqNURiM04wWVNCU2FXTmhQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpUTNKdllYUnBZVndpUGtOeWIyRjBhV0U4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKRGRXSmhYQ0krUTNWaVlUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa04xY21GY2RUQXdaVGRoYjF3aVBrTjFjbUZjZFRBd1pUZGhienhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWtONWNISjFjMXdpUGtONWNISjFjenhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWtONlpXTm9JRkpsY0hWaWJHbGpYQ0krUTNwbFkyZ2dVbVZ3ZFdKc2FXTThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pFWlc1dFlYSnJYQ0krUkdWdWJXRnlhenhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWtScWFXSnZkWFJwWENJK1JHcHBZbTkxZEdrOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSkViMjFwYm1sallWd2lQa1J2YldsdWFXTmhQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpUkc5dGFXNXBZMkZ1SUZKbGNIVmliR2xqWENJK1JHOXRhVzVwWTJGdUlGSmxjSFZpYkdsalBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lSR1Z0YjJOeVlYUnBZeUJTWlhCMVlteHBZeUJ2WmlCMGFHVWdRMjl1WjI5Y0lqNUVaVzF2WTNKaGRHbGpJRkpsY0hWaWJHbGpJRzltSUhSb1pTQkRiMjVuYnp4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrVmhjM1FnVkdsdGIzSmNJajVGWVhOMElGUnBiVzl5UEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVJXTjFZV1J2Y2x3aVBrVmpkV0ZrYjNJOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSkZaM2x3ZEZ3aVBrVm5lWEIwUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVJXd2dVMkZzZG1Ga2IzSmNJajVGYkNCVFlXeDJZV1J2Y2p4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrVnhkV0YwYjNKcFlXd2dSM1ZwYm1WaFhDSStSWEYxWVhSdmNtbGhiQ0JIZFdsdVpXRThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pGY21sMGNtVmhYQ0krUlhKcGRISmxZVHhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWtWemRHOXVhV0ZjSWo1RmMzUnZibWxoUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVJYUm9hVzl3YVdGY0lqNUZkR2hwYjNCcFlUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa1poYkd0c1lXNWtJRWx6YkdGdVpITmNJajVHWVd4cmJHRnVaQ0JKYzJ4aGJtUnpQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpUm1scWFWd2lQa1pwYW1rOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSkdhVzVzWVc1a1hDSStSbWx1YkdGdVpEeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa1p5WVc1alpWd2lQa1p5WVc1alpUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa1p5Wlc1amFDQkhkV2xoYm1GY0lqNUdjbVZ1WTJnZ1IzVnBZVzVoUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVJuSmxibU5vSUZCdmJIbHVaWE5wWVZ3aVBrWnlaVzVqYUNCUWIyeDVibVZ6YVdFOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSkhZV0p2Ymx3aVBrZGhZbTl1UEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVIyRnRZbWxoWENJK1IyRnRZbWxoUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVIyVnZjbWRwWVZ3aVBrZGxiM0puYVdFOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSkhaWEp0WVc1NVhDSStSMlZ5YldGdWVUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa2RvWVc1aFhDSStSMmhoYm1FOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSkhhV0p5WVd4MFlYSmNJajVIYVdKeVlXeDBZWEk4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKSGNtVmxZMlZjSWo1SGNtVmxZMlU4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKSGNtVmxibXhoYm1SY0lqNUhjbVZsYm14aGJtUThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pIY21WdVlXUmhYQ0krUjNKbGJtRmtZVHhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWtkMVlXUmxiRzkxY0dWY0lqNUhkV0ZrWld4dmRYQmxQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpUjNWaGJWd2lQa2QxWVcwOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSkhkV0YwWlcxaGJHRmNJajVIZFdGMFpXMWhiR0U4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKSGRXVnlibk5sZVZ3aVBrZDFaWEp1YzJWNVBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lSM1ZwYm1WaFhDSStSM1ZwYm1WaFBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lSM1ZwYm1WaElFSnBjM05oZFZ3aVBrZDFhVzVsWVNCQ2FYTnpZWFU4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKSGRYbGhibUZjSWo1SGRYbGhibUU4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKSVlXbDBhVndpUGtoaGFYUnBQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpU0dWaGNtUWdTWE5zWVc1a0lHRnVaQ0JOWTBSdmJtRnNaQ0JKYzJ4aGJtUnpYQ0krU0dWaGNtUWdTWE5zWVc1a0lHRnVaQ0JOWTBSdmJtRnNaQ0JKYzJ4aGJtUnpQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpU0c5c2VTQlRaV1ZjSWo1SWIyeDVJRk5sWlR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lraHZibVIxY21GelhDSStTRzl1WkhWeVlYTThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pJYjI1bklFdHZibWRjSWo1SWIyNW5JRXR2Ym1jOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSklkVzVuWVhKNVhDSStTSFZ1WjJGeWVUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa2xqWld4aGJtUmNJajVKWTJWc1lXNWtQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpU1c1a2FXRmNJajVKYm1ScFlUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa2x1Wkc5dVpYTnBZVndpUGtsdVpHOXVaWE5wWVR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrbHlZVzVjSWo1SmNtRnVQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpU1hKaGNWd2lQa2x5WVhFOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSkpjbVZzWVc1a1hDSStTWEpsYkdGdVpEeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa2x6Y21GbGJGd2lQa2x6Y21GbGJEeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa2x6YkdVZ2IyWWdUV0Z1WENJK1NYTnNaU0J2WmlCTllXNDhYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pKZEdGc2VWd2lQa2wwWVd4NVBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lTWFp2Y25rZ1EyOWhjM1JjSWo1SmRtOXllU0JEYjJGemREeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa3BoYldGcFkyRmNJajVLWVcxaGFXTmhQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpU21Gd1lXNWNJajVLWVhCaGJqeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa3BsY25ObGVWd2lQa3BsY25ObGVUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa3B2Y21SaGJsd2lQa3B2Y21SaGJqeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa3RoZW1GcmFITjBZVzVjSWo1TFlYcGhhMmh6ZEdGdVBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lTMlZ1ZVdGY0lqNUxaVzU1WVR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrdHBjbWxpWVhScFhDSStTMmx5YVdKaGRHazhYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pMYjNOdmRtOWNJajVMYjNOdmRtODhYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pMZFhkaGFYUmNJajVMZFhkaGFYUThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pMZVhKbmVYcHpkR0Z1WENJK1MzbHlaM2w2YzNSaGJqeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa3hoYjNOY0lqNU1ZVzl6UEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVRHRjBkbWxoWENJK1RHRjBkbWxoUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVRHVmlZVzV2Ymx3aVBreGxZbUZ1YjI0OFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSk1aWE52ZEdodlhDSStUR1Z6YjNSb2J6eGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa3hwWW1WeWFXRmNJajVNYVdKbGNtbGhQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpVEdsaWVXRmNJajVNYVdKNVlUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJa3hwWldOb2RHVnVjM1JsYVc1Y0lqNU1hV1ZqYUhSbGJuTjBaV2x1UEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVRHbDBhSFZoYm1saFhDSStUR2wwYUhWaGJtbGhQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpVEhWNFpXMWliM1Z5WjF3aVBreDFlR1Z0WW05MWNtYzhYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pOWVdOaGIxd2lQazFoWTJGdlBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lUV0ZqWldSdmJtbGhYQ0krVFdGalpXUnZibWxoUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVRXRmtZV2RoYzJOaGNsd2lQazFoWkdGbllYTmpZWEk4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKTllXeGhkMmxjSWo1TllXeGhkMms4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKTllXeGhlWE5wWVZ3aVBrMWhiR0Y1YzJsaFBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lUV0ZzWkdsMlpYTmNJajVOWVd4a2FYWmxjenhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWsxaGJHbGNJajVOWVd4cFBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lUV0ZzZEdGY0lqNU5ZV3gwWVR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrMWhjbk5vWVd4c0lFbHpiR0Z1WkhOY0lqNU5ZWEp6YUdGc2JDQkpjMnhoYm1SelBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lUV0Z5ZEdsdWFYRjFaVndpUGsxaGNuUnBibWx4ZFdVOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSk5ZWFZ5YVhSaGJtbGhYQ0krVFdGMWNtbDBZVzVwWVR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrMWhkWEpwZEdsMWMxd2lQazFoZFhKcGRHbDFjenhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWsxaGVXOTBkR1ZjSWo1TllYbHZkSFJsUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVRXVjRhV052WENJK1RXVjRhV052UEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVRXbGpjbTl1WlhOcFlWd2lQazFwWTNKdmJtVnphV0U4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKTmIyeGtiM1poWENJK1RXOXNaRzkyWVR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrMXZibUZqYjF3aVBrMXZibUZqYnp4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrMXZibWR2YkdsaFhDSStUVzl1WjI5c2FXRThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pOYjI1MFpXNWxaM0p2WENJK1RXOXVkR1Z1WldkeWJ6eGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJazF2Ym5SelpYSnlZWFJjSWo1TmIyNTBjMlZ5Y21GMFBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lUVzl5YjJOamIxd2lQazF2Y205alkyODhYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pOYjNwaGJXSnBjWFZsWENJK1RXOTZZVzFpYVhGMVpUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJazE1WVc1dFlYSmNJajVOZVdGdWJXRnlQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpVG1GdGFXSnBZVndpUGs1aGJXbGlhV0U4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKT1lYVnlkVndpUGs1aGRYSjFQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpVG1Wd1lXeGNJajVPWlhCaGJEeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJazVsZEdobGNteGhibVJ6WENJK1RtVjBhR1Z5YkdGdVpITThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pPWlhjZ1EyRnNaV1J2Ym1saFhDSStUbVYzSUVOaGJHVmtiMjVwWVR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lrNWxkeUJhWldGc1lXNWtYQ0krVG1WM0lGcGxZV3hoYm1ROFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSk9hV05oY21GbmRXRmNJajVPYVdOaGNtRm5kV0U4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKT2FXZGxjbHdpUGs1cFoyVnlQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpVG1sblpYSnBZVndpUGs1cFoyVnlhV0U4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKT2FYVmxYQ0krVG1sMVpUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJazV2Y25Sb0lFdHZjbVZoWENJK1RtOXlkR2dnUzI5eVpXRThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pPYjNKMGFHVnliaUJOWVhKcFlXNWhJRWx6YkdGdVpITmNJajVPYjNKMGFHVnliaUJOWVhKcFlXNWhJRWx6YkdGdVpITThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pPYjNKM1lYbGNJajVPYjNKM1lYazhYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pQYldGdVhDSStUMjFoYmp4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lsQmhhMmx6ZEdGdVhDSStVR0ZyYVhOMFlXNDhYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pRWVd4aGRWd2lQbEJoYkdGMVBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lVR0ZzWlhOMGFXNWxYQ0krVUdGc1pYTjBhVzVsUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVVHRnVZVzFoWENJK1VHRnVZVzFoUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVVHRndkV0VnVG1WM0lFZDFhVzVsWVZ3aVBsQmhjSFZoSUU1bGR5QkhkV2x1WldFOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSlFZWEpoWjNWaGVWd2lQbEJoY21GbmRXRjVQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpVUdWeWRWd2lQbEJsY25VOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSlFhR2xzYVhCd2FXNWxjMXdpUGxCb2FXeHBjSEJwYm1WelBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lVR2wwWTJGcGNtNWNJajVRYVhSallXbHlianhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWxCdmJHRnVaRndpUGxCdmJHRnVaRHhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWxCdmNuUjFaMkZzWENJK1VHOXlkSFZuWVd3OFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSlFkV1Z5ZEc4Z1VtbGpiMXdpUGxCMVpYSjBieUJTYVdOdlBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lVV0YwWVhKY0lqNVJZWFJoY2p4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lsSmxjSFZpYkdsaklHOW1JSFJvWlNCRGIyNW5iMXdpUGxKbGNIVmliR2xqSUc5bUlIUm9aU0JEYjI1bmJ6eGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJbEpjZFRBd1pUbDFibWx2Ymx3aVBsSmNkVEF3WlRsMWJtbHZianhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWxKdmJXRnVhV0ZjSWo1U2IyMWhibWxoUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVVuVnpjMmxoWENJK1VuVnpjMmxoUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVVuZGhibVJoWENJK1VuZGhibVJoUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVUyRnBiblFnUW1GeWRHaGxiR1Z0ZVZ3aVBsTmhhVzUwSUVKaGNuUm9aV3hsYlhrOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSlRZV2x1ZENCSVpXeGxibUVzSUVGelkyVnVjMmx2YmlCaGJtUWdWSEpwYzNSaGJpQmtZU0JEZFc1b1lWd2lQbE5oYVc1MElFaGxiR1Z1WVN3Z1FYTmpaVzV6YVc5dUlHRnVaQ0JVY21semRHRnVJR1JoSUVOMWJtaGhQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpVTJGcGJuUWdTMmwwZEhNZ1lXNWtJRTVsZG1selhDSStVMkZwYm5RZ1MybDBkSE1nWVc1a0lFNWxkbWx6UEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVUyRnBiblFnVEhWamFXRmNJajVUWVdsdWRDQk1kV05wWVR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lsTmhhVzUwSUUxaGNuUnBibHdpUGxOaGFXNTBJRTFoY25ScGJqeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJbE5oYVc1MElGQnBaWEp5WlNCaGJtUWdUV2x4ZFdWc2IyNWNJajVUWVdsdWRDQlFhV1Z5Y21VZ1lXNWtJRTFwY1hWbGJHOXVQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpVTJGcGJuUWdWbWx1WTJWdWRDQmhibVFnZEdobElFZHlaVzVoWkdsdVpYTmNJajVUWVdsdWRDQldhVzVqWlc1MElHRnVaQ0IwYUdVZ1IzSmxibUZrYVc1bGN6eGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJbE5oYlc5aFhDSStVMkZ0YjJFOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSlRZVzRnVFdGeWFXNXZYQ0krVTJGdUlFMWhjbWx1Ynp4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lsTmhieUJVYjIxbElHRnVaQ0JRY21sdVkybHdaVndpUGxOaGJ5QlViMjFsSUdGdVpDQlFjbWx1WTJsd1pUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJbE5oZFdScElFRnlZV0pwWVZ3aVBsTmhkV1JwSUVGeVlXSnBZVHhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWxObGJtVm5ZV3hjSWo1VFpXNWxaMkZzUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVUyVnlZbWxoWENJK1UyVnlZbWxoUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVUyVjVZMmhsYkd4bGMxd2lQbE5sZVdOb1pXeHNaWE04WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKVGFXVnljbUVnVEdWdmJtVmNJajVUYVdWeWNtRWdUR1Z2Ym1VOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSlRhVzVuWVhCdmNtVmNJajVUYVc1bllYQnZjbVU4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKVGJHOTJZV3RwWVZ3aVBsTnNiM1poYTJsaFBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lVMnh2ZG1WdWFXRmNJajVUYkc5MlpXNXBZVHhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWxOdmJHOXRiMjRnU1hOc1lXNWtjMXdpUGxOdmJHOXRiMjRnU1hOc1lXNWtjenhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWxOdmJXRnNhV0ZjSWo1VGIyMWhiR2xoUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVUyOTFkR2dnUVdaeWFXTmhYQ0krVTI5MWRHZ2dRV1p5YVdOaFBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lVMjkxZEdnZ1IyVnZjbWRwWVNCaGJtUWdkR2hsSUZOdmRYUm9JRk5oYm1SM2FXTm9JRWx6YkdGdVpITmNJajVUYjNWMGFDQkhaVzl5WjJsaElHRnVaQ0IwYUdVZ1UyOTFkR2dnVTJGdVpIZHBZMmdnU1hOc1lXNWtjenhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWxOdmRYUm9JRXR2Y21WaFhDSStVMjkxZEdnZ1MyOXlaV0U4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKVGIzVjBhQ0JUZFdSaGJsd2lQbE52ZFhSb0lGTjFaR0Z1UEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVUzQmhhVzVjSWo1VGNHRnBianhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWxOeWFTQk1ZVzVyWVZ3aVBsTnlhU0JNWVc1cllUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJbE4yWVd4aVlYSmtJR0Z1WkNCS1lXNGdUV0Y1Wlc1Y0lqNVRkbUZzWW1GeVpDQmhibVFnU21GdUlFMWhlV1Z1UEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVUzVmtZVzVjSWo1VGRXUmhianhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWxOMWNtbHVZVzFsWENJK1UzVnlhVzVoYldVOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSlRkMkY2YVd4aGJtUmNJajVUZDJGNmFXeGhibVE4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKVGQyVmtaVzVjSWo1VGQyVmtaVzQ4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKVGQybDBlbVZ5YkdGdVpGd2lQbE4zYVhSNlpYSnNZVzVrUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVUzbHlhV0ZjSWo1VGVYSnBZVHhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWxSaGFHbDBhVndpUGxSaGFHbDBhVHhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWxSaGFYZGhibHdpUGxSaGFYZGhianhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWxSaGFtbHJhWE4wWVc1Y0lqNVVZV3BwYTJsemRHRnVQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpVkdGdWVtRnVhV0ZjSWo1VVlXNTZZVzVwWVR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lsUm9ZV2xzWVc1a1hDSStWR2hoYVd4aGJtUThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pVYjJkdlhDSStWRzluYnp4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lsUnZhMlZzWVhWY0lqNVViMnRsYkdGMVBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lWRzl1WjJGY0lqNVViMjVuWVR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lsUnlhVzVwWkdGa0lHRnVaQ0JVYjJKaFoyOWNJajVVY21sdWFXUmhaQ0JoYm1RZ1ZHOWlZV2R2UEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVZIVnVhWE5wWVZ3aVBsUjFibWx6YVdFOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSlVkWEpyWlhsY0lqNVVkWEpyWlhrOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSlVkWEpyYldWdWFYTjBZVzVjSWo1VWRYSnJiV1Z1YVhOMFlXNDhYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pVZFhKcmN5QmhibVFnUTJGcFkyOXpJRWx6YkdGdVpITmNJajVVZFhKcmN5QmhibVFnUTJGcFkyOXpJRWx6YkdGdVpITThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pVZFhaaGJIVmNJajVVZFhaaGJIVThYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pWYm1sMFpXUWdTMmx1WjJSdmJWd2lQbFZ1YVhSbFpDQkxhVzVuWkc5dFBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lWVzVwZEdWa0lGTjBZWFJsYzF3aVBsVnVhWFJsWkNCVGRHRjBaWE04WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKVmJtdHViM2R1WENJK1ZXNXJibTkzYmp4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lsVm5ZVzVrWVZ3aVBsVm5ZVzVrWVR4Y0wyOXdkR2x2Ymo1Y2NseHVQRzl3ZEdsdmJpQjJZV3gxWlQxY0lsVnJjbUZwYm1WY0lqNVZhM0poYVc1bFBGd3ZiM0IwYVc5dVBseHlYRzQ4YjNCMGFXOXVJSFpoYkhWbFBWd2lWVzVwZEdWa0lFRnlZV0lnUlcxcGNtRjBaWE5jSWo1VmJtbDBaV1FnUVhKaFlpQkZiV2x5WVhSbGN6eGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJbFZ5ZFdkMVlYbGNJajVWY25WbmRXRjVQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpVlhwaVpXdHBjM1JoYmx3aVBsVjZZbVZyYVhOMFlXNDhYQzl2Y0hScGIyNCtYSEpjYmp4dmNIUnBiMjRnZG1Gc2RXVTlYQ0pXWVc1MVlYUjFYQ0krVm1GdWRXRjBkVHhjTDI5d2RHbHZiajVjY2x4dVBHOXdkR2x2YmlCMllXeDFaVDFjSWxabGJtVjZkV1ZzWVZ3aVBsWmxibVY2ZFdWc1lUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJbFpwWlhSdVlXMWNJajVXYVdWMGJtRnRQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpVm1seVoybHVJRWx6YkdGdVpITWdLRUp5YVhScGMyZ3BYQ0krVm1seVoybHVJRWx6YkdGdVpITWdLRUp5YVhScGMyZ3BQRnd2YjNCMGFXOXVQbHh5WEc0OGIzQjBhVzl1SUhaaGJIVmxQVndpVm1seVoybHVJRWx6YkdGdVpITWdLRlV1VXk0cFhDSStWbWx5WjJsdUlFbHpiR0Z1WkhNZ0tGVXVVeTRwUEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVYyRnNiR2x6SUdGdVpDQkdkWFIxYm1GY0lqNVhZV3hzYVhNZ1lXNWtJRVoxZEhWdVlUeGNMMjl3ZEdsdmJqNWNjbHh1UEc5d2RHbHZiaUIyWVd4MVpUMWNJbGRsYzNSbGNtNGdVMkZvWVhKaFhDSStWMlZ6ZEdWeWJpQlRZV2hoY21FOFhDOXZjSFJwYjI0K1hISmNianh2Y0hScGIyNGdkbUZzZFdVOVhDSlpaVzFsYmx3aVBsbGxiV1Z1UEZ3dmIzQjBhVzl1UGx4eVhHNDhiM0IwYVc5dUlIWmhiSFZsUFZ3aVdYVm5iM05zWVhacFlWd2lQbGwxWjI5emJHRjJhV0U4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKYVlXMWlhV0ZjSWo1YVlXMWlhV0U4WEM5dmNIUnBiMjQrWEhKY2JqeHZjSFJwYjI0Z2RtRnNkV1U5WENKYWFXMWlZV0ozWlZ3aVBscHBiV0poWW5kbFBGd3ZiM0IwYVc5dVBseHlYRzQ4WEM5elpXeGxZM1ErUEZ3dlpHbDJQbHh5WEc0OFhDOWthWFkrWEhKY2JqeGthWFlnYVdROVhDSnRZWFYwYVdObWIzSnRYM2hwZEdSbGRtVnNiM0JsY25OcGJuUmxjblpwWlhkbWIzSnRYM0psY1hWcGNtVmtYM05yYVd4c2MyVjBYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFhKdmR5QnRZWFYwYVdObWIzSnRMWFJsZUhRZ2JXRjFkR2xqWm05eWJTMW1hV1ZzWkMwMlhDSStQR3hoWW1Wc0lHbGtQVndpYldGMWRHbGpabTl5YlY5c1lXSmxiRjk0YVhSa1pYWmxiRzl3WlhKemFXNTBaWEoyYVdWM1ptOXliVjl5WlhGMWFYSmxaRjl6YTJsc2JITmxkRndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxc1lXSmxiRndpSUdadmNqMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWkdWMlpXeHZjR1Z5YzJsdWRHVnlkbWxsZDJadmNtMWZjbVZ4ZFdseVpXUmZjMnRwYkd4elpYUmNJajVTWlhGMWFYSmxaQ0JUYTJsc2JITmxkRHhjTDJ4aFltVnNQbHh5WEc0OGRHVjRkR0Z5WldFZ2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDJsdWNIVjBYM2hwZEdSbGRtVnNiM0JsY25OcGJuUmxjblpwWlhkbWIzSnRYM0psY1hWcGNtVmtYM05yYVd4c2MyVjBYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFhSbGVIUmhjbVZoSUdadmNtMHRhVzV3ZFhSY0lpQnVZVzFsUFZ3aWJXRjFkR2xqWm05eWJWdHlaWEYxYVhKbFpGOXphMmxzYkhObGRGMWNJaUJ3YkdGalpXaHZiR1JsY2oxY0lrVnVkR1Z5SUZKbGNYVnBjbVZrSUZOcmFXeHNjMlYwWENJK1BGd3ZkR1Y0ZEdGeVpXRStQRnd2WkdsMlBseHlYRzQ4WkdsMklHbGtQVndpYldGMWRHbGpabTl5YlY5NGFYUmtaWFpsYkc5d1pYSnphVzUwWlhKMmFXVjNabTl5YlY5emRYQndiM0owYVc1blgyUnZZM1Z0Wlc1MFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMWEp2ZHlCdFlYVjBhV05tYjNKdExXWnBiR1VnYldGMWRHbGpabTl5YlMxbWFXVnNaQzB4TUZ3aVBqeHNZV0psYkNCcFpEMWNJbTFoZFhScFkyWnZjbTFmYkdGaVpXeGZlR2wwWkdWMlpXeHZjR1Z5YzJsdWRHVnlkbWxsZDJadmNtMWZjM1Z3Y0c5eWRHbHVaMTlrYjJOMWJXVnVkRndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxc1lXSmxiRndpSUdadmNqMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWkdWMlpXeHZjR1Z5YzJsdWRHVnlkbWxsZDJadmNtMWZjM1Z3Y0c5eWRHbHVaMTlrYjJOMWJXVnVkRndpUGxOMWNIQnZjblJwYm1jZ1JHOWpkVzFsYm5ROFhDOXNZV0psYkQ1Y2NseHVQR2x1Y0hWMElHbGtQVndpYldGMWRHbGpabTl5YlY5cGJuQjFkRjk0YVhSa1pYWmxiRzl3WlhKemFXNTBaWEoyYVdWM1ptOXliVjl6ZFhCd2IzSjBhVzVuWDJSdlkzVnRaVzUwWENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExXbHVjSFYwSUhObGJHVmpkQzFtYVd4bElHWnZjbTB0YVc1d2RYUmNJaUJ1WVcxbFBWd2liV0YxZEdsalptOXliVnR6ZFhCd2IzSjBhVzVuWDJSdlkzVnRaVzUwWFZ3aUlIUjVjR1U5WENKbWFXeGxYQ0lnZG1Gc2RXVTlYQ0pjSWlCd2JHRmpaV2h2YkdSbGNqMWNJbE5sYkdWamRDQkdhV3hsWENJZ1hDOCtQRnd2WkdsMlBseHlYRzQ4WkdsMklHbGtQVndpYldGMWRHbGpabTl5YlY5NGFYUmtaWFpsYkc5d1pYSnphVzUwWlhKMmFXVjNabTl5YlY5emRXSnRhWFJjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0WW5WMGRHOXVMWGR5WVhCd1pYSWdiV0YxZEdsalptOXliUzFtYVdWc1pDMHhNVndpUGp4aWRYUjBiMjRnYVdROVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR1JsZG1Wc2IzQmxjbk5wYm5SbGNuWnBaWGRtYjNKdFgzTjFZbTFwZEZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMWlkWFIwYjI0Z1luUnVJR0owYmkxa1pXWmhkV3gwWENJZ2JtRnRaVDFjSW0xaGRYUnBZMlp2Y20xYmMzVmliV2wwWFZ3aUlIUjVjR1U5WENKemRXSnRhWFJjSWlCMllXeDFaVDFjSWx3aVBsTjFZbTFwZER4Y0wySjFkSFJ2Ymo0OFhDOWthWFkrWEhKY2JqeGNMMlJwZGo1Y2NseHVQRnd2WkdsMlBseHlYRzQ4YVc1d2RYUWdhV1E5WENKdFlYVjBhV05tYjNKdFgzaHBkR1JsZG1Wc2IzQmxjbk5wYm5SbGNuWnBaWGRtYjNKdFgybGtYQ0lnYm1GdFpUMWNJbTFoZFhScFkyWnZjbTFiWm05eWJVbGtYVndpSUhSNWNHVTlYQ0pvYVdSa1pXNWNJaUIyWVd4MVpUMWNJakV3WENJZ1hDOCtYSEpjYmp4cGJuQjFkQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwWkdWMlpXeHZjR1Z5YzJsdWRHVnlkbWxsZDJadmNtMWZjbVYwZFhKdVhDSWdibUZ0WlQxY0ltMWhkWFJwWTJadmNtMWJjbVYwZFhKdVhWd2lJSFI1Y0dVOVhDSm9hV1JrWlc1Y0lpQjJZV3gxWlQxY0lsd2lJRnd2UGx4eVhHNDhhVzV3ZFhRZ2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDNocGRHUmxkbVZzYjNCbGNuTnBiblJsY25acFpYZG1iM0p0WDI1aGJXVmNJaUJ1WVcxbFBWd2liV0YxZEdsalptOXliVnRtYjNKdFRtRnRaVjFjSWlCMGVYQmxQVndpYUdsa1pHVnVYQ0lnZG1Gc2RXVTlYQ0o0YVhSa1pYWmxiRzl3WlhKemFXNTBaWEoyYVdWM1ptOXliVndpSUZ3dlBseHlYRzVjY2x4dVBGd3ZabTl5YlQ0OFhDOWthWFkrWEhKY2JqeGNMMlJwZGo0aUxDSnZibTltWm5OM2FYUmphQ0k2SWs5dUlpd2ljMmh2ZDE5dmJteDVYMlp2Y2w5aGRYUm9iM0lpT2lKdlptWWlMQ0p6YUc5M1gyRnNiQ0k2SW1Gc2JDSXNJbVJsYkdGNUlqb2lNQ0lzSW5OamNtOXNiRjkwYjNBaU9pSXdJaXdpWVc1cGJXRjBaVjlwYmlJNkltWmhaR1ZKYmlJc0ltRnVhVzFoZEdWZmIzVjBJam9pWm1Ga1pVOTFkQ0lzSW1GamRHbHZibDlpZFhSMGIyNGlPaUl1ZEdWamFDMWpkR0V0WW5WMGRHOXVJR0oxZEhSdmJpSXNJblpwWlhkZmNHeGhZMlVpT2lJaUxDSmhZM1JwYjI1ZlluVjBkRzl1WDNSNWNHVWlPaUpqYkdsamExTmxiR1ZqZEc5eUlpd2liVzlrWVd4ZlkyOXVkR1Z1ZENJNkltTjFjM1J2YlY5b2RHMXNJaXdpZG1sbGQxOTBlWEJsSWpvaVpHVm1ZWFZzZENJc0ltOXViMlptYjNabGNteGhlU0k2SWs5dUlpd2liM1psY214aGVWOXZjR0ZqYVhSNUlqb2lNQzQxTURBd01EQWlMQ0p6YUc5M1gzQnZjSFZ3WDNScGRHeGxJam9pVDJabUlpd2ljMmh2ZDE5d2IzQjFjRjlrWlhOaklqb2lUMlptSWl3aVkyeHZjMlZmWW5WMGRHOXVJam9pYjJabUlpd2lhR1ZoWkdWeVgySm5ZMjlzYjNJaU9pSWpabVptWm1abUlpd2lZbWRmYVcxaFoyVWlPaUlpTENKc2IyZGZkWE5sY2lJNklrOXVJaXdpWjNWbGMzUWlPaUpQYmlJc0ltRmpkR2wyWlY5a1lYUmxYMk5vWldOcklqb2liMlptSWl3aVlXTjBhWFpsU1c1MFpYSjJZV3dpT2lJeU1ESTBMVEF4TFRBNUlERTBPakUyT2pReElpd2laR1ZoWTNScGRtVkpiblJsY25aaGJDSTZJakl3TWpRdE1ERXRNRGtnTVRRNk1UWTZOREVpTENKd1lsOXdiM05wZEdsdmJpSTZJbU5sYm5SbGNpMWpaVzUwWlhJaUxDSndZbDl0WVhKbmFXNGlPaUl3SWl3aWIzQjBhVzl1Y3lJNkludGNJbVZ1WVdKc1pWOWlZV05yWjNKdmRXNWtYMmR5WVdScFpXNTBYQ0k2WENKdlptWmNJaXhjSW1KaFkydG5jbTkxYm1SZlozSmhaR2xsYm5SZlkyOXNiM0pmTVZ3aU9sd2lJekF3TUZ3aUxGd2lZbUZqYTJkeWIzVnVaRjluY21Ga2FXVnVkRjlqYjJ4dmNsOHlYQ0k2WENJalptWm1YQ0lzWENKd1lsOW5jbUZrYVdWdWRGOWthWEpsWTNScGIyNWNJanBjSW5abGNuUnBZMkZzWENJc1hDSmxlR05sY0hSZmNHOXpkRjkwZVhCbGMxd2lPbHRkTEZ3aVpYaGpaWEIwWDNCdmMzUnpYQ0k2VzEwc1hDSmhiR3hmY0c5emRITmNJanBjSWx3aUxGd2lZMnh2YzJWZlluVjBkRzl1WDJSbGJHRjVYQ0k2TUN4Y0ltTnNiM05sWDJKMWRIUnZibDlrWld4aGVWOW1iM0pmYlc5aWFXeGxYQ0k2TUN4Y0ltVnVZV0pzWlY5amJHOXpaVjlpZFhSMGIyNWZaR1ZzWVhsZlptOXlYMjF2WW1sc1pWd2lPbHdpYjJabVhDSXNYQ0psYm1GaWJHVmZjR0pmYzI5MWJtUmNJanBjSW05bVpsd2lMRndpYjNabGNteGhlVjlqYjJ4dmNsd2lPbHdpSXpBd01Gd2lMRndpWVc1cGJXRjBhVzl1WDNOd1pXVmtYQ0k2TVN4Y0ltTnNiM05sWDJGdWFXMWhkR2x2Ymw5emNHVmxaRndpT2pFc1hDSndZbDl0YjJKcGJHVmNJanBjSW05bVpsd2lMRndpWTJ4dmMyVmZZblYwZEc5dVgzUmxlSFJjSWpwY0lseGNkVEkzTVRWY0lpeGNJbVZ1WVdKc1pWOWpiRzl6WlY5aWRYUjBiMjVmZEdWNGRGOXRiMkpwYkdWY0lqcGNJbTl1WENJc1hDSmpiRzl6WlY5aWRYUjBiMjVmZEdWNGRGOXRiMkpwYkdWY0lqcGNJbHhjZFRJM01UVmNJaXhjSW1Oc2IzTmxYMkoxZEhSdmJsOW9iM1psY2w5MFpYaDBYQ0k2WENKY0lpeGNJbTF2WW1sc1pWOTNhV1IwYUZ3aU9sd2lYQ0lzWENKdGIySnBiR1ZmYldGNFgzZHBaSFJvWENJNlhDSmNJaXhjSW0xdlltbHNaVjlvWldsbmFIUmNJanBjSWx3aUxGd2lZMnh2YzJWZlluVjBkRzl1WDNCdmMybDBhVzl1WENJNlhDSnlhV2RvZEMxMGIzQmNJaXhjSW1WdVlXSnNaVjlqYkc5elpWOWlkWFIwYjI1ZmNHOXphWFJwYjI1ZmJXOWlhV3hsWENJNlhDSnZabVpjSWl4Y0ltTnNiM05sWDJKMWRIUnZibDl3YjNOcGRHbHZibDl0YjJKcGJHVmNJanBjSW5KcFoyaDBMWFJ2Y0Z3aUxGd2ljMmh2ZDE5dmJteDVYMjl1WTJWY0lqcGNJbTltWmx3aUxGd2ljMmh2ZDE5dmJsOW9iMjFsWDNCaFoyVmNJanBjSW05bVpsd2lMRndpWTJ4dmMyVmZjRzl3ZFhCZlpYTmpYQ0k2WENKdmJsd2lMRndpY0c5d2RYQmZkMmxrZEdoZllubGZjR1Z5WTJWdWRHRm5aVjl3ZUZ3aU9sd2ljR2w0Wld4elhDSXNYQ0p3YjNCMWNGOWpiMjUwWlc1MFgzQmhaR1JwYm1kY0lqb3lNQ3hjSW5CdmNIVndYM0JoWkdScGJtZGZZbmxmY0dWeVkyVnVkR0ZuWlY5d2VGd2lPbHdpY0dsNFpXeHpYQ0lzWENKd1lsOW1iMjUwWDJaaGJXbHNlVndpT2x3aVNXNW9aWEpwZEZ3aUxGd2lZMnh2YzJWZmNHOXdkWEJmYjNabGNteGhlVndpT2x3aWIyNWNJaXhjSW1Oc2IzTmxYM0J2Y0hWd1gyOTJaWEpzWVhsZmJXOWlhV3hsWENJNlhDSnZibHdpTEZ3aVpXNWhZbXhsWDNCaVgyWjFiR3h6WTNKbFpXNWNJanBjSW05bVpsd2lMRndpWlc1aFlteGxYMmhwWkdWZmRHbHRaWEpjSWpwY0ltOW1abHdpTEZ3aVpXNWhZbXhsWDJGMWRHOWpiRzl6WlY5dmJsOWpiMjF3YkdWMGFXOXVYQ0k2WENKdlptWmNJaXhjSW1WdVlXSnNaVjl6YjJOcFlXeGZiR2x1YTNOY0lqcGNJbTltWmx3aUxGd2ljMjlqYVdGc1gyeHBibXR6WENJNmUxd2liR2x1YTJWa2FXNWZiR2x1YTF3aU9sd2lYQ0lzWENKbVlXTmxZbTl2YTE5c2FXNXJYQ0k2WENKY0lpeGNJblIzYVhSMFpYSmZiR2x1YTF3aU9sd2lYQ0lzWENKMmEyOXVkR0ZyZEdWZmJHbHVhMXdpT2x3aVhDSXNYQ0o1YjNWMGRXSmxYMnhwYm10Y0lqcGNJbHdpTEZ3aWFXNXpkR0ZuY21GdFgyeHBibXRjSWpwY0lsd2lMRndpWW1Wb1lXNWpaVjlzYVc1clhDSTZYQ0pjSW4wc1hDSnpiMk5wWVd4ZlluVjBkRzl1YzE5b1pXRmthVzVuWENJNlhDSmNJaXhjSW1Oc2IzTmxYMkoxZEhSdmJsOXphWHBsWENJNk1TeGNJbU5zYjNObFgySjFkSFJ2Ymw5cGJXRm5aVndpT2x3aVhDSXNYQ0ppYjNKa1pYSmZjM1I1YkdWY0lqcGNJa1J2ZEhSbFpGd2lMRndpWVhselgzQmlYMmh2ZG1WeVgzTm9iM2RmWTJ4dmMyVmZZblJ1WENJNlhDSnZabVpjSWl4Y0ltUnBjMkZpYkdWZmMyTnliMnhzWENJNlhDSnZabVpjSWl4Y0ltUnBjMkZpYkdWZmMyTnliMnhzWDIxdlltbHNaVndpT2x3aWIyWm1YQ0lzWENKbGJtRmliR1ZmYjNCbGJsOWtaV3hoZVY5dGIySnBiR1ZjSWpwY0ltOW1abHdpTEZ3aWIzQmxibDlrWld4aGVWOXRiMkpwYkdWY0lqcGNJakJjSWl4Y0ltVnVZV0pzWlY5elkzSnZiR3hmZEc5d1gyMXZZbWxzWlZ3aU9sd2liMlptWENJc1hDSnpZM0p2Ykd4ZmRHOXdYMjF2WW1sc1pWd2lPbHdpTUZ3aUxGd2laVzVoWW14bFgzQmlYM0J2YzJsMGFXOXVYMjF2WW1sc1pWd2lPbHdpYjJabVhDSXNYQ0p3WWw5d2IzTnBkR2x2Ymw5dGIySnBiR1ZjSWpwY0ltTmxiblJsY2kxalpXNTBaWEpjSWl4Y0luQmlYMkpuWDJsdFlXZGxYM0J2YzJsMGFXOXVYQ0k2WENKalpXNTBaWEl0WTJWdWRHVnlYQ0lzWENKd1lsOWlaMTlwYldGblpWOXphWHBwYm1kY0lqcGNJbU52ZG1WeVhDSXNYQ0oyYVdSbGIxOTBhR1Z0WlY5MWNteGNJanBjSWx3aUxGd2ljR0pmYldsdVgyaGxhV2RvZEZ3aU9sd2lYQ0lzWENKd1lsOW1iMjUwWDNOcGVtVmNJam94TXl4Y0luQmlYMlp2Ym5SZmMybDZaVjltYjNKZmJXOWlhV3hsWENJNk1UTXNYQ0p3WWw5MGFYUnNaVjkwWlhoMFgzTm9ZV1J2ZDF3aU9sd2ljbWRpWVNneU5UVXNNalUxTERJMU5Td3dLVndpTEZ3aVpXNWhZbXhsWDNCaVgzUnBkR3hsWDNSbGVIUmZjMmhoWkc5M1hDSTZYQ0p2Wm1aY0lpeGNJbkJpWDNScGRHeGxYM1JsZUhSZmMyaGhaRzkzWDNoZmIyWm1jMlYwWENJNk1peGNJbkJpWDNScGRHeGxYM1JsZUhSZmMyaGhaRzkzWDNsZmIyWm1jMlYwWENJNk1peGNJbkJpWDNScGRHeGxYM1JsZUhSZmMyaGhaRzkzWDNwZmIyWm1jMlYwWENJNk1DeGNJbU55WldGMFpWOWtZWFJsWENJNlhDSXlNREl6TFRFeUxUQTNJREUzT2pJd09qSXpYQ0lzWENKamNtVmhkR1ZmWVhWMGFHOXlYQ0k2Tml4Y0ltRjFkR2h2Y2x3aU9sd2llMXhjWENKcFpGeGNYQ0k2WEZ4Y0lqWmNYRndpTEZ4Y1hDSnVZVzFsWEZ4Y0lqcGNYRndpUzJGdFlXd2dVSFZ5YjJocGRGeGNYQ0o5WENJc1hDSmxibUZpYkdWZlpHbHpiV2x6YzF3aU9sd2liMlptWENJc1hDSmxibUZpYkdWZlpHbHpiV2x6YzE5MFpYaDBYQ0k2WENKRWFYTnRhWE56SUdGa1hDSXNYQ0psYm1GaWJHVmZZbTk0WDNOb1lXUnZkMXdpT2x3aWIyWm1YQ0lzWENKaWIzaGZjMmhoWkc5M1gyTnZiRzl5WENJNlhDSWpNREF3WENJc1hDSndZbDlpYjNoZmMyaGhaRzkzWDNoZmIyWm1jMlYwWENJNk1DeGNJbkJpWDJKdmVGOXphR0ZrYjNkZmVWOXZabVp6WlhSY0lqb3dMRndpY0dKZlltOTRYM05vWVdSdmQxOTZYMjltWm5ObGRGd2lPakUxTEZ3aVpHbHpZV0pzWlY5elkzSnZiR3hmYjI1ZmNHOXdkWEJjSWpwY0ltOW1abHdpTEZ3aVpHbHpZV0pzWlY5elkzSnZiR3hmYjI1ZmNHOXdkWEJmYlc5aWFXeGxYQ0k2WENKdlptWmNJaXhjSW5Ob2IzZGZjMk55YjJ4c1ltRnlYQ0k2WENKdlptWmNJaXhjSW1ocFpHVmZiMjVmY0dOY0lqcGNJbTltWmx3aUxGd2lhR2xrWlY5dmJsOTBZV0pzWlhSelhDSTZYQ0p2Wm1aY0lpeGNJbkJpWDJKblgybHRZV2RsWDJScGNtVmpkR2x2Ymw5dmJsOXRiMkpwYkdWY0lqcGNJbTl1WENJc1hDSmpiRzl6WlY5aWRYUjBiMjVmWTI5c2IzSmNJanBjSWlNd01EQXdNREJjSWl4Y0ltTnNiM05sWDJKMWRIUnZibDlvYjNabGNsOWpiMnh2Y2x3aU9sd2lJekF3TURBd01Gd2lMRndpWW14MWNtVmtYMjkyWlhKc1lYbGNJanBjSW05bVpsd2lMRndpWW14MWNtVmtYMjkyWlhKc1lYbGZiVzlpYVd4bFhDSTZYQ0p2Wm1aY0lpeGNJbkJpWDJGMWRHOWpiRzl6WlY5dGIySnBiR1ZjSWpwY0lqSXdYQ0lzWENKbGJtRmliR1ZmWVhWMGIyTnNiM05sWDJSbGJHRjVYM1JsZUhSZmJXOWlhV3hsWENJNlhDSnZabVpjSWl4Y0ltVnVZV0pzWlY5dmRtVnliR0Y1WDNSbGVIUmZiVzlpYVd4bFhDSTZYQ0p2Wm1aY0lpeGNJbTkyWlhKc1lYbGZiVzlpYVd4bFgyOXdZV05wZEhsY0lqcGNJakF1TlZ3aWZTSjlmUT09IjsKICAgICAgICAgICAgICAgIA==
4 ms
javascript;base64,aWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8zJykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0gZWxzZSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8zJykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0=
3 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiggJCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2Ugc3RyaWN0JzsKICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNob3dfb25seV9vbmNlID0gJ29mZic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNNb2JpbGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbG9zZVBvcHVwT3ZlcmxheSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNQYWdlU2Nyb2xsRGlzYWJsZWQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlUG9wdXBPdmVybGF5ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BhZ2VTY3JvbGxEaXNhYmxlZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuZGVkaWNhdGVkLW1vZGVsLWJ0biBidXR0b24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19tdXNpY19zb3VuZCcpLmNzcyh7J2Rpc3BsYXknOidibG9jayd9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzaG93X29ubHlfb25jZSA9PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmFqYXgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3d3dy54Y2VsbGVuY2UtaXQuY29tL3dwLWFkbWluL2FkbWluLWFqYXgucGhwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAncG9zdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F5c19wYl9zZXRfY29va2llX29ubHlfb25jZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQ2hvb3NlIERlZGljYXRlZCBSZXNvdXJjZSBNb2RlbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRhQXR0ciA9ICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMycpLmF0dHIoJ2RhdGEtYXlzLWZsYWcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX2ZsYWcgJiYgZGF0YUF0dHIgPT0gJ3RydWUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzMnKS5jc3MoJ2Rpc3BsYXknLCdibG9jaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzMnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ2F1dG8nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfMyBzcGFuJykuaHRtbCgkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzMgc3BhbicpLmF0dHIoJ2RhdGEtYXlzLW1vYmlsZS1zZWNvbmRzJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzMgc3BhbicpLmh0bWwoJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl8zIHNwYW4nKS5hdHRyKCdkYXRhLWF5cy1zZWNvbmRzJykpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcl9wYl8zID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzMnKS5yZW1vdmVDbGFzcygkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX21vZGFsX2FuaW1hdGVfb3V0XzMnKS52YWwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8zJykuYWRkQ2xhc3MoJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX2luXzMnKS52YWwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8zJykuY3NzKCdkaXNwbGF5JywgJ2Jsb2NrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4ICYmICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzMnKS5hdHRyKCdkYXRhLW1vYmlsZS1vdmVybGF5JykgPT0gJ3RydWUnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzMnKS5jc3MoeydvcGFjaXR5JzogJzAuNScsICdkaXNwbGF5JzogJ2Jsb2NrJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV8zJykuY3NzKHsnb3BhY2l0eSc6ICcwLjUwMDAwMCcsICdkaXNwbGF5JzogJ2Jsb2NrJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNoZWNrXzMnKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jaGVja18zJykuYXR0cignY2hlY2tlZCcsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItbW9kYWwtY2hlY2tib3hfMycpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQgPSAkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZF8zJykudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc2Vjb25kcyA9IChheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkIC8gMTAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvdW5kX3NyYyA9ICQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfc291bmRfMycpLmF0dHIoJ3NyYycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbG9zZV9zb3VuZF9zcmMgPSAkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzMnKS5hdHRyKCdzcmMnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCA9IHBhcnNlRmxvYXQoYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCkgLSA1MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX3NvdW5kXzMnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3BhdXNlX3NvdW5kXzMnKS5vbignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX3NvdW5kXzMnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jbG9zZSBzb3VuZCBzdGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiB0eXBlb2YgY2xvc2Vfc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyAmJiAnb2ZmJyA9PT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAhPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3BhdXNlX3NvdW5kXzMnKS5vbignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8zJykuZ2V0KDApLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzMgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8zJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzMnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMycpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfMycpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY2xvc2Ugc291bmQgZW5kCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aW1lX3BiX3N0cl8zID0gJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl8zIHNwYW4nKS5hdHRyKCdkYXRhLWF5cy1zZWNvbmRzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtb2JpbGVUaW1lciA9ICskKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzMgc3BhbicpLmF0dHIoJ2RhdGEtYXlzLW1vYmlsZS1zZWNvbmRzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfMyBzcGFuJykuaHRtbChtb2JpbGVUaW1lcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVfcGJfc3RyXzMgPSBtb2JpbGVUaW1lcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWVfcGJfMyA9IHBhcnNlSW50KHRpbWVfcGJfc3RyXzMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRpbWVfcGJfMyAhPT0gdW5kZWZpbmVkKXsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRpbWVfcGJfMyAhPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aW1lcl9wYl8zID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdUaW1lX3BiXzMgPSB0aW1lX3BiXzMtLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBheXNfcGJfZWZmZWN0T3V0XzMgPSAkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX21vZGFsX2FuaW1hdGVfb3V0XzMnKS52YWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfMyBzcGFuJykudGV4dChuZXdUaW1lX3BiXzMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8zJykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uLWR1cmF0aW9uJzogYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zZWNvbmRzICsgJ3MnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihuZXdUaW1lX3BiXzMgPD0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV8zJykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzMnKS5hdHRyKCdjbGFzcycsICdheXMtcGItbW9kYWwgYXlzLXBiLW1vZGFsXzMgZml4ZWQtcHJpY2UtcG9wdXAgZGVkaWNhdGVkLXJlc291cmNlcy1mb3JtICcrJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX291dF8zJykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfMyAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzMnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8zJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX3NvdW5kXzMnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCcxJyAmJiB0eXBlb2YgY2xvc2Vfc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyAmJiAnb2ZmJyA9PT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAhPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzMnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF8zICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzMnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzMnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMycpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8zJykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzMnKS5vbmUoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc18zJykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8zJykuYXR0cignY2xhc3MnLCAnYXlzLXBiLW1vZGFsIGF5cy1wYi1tb2RhbF8zIGZpeGVkLXByaWNlLXBvcHVwIGRlZGljYXRlZC1yZXNvdXJjZXMtZm9ybSAnK2F5c19wYl9lZmZlY3RPdXRfMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ2lmcmFtZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IC9odHRwczpcL1wvd3d3LnlvdXR1YmUuY29tLzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNyYyA9ICQodGhpcykuYXR0cignc3JjJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignc3JjJywgJCh0aGlzKS5hdHRyKCdzcmMnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ3ZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mICQodGhpcykuZ2V0KDApICE9ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISAkKHRoaXMpLmdldCgwKS5wYXVzZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5nZXQoMCkucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnYXVkaW8ud3AtYXVkaW8tc2hvcnRjb2RlJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2YgJCh0aGlzKS5nZXQoMCkgIT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhICQodGhpcykuZ2V0KDApLnBhdXNlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmdldCgwKS5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfMyAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8zJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMycpLmNzcygnZGlzcGxheScsICdub25lJyk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzMnKS5jc3MoeydvcGFjaXR5JzogJzAnLCAnZGlzcGxheSc6ICdub25lJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF5c19wYl9mbGFnID0gIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbigna2V5ZG93bicsIGZ1bmN0aW9uKGV2ZW50KSB7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiBheXNfcGJfZmxhZyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09IDI3KSB7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV8zJykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19wYl9mbGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfMycpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzMnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzMgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzMnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzMnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMycpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzMnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCdjbGlja1NlbGVjdG9yJyAhPSAnYm90aCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2xvc2VQb3B1cE92ZXJsYXkgJiYgJ09uJyA9PSAnT24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV8zJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9wYXJlbnRfZGl2ID0gJCh0aGlzKS5maW5kKCcuYXlzLXBiLW1vZGFscycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfZGl2ID0gJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJy5heXMtcGItbW9kYWxfMycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBiX3BhcmVudF9kaXYuaXMocGJfZGl2KSAmJiBwYl9wYXJlbnRfZGl2LmhhcyhwYl9kaXYpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzMnKS5jbGljaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdvZmYnID09PSAnb24nICYmIHR5cGVvZiBzb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX3NvdW5kXzMnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiB0eXBlb2YgY2xvc2Vfc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyAmJiAnb2ZmJyA9PT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8zJykuZ2V0KDApLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF8zICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8zJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8zJykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzMnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8zJykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNsb3NlUG9wdXBPdmVybGF5ICYmICdPbicgPT0gJ09uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfMycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBiX3BhcmVudF9kaXYgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfZGl2ID0gJCh0aGlzKS5maW5kKCcuYXlzLXBiLW1vZGFsXzMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYl9kaXYuaXMoZS50YXJnZXQpICYmIHBiX2Rpdi5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzMnKS5jbGljaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdvZmYnID09PSAnb24nICYmIHR5cGVvZiBzb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX3NvdW5kXzMnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl8zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiB0eXBlb2YgY2xvc2Vfc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyAmJiAnb2ZmJyA9PT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8zJykuZ2V0KDApLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF8zICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8zJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8zJykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzMnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF8zJykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfMycpLmNzcygnZGlzcGxheScsJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMycpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uLWR1cmF0aW9uJzogYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zZWNvbmRzICsgJ3MnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzMnKS5vbmUoJ2NsaWNrJywgZnVuY3Rpb24oKXsgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF5c19wYl9lZmZlY3RPdXRfMyA9ICQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfbW9kYWxfYW5pbWF0ZV9vdXRfMycpLnZhbCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc18zJykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzMnKS5hdHRyKCdjbGFzcycsICdheXMtcGItbW9kYWwgYXlzLXBiLW1vZGFsXzMgZml4ZWQtcHJpY2UtcG9wdXAgZGVkaWNhdGVkLXJlc291cmNlcy1mb3JtICcrYXlzX3BiX2VmZmVjdE91dF8zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5cy1wYi1tb2RhbHMnKS5maW5kKCdpZnJhbWUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IC9odHRwczpcL1wvd3d3LnlvdXR1YmUuY29tLzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3JjID0gJCh0aGlzKS5hdHRyKCdzcmMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ3NyYycsICQodGhpcykuYXR0cignc3JjJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgndmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZiAkKHRoaXMpLmdldCgwKSAhPSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISAkKHRoaXMpLmdldCgwKS5wYXVzZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmdldCgwKS5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ2F1ZGlvLndwLWF1ZGlvLXNob3J0Y29kZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2YgJCh0aGlzKS5nZXQoMCkgIT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEgJCh0aGlzKS5nZXQoMCkucGF1c2VkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5nZXQoMCkucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfMyAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8zJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfMycpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF8zJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc18zJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzMnKS5jc3MoeydvcGFjaXR5JzogJzAnLCAnZGlzcGxheSc6ICdub25lJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc1BhZ2VTY3JvbGxEaXNhYmxlZCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJ2JvZHknKS5hZGRDbGFzcygncGJfZGlzYWJsZV9zY3JvbGxfMycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCdodG1sJykuYWRkQ2xhc3MoJ3BiX2Rpc2FibGVfc2Nyb2xsXzMnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShkb2N1bWVudCkub24oJ2NsaWNrJywgJy5heXMtcGItbW9kYWwtY2xvc2VfMycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnYm9keScpLnJlbW92ZUNsYXNzKCdwYl9kaXNhYmxlX3Njcm9sbF8zJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCdodG1sJykucmVtb3ZlQ2xhc3MoJ3BiX2Rpc2FibGVfc2Nyb2xsXzMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ09uJyAhPSAnT24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfMycpLmNzcyh7J29wYWNpdHknOiAnMCcsICdkaXNwbGF5JzogJ25vbmUgIWltcG9ydGFudCcsICdwb2ludGVyLWV2ZW50cyc6ICdub25lJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzMnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ2F1dG8nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfMycpLmNzcygncG9pbnRlci1ldmVudHMnLCdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignZmFsc2UnID09ICd0cnVlJyAmJiB3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKDAgIT0gMCAmJiAnb2ZmJyAhPSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfMycpLmNzcyh7J2Rpc3BsYXknOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV8zJykuY3NzKHsnZGlzcGxheSc6ICdibG9jayd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoMCAhPSAwICYmICdvZmYnICE9ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV8zJykuY3NzKHsnZGlzcGxheSc6ICdub25lJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzMnKS5jc3MoeydkaXNwbGF5JzogJ2Jsb2NrJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYoMCA9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjbG9zZVBvcHVwT3ZlcmxheSAmJiAnT24nID09ICdPbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc18zJykub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBiX3BhcmVudCA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfZGl2ID0gJCh0aGlzKS5maW5kKCcuYXlzLXBiLW1vZGFsXzMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGJfZGl2LmlzKGUudGFyZ2V0KSAmJiBwYl9kaXYuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfMycpLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX3BiX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdrZXlkb3duJywgZnVuY3Rpb24oZXZlbnQpIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiBheXNfcGJfZmxhZyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PSAyNykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfMycpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX3BiX2ZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdPbicgIT0gJ09uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfMycpLmNzcyh7J29wYWNpdHknOiAnMCcsICdkaXNwbGF5JzogJ25vbmUgIWltcG9ydGFudCcsICdwb2ludGVyLWV2ZW50cyc6ICdub25lJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfMycpLmNzcygncG9pbnRlci1ldmVudHMnLCAnYXV0bycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzMnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCdjbGlja1NlbGVjdG9yJyAhPSAnYm90aCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvJykuaGFzQ2xhc3MoJ3dwLXZpZGVvLXNob3J0Y29kZScpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvV2lkdGggID0gJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgdmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJykuYXR0cignd2lkdGgnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvSGVpZ2h0ID0gJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgdmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJykuYXR0cignaGVpZ2h0Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIC53cC12aWRlbycpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyAubWVqcy1jb250YWluZXInKS5yZW1vdmVBdHRyKCdzdHlsZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgdmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJykucmVtb3ZlQXR0cignc3R5bGUnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyAud3AtdmlkZW8nKS5jc3Moeyd3aWR0aCc6ICcxMDAlJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgLm1lanMtY29udGFpbmVyJykuY3NzKHsnd2lkdGgnOiAnMTAwJScsJ2hlaWdodCc6IHZpZGVvSGVpZ2h0ICsgJ3B4J30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgdmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJykuY3NzKHsnd2lkdGgnOiAnMTAwJScsJ2hlaWdodCc6IHZpZGVvSGVpZ2h0ICsgJ3B4J30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDEwMDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyBpZnJhbWUnKS5hdHRyKCdzdHlsZScpICE9ICcnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgaWZyYW1lJykucmVtb3ZlQXR0cignc3R5bGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSw1MDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCdvZmYnID09ICdvbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW8gPSAkKGRvY3VtZW50KS5maW5kKCd2aWRlby53cC12aWRlby1zaG9ydGNvZGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZpZGVvLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5uZXh0KCkudmFsKCkgPT09ICdvbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXNfdmlkZW9fd2luZG93JykuZmluZCgnLmNsb3NlLWltYWdlLWJ0bicpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSkoIGpRdWVyeSApOwogICAgICAgICAgICAgICAg
3 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mIGF5c1BvcHVwT3B0aW9ucyA9PT0gInVuZGVmaW5lZCIpewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzUG9wdXBPcHRpb25zID0gW107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGF5c1BvcHVwT3B0aW9uc1siMyJdICA9ICJleUp3YjNCMWNHSnZlQ0k2ZXlKcFpDSTZJak1pTENKMGFYUnNaU0k2SWtOb2IyOXpaU0JFWldScFkyRjBaV1FnVW1WemIzVnlZMlVnVFc5a1pXd2lMQ0p3YjNCMWNGOXVZVzFsSWpvaUlpd2laR1Z6WTNKcGNIUnBiMjRpT2lJaUxDSmpZWFJsWjI5eWVWOXBaQ0k2SWpFaUxDSmhkWFJ2WTJ4dmMyVWlPaUl3SWl3aVkyOXZhMmxsSWpvaU1DSXNJbmRwWkhSb0lqb3hNRFV3TENKb1pXbG5hSFFpT2pjMU1Dd2lZbWRqYjJ4dmNpSTZJaU5tWm1abVptWWlMQ0owWlhoMFkyOXNiM0lpT2lJak1EQXdNREF3SWl3aVltOXlaR1Z5YzJsNlpTSTZJakVpTENKaWIzSmtaWEpqYjJ4dmNpSTZJaU5tWm1abVptWWlMQ0ppYjNKa1pYSmZjbUZrYVhWeklqb2lOQ0lzSW5Ob2IzSjBZMjlrWlNJNklpSXNJblZ6WlhKelgzSnZiR1VpT2lKYlhTSXNJbU4xYzNSdmJWOWpiR0Z6Y3lJNkltWnBlR1ZrTFhCeWFXTmxMWEJ2Y0hWd0lHUmxaR2xqWVhSbFpDMXlaWE52ZFhKalpYTXRabTl5YlNJc0ltTjFjM1J2YlY5amMzTWlPaUl1Wm1sNFpXUXRjSEpwWTJVdGNHOXdkWEFnTG1acGVHVmtMWEJ2Y0hWd0xXSnZaSGttWjNRN2FXWnlZVzFsSUh0Y2NseHVJQ0FnSUdScGMzQnNZWGs2SUc1dmJtVWdJV2x0Y0c5eWRHRnVkRHRjY2x4dUlDQWdJSGRwWkhSb09pQXdJQ0ZwYlhCdmNuUmhiblE3WEhKY2JpQWdJQ0JvWldsbmFIUTZJREFnSVdsdGNHOXlkR0Z1ZER0Y2NseHVmU0lzSW1OMWMzUnZiVjlvZEcxc0lqb2lQR1JwZGlCamJHRnpjejFjSW1acGVHVmtMWEJ5YVdObExYQnZjSFZ3TFdobFlXUmNJajVjY2x4dVBHZ3pQa05vYjI5elpTQkVaV1JwWTJGMFpXUWdVbVZ6YjNWeVkyVWdUVzlrWld3OFhDOW9NejVjY2x4dVBGd3ZaR2wyUGx4eVhHNDhaR2wySUdOc1lYTnpQVndpWm1sNFpXUXRjRzl3ZFhBdFltOWtlVndpUGx4eVhHNDhaR2wySUdOc1lYTnpQVndpWm1sNFpXUXRjRzl3ZFhBdGRHVjRkQzF6YVdSbFhDSStYSEpjYmp4a2FYWWdZMnhoYzNNOVhDSm1hWGhsWkMxd2IzQjFjQzEwWlhoMExYUnBkR3hsWENJK1hISmNianhvTXo1RGIyNTBZV04wSUVsdVptOXliV0YwYVc5dVBGd3ZhRE0rWEhKY2JqeGNMMlJwZGo1Y2NseHVQR1JwZGlCamJHRnpjejFjSW1acGVHVmtMWEJ2Y0hWd0xYUmxlSFF0WTI5dGJXOXVYQ0krWEhKY2JseHlYRzVHYVd4c0lIVndJSFJvWlNCbWIzSnRJR0Z1WkNCdmRYSWdWR1ZoYlNCM2FXeHNJR2RsZENCaVlXTnJJSFJ2SUhsdmRTQjNhWFJvYVc0Z01qUWdhRzkxY25NdVhISmNibHh5WEc0OFhDOWthWFkrWEhKY2JqeGthWFlnWTJ4aGMzTTlYQ0ptYVhobFpDMXdiM0IxY0MxMFpYaDBMV052Ym5SaFkzUmNJajQ4WVNCb2NtVm1QVndpZEdWc09pczVNUzA1T1RBNU9UVTFPVFE0WENJK0t6a3hMVGs1TURrNU5UVTVORGc4WEM5aFBqeGNMMlJwZGo1Y2NseHVQR1JwZGlCamJHRnpjejFjSW1acGVHVmtMWEJ2Y0hWd0xYUmxlSFF0WlcxaGFXeGNJajQ4WVNCb2NtVm1QVndpYldGcGJIUnZPbWx1Wm05QWVHTmxiR3hsYm1ObExXbDBMbU52YlZ3aVBtbHVabTlBZUdObGJHeGxibU5sTFdsMExtTnZiVHhjTDJFK1BGd3ZaR2wyUGx4eVhHNDhkV3dnWTJ4aGMzTTlYQ0p6YjJOcFlXd3RiR2x1YTNOY0lqNWNjbHh1SUNBZ0lDQWdJQ0E4YkdrZ1kyeGhjM005WENKemIyTnBZV3d0YkdsdWEzTXRiR2x6ZEZ3aVBseHlYRzRnSUNBZ0lDQWdJQ0FnSUNBOFlTQm9jbVZtUFZ3aWFIUjBjSE02WEM5Y0wzZDNkeTVtWVdObFltOXZheTVqYjIxY0wxaGpaV3hzWlc1alpVbFVYQzljSWlCMFlYSm5aWFE5WENKZllteGhibXRjSWo0OGFTQmpiR0Z6Y3oxY0ltbGpiMjR0Wm1GalpXSnZiMnRjSWo0OFhDOXBQanhjTDJFK1hISmNiaUFnSUNBZ0lDQWdQRnd2YkdrK1hISmNiaUFnSUNBZ0lDQWdQR3hwSUdOc1lYTnpQVndpYzI5amFXRnNMV3hwYm10ekxXeHBjM1JjSWo1Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnUEdFZ2FISmxaajFjSW1oMGRIQnpPbHd2WEM5M2QzY3VhVzV6ZEdGbmNtRnRMbU52YlZ3dmVHTmxiR3hsYm1ObGFYUmNMejlvYkQxbGJsd2lJSFJoY21kbGREMWNJbDlpYkdGdWExd2lQanhwSUdOc1lYTnpQVndpYVdOdmJpMXBibk4wWVZ3aVBqeGNMMmsrUEZ3dllUNWNjbHh1SUNBZ0lDQWdJQ0E4WEM5c2FUNWNjbHh1SUNBZ0lDQWdJQ0E4YkdrZ1kyeGhjM005WENKemIyTnBZV3d0YkdsdWEzTXRiR2x6ZEZ3aVBseHlYRzRnSUNBZ0lDQWdJQ0FnSUNBOFlTQm9jbVZtUFZ3aWFIUjBjSE02WEM5Y0wybHVMbXhwYm10bFpHbHVMbU52YlZ3dlkyOXRjR0Z1ZVZ3dmVHTmxiR3hsYm1ObExXbDBYQ0lnZEdGeVoyVjBQVndpWDJKc1lXNXJYQ0krUEdrZ1kyeGhjM005WENKcFkyOXVMV3hwYm10bFpHbHVYQ0krUEZ3dmFUNDhYQzloUGx4eVhHNGdJQ0FnSUNBZ0lEeGNMMnhwUGx4eVhHNGdJQ0FnSUNBZ0lEeHNhU0JqYkdGemN6MWNJbk52WTJsaGJDMXNhVzVyY3kxc2FYTjBYQ0krWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJRHhoSUdoeVpXWTlYQ0pvZEhSd2N6cGNMMXd2ZEhkcGRIUmxjaTVqYjIxY0wzaGpaV3hzWlc1alpXbDBQMnhoYm1jOVpXNWNJaUIwWVhKblpYUTlYQ0pmWW14aGJtdGNJajQ4YVNCamJHRnpjejFjSW1samIyNHRkSGRwZEhSbGNsd2lQanhjTDJrK1BGd3ZZVDVjY2x4dUlDQWdJQ0FnSUNBOFhDOXNhVDVjY2x4dUlDQWdJQ0FnSUR4Y0wzVnNQbHh5WEc0OFpHbDJJR05zWVhOelBWd2labWw0WldRdGNHOXdkWEF0WW05MGRHOXRMWFJsZUhSY0lqNWNjbHh1WEhKY2JsZGxJR0Z6YzNWeVpTQmhZbk52YkhWMFpTQndjbTkwWldOMGFXOXVJRzltSUhsdmRYSWdaR0YwWVM0Z1ZHaGxJR2x1Wm05eWJXRjBhVzl1SUhsdmRWeDFNakF4T1habElIQnliM1pwWkdWa0lIZHBiR3dnY21WdFlXbHVJR052Ym1acFpHVnVkR2xoYkNCaGJtUWdkMjl1WEhVeU1ERTVkQ0JpWlNCemFHRnlaV1FnZDJsMGFDQmhibmtnZEdocGNtUWdjR0Z5ZEdsbGN5NGdVbVZ6ZENCaGMzTjFjbVZrTENCNWIzVnlJR1Z0WVdsc0lIZHBiR3dnYm05MElHSmxJSFZ6WldRZ1ptOXlJR0Z1ZVNCMWJuTnZiR2xqYVhSbFpDQmpiMjF0ZFc1cFkyRjBhVzl1TGx4eVhHNWNjbHh1UEZ3dlpHbDJQbHh5WEc0OFhDOWthWFkrWEhKY2Jqd2hMUzBnVzJkeVlYWnBkSGxtYjNKdElHbGtQVndpTkZ3aUlHRnFZWGc5WENKMGNuVmxYQ0lnZEdsMGJHVTlYQ0owY25WbFhDSmRJQzB0UGx4eVhHNDhaR2wySUdsa1BWd2liV0YxZEdsalptOXliVjkzY21Gd2NHVnlYM2hwZEdSbFpHbGpZWFJsWkhKbGMyOTFjbU5sWENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdFgzZHlZWEJ3WlhJZ1ptOXliUzFrWlhSaGFXeHpYQ0krUEdadmNtMGdhV1E5WENKdFlYVjBhV05tYjNKdFgzaHBkR1JsWkdsallYUmxaSEpsYzI5MWNtTmxYQ0lnY205c1pUMWNJbVp2Y20xY0lpQmhZM1JwYjI0OVhDSm9kSFJ3Y3pwY0wxd3ZiV0V1Ym05d1lXTmpaV3hsY21GMFpTNWpiMjFjTDJadmNtMWNMM04xWW0xcGREOW1iM0p0U1dROU4xd2lJR0YxZEc5amIyMXdiR1YwWlQxY0ltWmhiSE5sWENJZ1pXNWpkSGx3WlQxY0ltMTFiSFJwY0dGeWRGd3ZabTl5YlMxa1lYUmhYQ0lnYldWMGFHOWtQVndpY0c5emRGd2lJR1JoZEdFdGJXRjFkR2xqTFdadmNtMDlYQ0o0YVhSa1pXUnBZMkYwWldSeVpYTnZkWEpqWlZ3aVBseHlYRzQ4WkdsMklHbGtQVndpYldGMWRHbGpabTl5YlY5NGFYUmtaV1JwWTJGMFpXUnlaWE52ZFhKalpWOWxjbkp2Y2x3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMWxjbkp2Y2x3aVBqeGNMMlJwZGo1Y2NseHVQR1JwZGlCcFpEMWNJbTFoZFhScFkyWnZjbTFmZUdsMFpHVmthV05oZEdWa2NtVnpiM1Z5WTJWZmJXVnpjMkZuWlZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXRaWE56WVdkbElITjFZMk5sYzNObWRXeHNlUzF6ZFdKdGFYUmNJajQ4WEM5a2FYWStYSEpjYmp4a2FYWWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV2x1Ym1WeVptOXliVndpUGx4eVhHNDhaR2wySUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxd1lXZGxMWGR5WVhCd1pYSWdiV0YxZEdsalptOXliUzF3WVdkbExURmNJaUJrWVhSaExXMWhkWFJwWXkxbWIzSnRMWEJoWjJVOVhDSXhYQ0krWEhKY2JqeGthWFlnWTJ4aGMzTTlYQ0ptYjNKdExYTmxZM1JwYjI1Y0lqNWNjbHh1UEdScGRpQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmVHbDBaR1ZrYVdOaGRHVmtjbVZ6YjNWeVkyVmZabWx5YzNSZmJtRnRaVndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxeWIzY2diV0YxZEdsalptOXliUzEwWlhoMElHMWhkWFJwWTJadmNtMHRabWxsYkdRdE1TQnRZWFYwYVdObWIzSnRMWEpsY1hWcGNtVmtYQ0lnWkdGMFlTMTJZV3hwWkdGMFpUMWNJbVpwY25OMFgyNWhiV1ZjSWlCa1lYUmhMWFpoYkdsa1lYUnBiMjR0ZEhsd1pUMWNJblJsZUhSY0lqNDhiR0ZpWld3Z2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDJ4aFltVnNYM2hwZEdSbFpHbGpZWFJsWkhKbGMyOTFjbU5sWDJacGNuTjBYMjVoYldWY0lpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRiR0ZpWld4Y0lpQm1iM0k5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHUmxaR2xqWVhSbFpISmxjMjkxY21ObFgyWnBjbk4wWDI1aGJXVmNJajVHYVhKemRDQk9ZVzFsUEZ3dmJHRmlaV3crWEhKY2JqeHBibkIxZENCcFpEMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWkdWa2FXTmhkR1ZrY21WemIzVnlZMlZmWm1seWMzUmZibUZ0WlZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXBibkIxZEZ3aUlHNWhiV1U5WENKdFlYVjBhV05tYjNKdFcyWnBjbk4wWDI1aGJXVmRYQ0lnZEhsd1pUMWNJblJsZUhSY0lpQjJZV3gxWlQxY0lsd2lJSEJzWVdObGFHOXNaR1Z5UFZ3aVJXNTBaWElnWm1seWMzUWdibUZ0WlZ3aUlGd3ZQbHh5WEc0OGMzQmhiaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0WlhKeWIzSnRjMmRjSWlCemRIbHNaVDFjSW1ScGMzQnNZWGs2SUc1dmJtVTdYQ0krVkdocGN5QnBjeUJ5WlhGMWFYSmxaQzQ4WEM5emNHRnVQanhjTDJScGRqNWNjbHh1UEdScGRpQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmVHbDBaR1ZrYVdOaGRHVmtjbVZ6YjNWeVkyVmZiR0Z6ZEY5dVlXMWxYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFhKdmR5QnRZWFYwYVdObWIzSnRMWFJsZUhRZ2JXRjFkR2xqWm05eWJTMW1hV1ZzWkMweUlHMWhkWFJwWTJadmNtMHRjbVZ4ZFdseVpXUmNJaUJrWVhSaExYWmhiR2xrWVhSbFBWd2liR0Z6ZEY5dVlXMWxYQ0lnWkdGMFlTMTJZV3hwWkdGMGFXOXVMWFI1Y0dVOVhDSjBaWGgwWENJK1BHeGhZbVZzSUdsa1BWd2liV0YxZEdsalptOXliVjlzWVdKbGJGOTRhWFJrWldScFkyRjBaV1J5WlhOdmRYSmpaVjlzWVhOMFgyNWhiV1ZjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGJHRmlaV3hjSWlCbWIzSTlYQ0p0WVhWMGFXTm1iM0p0WDJsdWNIVjBYM2hwZEdSbFpHbGpZWFJsWkhKbGMyOTFjbU5sWDJ4aGMzUmZibUZ0WlZ3aVBreGhjM1FnVG1GdFpUeGNMMnhoWW1Wc1BseHlYRzQ4YVc1d2RYUWdhV1E5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHUmxaR2xqWVhSbFpISmxjMjkxY21ObFgyeGhjM1JmYm1GdFpWd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzFwYm5CMWRGd2lJRzVoYldVOVhDSnRZWFYwYVdObWIzSnRXMnhoYzNSZmJtRnRaVjFjSWlCMGVYQmxQVndpZEdWNGRGd2lJSFpoYkhWbFBWd2lYQ0lnY0d4aFkyVm9iMnhrWlhJOVhDSkZiblJsY2lCc1lYTjBJRzVoYldWY0lpQmNMejVjY2x4dVBITndZVzRnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFdWeWNtOXliWE5uWENJZ2MzUjViR1U5WENKa2FYTndiR0Y1T2lCdWIyNWxPMXdpUGxSb2FYTWdhWE1nY21WeGRXbHlaV1F1UEZ3dmMzQmhiajQ4WEM5a2FYWStYSEpjYmp4Y0wyUnBkajVjY2x4dVBHUnBkaUJqYkdGemN6MWNJbVp2Y20wdGMyVmpkR2x2Ymx3aVBseHlYRzQ4WkdsMklHbGtQVndpYldGMWRHbGpabTl5YlY5NGFYUmtaV1JwWTJGMFpXUnlaWE52ZFhKalpWOWpiMjF3WVc1NVgyNWhiV1ZjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0ZEdWNGRDQnRZWFYwYVdObWIzSnRMV1pwWld4a0xUTmNJajQ4YkdGaVpXd2dhV1E5WENKdFlYVjBhV05tYjNKdFgyeGhZbVZzWDNocGRHUmxaR2xqWVhSbFpISmxjMjkxY21ObFgyTnZiWEJoYm5sZmJtRnRaVndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxc1lXSmxiRndpSUdadmNqMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWkdWa2FXTmhkR1ZrY21WemIzVnlZMlZmWTI5dGNHRnVlVjl1WVcxbFhDSStRMjl0Y0dGdWVTQk9ZVzFsUEZ3dmJHRmlaV3crWEhKY2JqeHBibkIxZENCcFpEMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWkdWa2FXTmhkR1ZrY21WemIzVnlZMlZmWTI5dGNHRnVlVjl1WVcxbFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV2x1Y0hWMFhDSWdibUZ0WlQxY0ltMWhkWFJwWTJadmNtMWJZMjl0Y0dGdWVWOXVZVzFsWFZ3aUlIUjVjR1U5WENKMFpYaDBYQ0lnZG1Gc2RXVTlYQ0pjSWlCd2JHRmpaV2h2YkdSbGNqMWNJa1Z1ZEdWeUlHTnZiWEJoYm5rZ2JtRnRaVndpSUZ3dlBqeGNMMlJwZGo1Y2NseHVQR1JwZGlCcFpEMWNJbTFoZFhScFkyWnZjbTFmZUdsMFpHVmthV05oZEdWa2NtVnpiM1Z5WTJWZlluVnphVzVsYzNOZlpXMWhhV3hjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0WlcxaGFXd2diV0YxZEdsalptOXliUzFtYVdWc1pDMDBJRzFoZFhScFkyWnZjbTB0Y21WeGRXbHlaV1JjSWlCa1lYUmhMWFpoYkdsa1lYUmxQVndpWW5WemFXNWxjM05mWlcxaGFXeGNJaUJrWVhSaExYWmhiR2xrWVhScGIyNHRkSGx3WlQxY0ltVnRZV2xzWENJK1BHeGhZbVZzSUdsa1BWd2liV0YxZEdsalptOXliVjlzWVdKbGJGOTRhWFJrWldScFkyRjBaV1J5WlhOdmRYSmpaVjlpZFhOcGJtVnpjMTlsYldGcGJGd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzFzWVdKbGJGd2lJR1p2Y2oxY0ltMWhkWFJwWTJadmNtMWZhVzV3ZFhSZmVHbDBaR1ZrYVdOaGRHVmtjbVZ6YjNWeVkyVmZZblZ6YVc1bGMzTmZaVzFoYVd4Y0lqNUNkWE5wYm1WemN5QkZiV0ZwYkR4Y0wyeGhZbVZzUGx4eVhHNDhhVzV3ZFhRZ2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDJsdWNIVjBYM2hwZEdSbFpHbGpZWFJsWkhKbGMyOTFjbU5sWDJKMWMybHVaWE56WDJWdFlXbHNYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFdsdWNIVjBYQ0lnYm1GdFpUMWNJbTFoZFhScFkyWnZjbTFiWW5WemFXNWxjM05mWlcxaGFXeGRYQ0lnZEhsd1pUMWNJbVZ0WVdsc1hDSWdkbUZzZFdVOVhDSmNJaUJ3YkdGalpXaHZiR1JsY2oxY0lrVnVkR1Z5SUdWdFlXbHNYQ0lnWEM4K1hISmNianh6Y0dGdUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMWxjbkp2Y20xeloxd2lJSE4wZVd4bFBWd2laR2x6Y0d4aGVUb2dibTl1WlR0Y0lqNVVhR2x6SUdseklISmxjWFZwY21Wa0xqeGNMM053WVc0K1BGd3ZaR2wyUGx4eVhHNDhYQzlrYVhZK1hISmNianhrYVhZZ1kyeGhjM005WENKbWIzSnRMWE5sWTNScGIyNWNJajVjY2x4dVBHUnBkaUJwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwWkdWa2FXTmhkR1ZrY21WemIzVnlZMlZmWkdseVpXTjBYM0JvYjI1bFgyNTFiV0psY2x3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXliM2NnYldGMWRHbGpabTl5YlMxMFpXd2diV0YxZEdsalptOXliUzFtYVdWc1pDMDFYQ0krUEd4aFltVnNJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXNZV0psYkY5NGFYUmtaV1JwWTJGMFpXUnlaWE52ZFhKalpWOWthWEpsWTNSZmNHaHZibVZmYm5WdFltVnlYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFd4aFltVnNYQ0lnWm05eVBWd2liV0YxZEdsalptOXliVjlwYm5CMWRGOTRhWFJrWldScFkyRjBaV1J5WlhOdmRYSmpaVjlrYVhKbFkzUmZjR2h2Ym1WZmJuVnRZbVZ5WENJK1VHaHZibVVnVG5WdFltVnlQRnd2YkdGaVpXdytYSEpjYmp4cGJuQjFkQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZhVzV3ZFhSZmVHbDBaR1ZrYVdOaGRHVmtjbVZ6YjNWeVkyVmZaR2x5WldOMFgzQm9iMjVsWDI1MWJXSmxjbHdpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxcGJuQjFkRndpSUc1aGJXVTlYQ0p0WVhWMGFXTm1iM0p0VzJScGNtVmpkRjl3YUc5dVpWOXVkVzFpWlhKZFhDSWdkSGx3WlQxY0luUmxiRndpSUhaaGJIVmxQVndpWENJZ2NHeGhZMlZvYjJ4a1pYSTlYQ0pGYm5SbGNpQndhRzl1WlNCdWJ5NWNJaUJjTHo0OFhDOWthWFkrWEhKY2JqeGthWFlnYVdROVhDSnRZWFYwYVdObWIzSnRYM2hwZEdSbFpHbGpZWFJsWkhKbGMyOTFjbU5sWDNKbGNYVnBjbVZrWDI1MWJXSmxjbDl2Wmw5eVpYTnZkWEpjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0Ym5WdFltVnlJRzFoZFhScFkyWnZjbTB0Wm1sbGJHUXROaUJ0WVhWMGFXTm1iM0p0TFhKbGNYVnBjbVZrWENJZ1pHRjBZUzEyWVd4cFpHRjBaVDFjSW5KbGNYVnBjbVZrWDI1MWJXSmxjbDl2Wmw5eVpYTnZkWEpjSWlCa1lYUmhMWFpoYkdsa1lYUnBiMjR0ZEhsd1pUMWNJbTUxYldKbGNsd2lQanhzWVdKbGJDQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmJHRmlaV3hmZUdsMFpHVmthV05oZEdWa2NtVnpiM1Z5WTJWZmNtVnhkV2x5WldSZmJuVnRZbVZ5WDI5bVgzSmxjMjkxY2x3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXNZV0psYkZ3aUlHWnZjajFjSW0xaGRYUnBZMlp2Y20xZmFXNXdkWFJmZUdsMFpHVmthV05oZEdWa2NtVnpiM1Z5WTJWZmNtVnhkV2x5WldSZmJuVnRZbVZ5WDI5bVgzSmxjMjkxY2x3aVBrNTFiV0psY2lCdlppQlNaWE52ZFhKalpYTThYQzlzWVdKbGJENWNjbHh1UEdsdWNIVjBJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUmtaV1JwWTJGMFpXUnlaWE52ZFhKalpWOXlaWEYxYVhKbFpGOXVkVzFpWlhKZmIyWmZjbVZ6YjNWeVhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV2x1Y0hWMFhDSWdibUZ0WlQxY0ltMWhkWFJwWTJadmNtMWJjbVZ4ZFdseVpXUmZiblZ0WW1WeVgyOW1YM0psYzI5MWNsMWNJaUIwZVhCbFBWd2liblZ0WW1WeVhDSWdkbUZzZFdVOVhDSmNJaUJ3YkdGalpXaHZiR1JsY2oxY0lrVnVkR1Z5SUhKbGMyOTFjbU5sYzF3aUlGd3ZQbHh5WEc0OGMzQmhiaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0WlhKeWIzSnRjMmRjSWlCemRIbHNaVDFjSW1ScGMzQnNZWGs2SUc1dmJtVTdYQ0krVkdocGN5QnBjeUJ5WlhGMWFYSmxaQzQ4WEM5emNHRnVQanhjTDJScGRqNWNjbHh1UEZ3dlpHbDJQbHh5WEc0OFpHbDJJR05zWVhOelBWd2labTl5YlMxelpXTjBhVzl1WENJK1hISmNianhrYVhZZ2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDNocGRHUmxaR2xqWVhSbFpISmxjMjkxY21ObFgyTnZiblJ5WVdOMFgzUnBiV1ZzYVc1bFgyWnliMjFjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0WkdGMFpTQnRZWFYwYVdObWIzSnRMV1pwWld4a0xUZGNJajQ4YkdGaVpXd2dhV1E5WENKdFlYVjBhV05tYjNKdFgyeGhZbVZzWDNocGRHUmxaR2xqWVhSbFpISmxjMjkxY21ObFgyTnZiblJ5WVdOMFgzUnBiV1ZzYVc1bFgyWnliMjFjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGJHRmlaV3hjSWlCbWIzSTlYQ0p0WVhWMGFXTm1iM0p0WDJsdWNIVjBYM2hwZEdSbFpHbGpZWFJsWkhKbGMyOTFjbU5sWDJOdmJuUnlZV04wWDNScGJXVnNhVzVsWDJaeWIyMWNJajVEYjI1MGNtRmpkQ0JVYVcxbGJHbHVaU0FvUm5KdmJTazhYQzlzWVdKbGJENWNjbHh1UEdsdWNIVjBJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUmtaV1JwWTJGMFpXUnlaWE52ZFhKalpWOWpiMjUwY21GamRGOTBhVzFsYkdsdVpWOW1jbTl0WENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExXbHVjSFYwSUdSaGRHVXRkR2x0WlZ3aUlHNWhiV1U5WENKdFlYVjBhV05tYjNKdFcyTnZiblJ5WVdOMFgzUnBiV1ZzYVc1bFgyWnliMjFkWENJZ2RIbHdaVDFjSW1SaGRHVmNJaUIyWVd4MVpUMWNJbHdpSUhCc1lXTmxhRzlzWkdWeVBWd2lSVzUwWlhJZ2RHbHRaV3hwYm1WY0lpQmNMejQ4WEM5a2FYWStYSEpjYmp4a2FYWWdhV1E5WENKdFlYVjBhV05tYjNKdFgzaHBkR1JsWkdsallYUmxaSEpsYzI5MWNtTmxYMk52Ym5SeVlXTjBYM1JwYldWc2FXNWxYM1J2WENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExYSnZkeUJ0WVhWMGFXTm1iM0p0TFdSaGRHVWdiV0YxZEdsalptOXliUzFtYVdWc1pDMDRYQ0krUEd4aFltVnNJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXNZV0psYkY5NGFYUmtaV1JwWTJGMFpXUnlaWE52ZFhKalpWOWpiMjUwY21GamRGOTBhVzFsYkdsdVpWOTBiMXdpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxc1lXSmxiRndpSUdadmNqMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWkdWa2FXTmhkR1ZrY21WemIzVnlZMlZmWTI5dWRISmhZM1JmZEdsdFpXeHBibVZmZEc5Y0lqNURiMjUwY21GamRDQlVhVzFsYkdsdVpTQW9WRzhwUEZ3dmJHRmlaV3crWEhKY2JqeHBibkIxZENCcFpEMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWkdWa2FXTmhkR1ZrY21WemIzVnlZMlZmWTI5dWRISmhZM1JmZEdsdFpXeHBibVZmZEc5Y0lpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRhVzV3ZFhRZ1pHRjBaUzEwYVcxbFhDSWdibUZ0WlQxY0ltMWhkWFJwWTJadmNtMWJZMjl1ZEhKaFkzUmZkR2x0Wld4cGJtVmZkRzlkWENJZ2RIbHdaVDFjSW1SaGRHVmNJaUIyWVd4MVpUMWNJbHdpSUhCc1lXTmxhRzlzWkdWeVBWd2lSVzUwWlhJZ2RHbHRaV3hwYm1WY0lpQmNMejQ4WEM5a2FYWStYSEpjYmp4Y0wyUnBkajVjY2x4dVBHUnBkaUJwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwWkdWa2FXTmhkR1ZrY21WemIzVnlZMlZmY0hKdmFtVmpkRjlrWlhOamNtbHdkR2x2Ymx3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXliM2NnYldGMWRHbGpabTl5YlMxMFpYaDBJRzFoZFhScFkyWnZjbTB0Wm1sbGJHUXRPVndpUGp4c1lXSmxiQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZiR0ZpWld4ZmVHbDBaR1ZrYVdOaGRHVmtjbVZ6YjNWeVkyVmZjSEp2YW1WamRGOWtaWE5qY21sd2RHbHZibHdpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxc1lXSmxiRndpSUdadmNqMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWkdWa2FXTmhkR1ZrY21WemIzVnlZMlZmY0hKdmFtVmpkRjlrWlhOamNtbHdkR2x2Ymx3aVBsQnliMnBsWTNRZ1JHVnpZM0pwY0hScGIyNDhYQzlzWVdKbGJENWNjbHh1UEhSbGVIUmhjbVZoSUdsa1BWd2liV0YxZEdsalptOXliVjlwYm5CMWRGOTRhWFJrWldScFkyRjBaV1J5WlhOdmRYSmpaVjl3Y205cVpXTjBYMlJsYzJOeWFYQjBhVzl1WENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExYUmxlSFJoY21WaElHWnZjbTB0YVc1d2RYUmNJaUJ1WVcxbFBWd2liV0YxZEdsalptOXliVnR3Y205cVpXTjBYMlJsYzJOeWFYQjBhVzl1WFZ3aUlIQnNZV05sYUc5c1pHVnlQVndpUlc1MFpYSWdjSEp2YW1WamRDQmtaWE5qY21sd2RHbHZibHdpUGp4Y0wzUmxlSFJoY21WaFBqeGNMMlJwZGo1Y2NseHVQR1JwZGlCcFpEMWNJbTFoZFhScFkyWnZjbTFmZUdsMFpHVmthV05oZEdWa2NtVnpiM1Z5WTJWZmNISmxabVpsY21Wa1gzUmxZMmh1YjJ4dlozbGNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0Y205M0lHMWhkWFJwWTJadmNtMHRkR1Y0ZENCdFlYVjBhV05tYjNKdExXWnBaV3hrTFRFd0lHMWhkWFJwWTJadmNtMHRjbVZ4ZFdseVpXUmNJaUJrWVhSaExYWmhiR2xrWVhSbFBWd2ljSEpsWm1abGNtVmtYM1JsWTJodWIyeHZaM2xjSWlCa1lYUmhMWFpoYkdsa1lYUnBiMjR0ZEhsd1pUMWNJblJsZUhSY0lqNDhiR0ZpWld3Z2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDJ4aFltVnNYM2hwZEdSbFpHbGpZWFJsWkhKbGMyOTFjbU5sWDNCeVpXWm1aWEpsWkY5MFpXTm9ibTlzYjJkNVhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV3hoWW1Wc1hDSWdabTl5UFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUmtaV1JwWTJGMFpXUnlaWE52ZFhKalpWOXdjbVZtWm1WeVpXUmZkR1ZqYUc1dmJHOW5lVndpUGxCeVpXWm1aWEpsWkNCVVpXTm9ibTlzYjJkNVBGd3ZiR0ZpWld3K1hISmNianhwYm5CMWRDQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmFXNXdkWFJmZUdsMFpHVmthV05oZEdWa2NtVnpiM1Z5WTJWZmNISmxabVpsY21Wa1gzUmxZMmh1YjJ4dlozbGNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YVc1d2RYUWdabTl5YlMxcGJuQjFkRndpSUc1aGJXVTlYQ0p0WVhWMGFXTm1iM0p0VzNCeVpXWm1aWEpsWkY5MFpXTm9ibTlzYjJkNVhWd2lJSFI1Y0dVOVhDSjBaWGgwWENJZ2RtRnNkV1U5WENKY0lpQndiR0ZqWldodmJHUmxjajFjSWtWdWRHVnlJSEJ5WldabVpYSmxaQ0IwWldOb2JtOXNiMmQ1WENJZ1hDOCtYSEpjYmp4emNHRnVJR05zWVhOelBWd2liV0YxZEdsalptOXliUzFsY25KdmNtMXpaMXdpSUhOMGVXeGxQVndpWkdsemNHeGhlVG9nYm05dVpUdGNJajVVYUdseklHbHpJSEpsY1hWcGNtVmtManhjTDNOd1lXNCtQRnd2WkdsMlBseHlYRzQ4WkdsMklHbGtQVndpYldGMWRHbGpabTl5YlY5NGFYUmtaV1JwWTJGMFpXUnlaWE52ZFhKalpWOXpkWEJ3YjNKMGFXNW5YMlJ2WTNWdFpXNTBYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFhKdmR5QnRZWFYwYVdObWIzSnRMV1pwYkdVZ2JXRjFkR2xqWm05eWJTMW1hV1ZzWkMweE1Wd2lQanhzWVdKbGJDQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmJHRmlaV3hmZUdsMFpHVmthV05oZEdWa2NtVnpiM1Z5WTJWZmMzVndjRzl5ZEdsdVoxOWtiMk4xYldWdWRGd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzFzWVdKbGJGd2lJR1p2Y2oxY0ltMWhkWFJwWTJadmNtMWZhVzV3ZFhSZmVHbDBaR1ZrYVdOaGRHVmtjbVZ6YjNWeVkyVmZjM1Z3Y0c5eWRHbHVaMTlrYjJOMWJXVnVkRndpUGxOMWNIQnZjblJwYm1jZ1JHOWpkVzFsYm5ROFhDOXNZV0psYkQ1Y2NseHVQR2x1Y0hWMElHbGtQVndpYldGMWRHbGpabTl5YlY5cGJuQjFkRjk0YVhSa1pXUnBZMkYwWldSeVpYTnZkWEpqWlY5emRYQndiM0owYVc1blgyUnZZM1Z0Wlc1MFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV2x1Y0hWMElITmxiR1ZqZEMxbWFXeGxJR1p2Y20wdGFXNXdkWFJjSWlCdVlXMWxQVndpYldGMWRHbGpabTl5YlZ0emRYQndiM0owYVc1blgyUnZZM1Z0Wlc1MFhWd2lJSFI1Y0dVOVhDSm1hV3hsWENJZ2RtRnNkV1U5WENKY0lpQndiR0ZqWldodmJHUmxjajFjSWxObGJHVmpkQ0JHYVd4bFhDSWdYQzgrUEZ3dlpHbDJQbHh5WEc0OFpHbDJJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOTRhWFJrWldScFkyRjBaV1J5WlhOdmRYSmpaVjl6ZFdKdGFYUmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0Y205M0lHMWhkWFJwWTJadmNtMHRZblYwZEc5dUxYZHlZWEJ3WlhJZ2JXRjFkR2xqWm05eWJTMW1hV1ZzWkMweE1sd2lQanhpZFhSMGIyNGdhV1E5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHUmxaR2xqWVhSbFpISmxjMjkxY21ObFgzTjFZbTFwZEZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMWlkWFIwYjI0Z1luUnVJR0owYmkxa1pXWmhkV3gwWENJZ2JtRnRaVDFjSW0xaGRYUnBZMlp2Y20xYmMzVmliV2wwWFZ3aUlIUjVjR1U5WENKemRXSnRhWFJjSWlCMllXeDFaVDFjSWx3aVBsTjFZbTFwZER4Y0wySjFkSFJ2Ymo0OFhDOWthWFkrWEhKY2JqeGNMMlJwZGo1Y2NseHVQRnd2WkdsMlBseHlYRzQ4YVc1d2RYUWdhV1E5WENKdFlYVjBhV05tYjNKdFgzaHBkR1JsWkdsallYUmxaSEpsYzI5MWNtTmxYMmxrWENJZ2JtRnRaVDFjSW0xaGRYUnBZMlp2Y20xYlptOXliVWxrWFZ3aUlIUjVjR1U5WENKb2FXUmtaVzVjSWlCMllXeDFaVDFjSWpkY0lpQmNMejVjY2x4dVBHbHVjSFYwSUdsa1BWd2liV0YxZEdsalptOXliVjk0YVhSa1pXUnBZMkYwWldSeVpYTnZkWEpqWlY5eVpYUjFjbTVjSWlCdVlXMWxQVndpYldGMWRHbGpabTl5YlZ0eVpYUjFjbTVkWENJZ2RIbHdaVDFjSW1ocFpHUmxibHdpSUhaaGJIVmxQVndpWENJZ1hDOCtYSEpjYmp4cGJuQjFkQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwWkdWa2FXTmhkR1ZrY21WemIzVnlZMlZmYm1GdFpWd2lJRzVoYldVOVhDSnRZWFYwYVdObWIzSnRXMlp2Y20xT1lXMWxYVndpSUhSNWNHVTlYQ0pvYVdSa1pXNWNJaUIyWVd4MVpUMWNJbmhwZEdSbFpHbGpZWFJsWkhKbGMyOTFjbU5sWENJZ1hDOCtYSEpjYmx4eVhHNDhYQzltYjNKdFBqeGNMMlJwZGo1Y2NseHVQRnd2WkdsMlBpSXNJbTl1YjJabWMzZHBkR05vSWpvaVQyNGlMQ0p6YUc5M1gyOXViSGxmWm05eVgyRjFkR2h2Y2lJNkltOW1aaUlzSW5Ob2IzZGZZV3hzSWpvaVlXeHNJaXdpWkdWc1lYa2lPaUl3SWl3aWMyTnliMnhzWDNSdmNDSTZJakFpTENKaGJtbHRZWFJsWDJsdUlqb2labUZrWlVsdUlpd2lZVzVwYldGMFpWOXZkWFFpT2lKbVlXUmxUM1YwSWl3aVlXTjBhVzl1WDJKMWRIUnZiaUk2SWk1a1pXUnBZMkYwWldRdGJXOWtaV3d0WW5SdUlHSjFkSFJ2YmlJc0luWnBaWGRmY0d4aFkyVWlPaUlpTENKaFkzUnBiMjVmWW5WMGRHOXVYM1I1Y0dVaU9pSmpiR2xqYTFObGJHVmpkRzl5SWl3aWJXOWtZV3hmWTI5dWRHVnVkQ0k2SW1OMWMzUnZiVjlvZEcxc0lpd2lkbWxsZDE5MGVYQmxJam9pWkdWbVlYVnNkQ0lzSW05dWIyWm1iM1psY214aGVTSTZJazl1SWl3aWIzWmxjbXhoZVY5dmNHRmphWFI1SWpvaU1DNDFNREF3TURBaUxDSnphRzkzWDNCdmNIVndYM1JwZEd4bElqb2lUMlptSWl3aWMyaHZkMTl3YjNCMWNGOWtaWE5qSWpvaVQyWm1JaXdpWTJ4dmMyVmZZblYwZEc5dUlqb2liMlptSWl3aWFHVmhaR1Z5WDJKblkyOXNiM0lpT2lJalptWm1abVptSWl3aVltZGZhVzFoWjJVaU9pSWlMQ0pzYjJkZmRYTmxjaUk2SWs5dUlpd2laM1ZsYzNRaU9pSlBiaUlzSW1GamRHbDJaVjlrWVhSbFgyTm9aV05ySWpvaWIyWm1JaXdpWVdOMGFYWmxTVzUwWlhKMllXd2lPaUl5TURJMExUQXhMVEE1SURFME9qRTJPak01SWl3aVpHVmhZM1JwZG1WSmJuUmxjblpoYkNJNklqSXdNalF0TURFdE1Ea2dNVFE2TVRZNk16a2lMQ0p3WWw5d2IzTnBkR2x2YmlJNkltTmxiblJsY2kxalpXNTBaWElpTENKd1lsOXRZWEpuYVc0aU9pSXdJaXdpYjNCMGFXOXVjeUk2SW50Y0ltVnVZV0pzWlY5aVlXTnJaM0p2ZFc1a1gyZHlZV1JwWlc1MFhDSTZYQ0p2Wm1aY0lpeGNJbUpoWTJ0bmNtOTFibVJmWjNKaFpHbGxiblJmWTI5c2IzSmZNVndpT2x3aUl6QXdNRndpTEZ3aVltRmphMmR5YjNWdVpGOW5jbUZrYVdWdWRGOWpiMnh2Y2w4eVhDSTZYQ0lqWm1abVhDSXNYQ0p3WWw5bmNtRmthV1Z1ZEY5a2FYSmxZM1JwYjI1Y0lqcGNJblpsY25ScFkyRnNYQ0lzWENKbGVHTmxjSFJmY0c5emRGOTBlWEJsYzF3aU9sdGRMRndpWlhoalpYQjBYM0J2YzNSelhDSTZXMTBzWENKaGJHeGZjRzl6ZEhOY0lqcGNJbHdpTEZ3aVkyeHZjMlZmWW5WMGRHOXVYMlJsYkdGNVhDSTZNQ3hjSW1Oc2IzTmxYMkoxZEhSdmJsOWtaV3hoZVY5bWIzSmZiVzlpYVd4bFhDSTZNQ3hjSW1WdVlXSnNaVjlqYkc5elpWOWlkWFIwYjI1ZlpHVnNZWGxmWm05eVgyMXZZbWxzWlZ3aU9sd2liMlptWENJc1hDSmxibUZpYkdWZmNHSmZjMjkxYm1SY0lqcGNJbTltWmx3aUxGd2liM1psY214aGVWOWpiMnh2Y2x3aU9sd2lJekF3TUZ3aUxGd2lZVzVwYldGMGFXOXVYM053WldWa1hDSTZNU3hjSW1Oc2IzTmxYMkZ1YVcxaGRHbHZibDl6Y0dWbFpGd2lPakVzWENKd1lsOXRiMkpwYkdWY0lqcGNJbTltWmx3aUxGd2lZMnh2YzJWZlluVjBkRzl1WDNSbGVIUmNJanBjSWx4Y2RUSTNNVFZjSWl4Y0ltVnVZV0pzWlY5amJHOXpaVjlpZFhSMGIyNWZkR1Y0ZEY5dGIySnBiR1ZjSWpwY0ltOXVYQ0lzWENKamJHOXpaVjlpZFhSMGIyNWZkR1Y0ZEY5dGIySnBiR1ZjSWpwY0lseGNkVEkzTVRWY0lpeGNJbU5zYjNObFgySjFkSFJ2Ymw5b2IzWmxjbDkwWlhoMFhDSTZYQ0pjSWl4Y0ltMXZZbWxzWlY5M2FXUjBhRndpT2x3aVhDSXNYQ0p0YjJKcGJHVmZiV0Y0WDNkcFpIUm9YQ0k2WENKY0lpeGNJbTF2WW1sc1pWOW9aV2xuYUhSY0lqcGNJbHdpTEZ3aVkyeHZjMlZmWW5WMGRHOXVYM0J2YzJsMGFXOXVYQ0k2WENKeWFXZG9kQzEwYjNCY0lpeGNJbVZ1WVdKc1pWOWpiRzl6WlY5aWRYUjBiMjVmY0c5emFYUnBiMjVmYlc5aWFXeGxYQ0k2WENKdlptWmNJaXhjSW1Oc2IzTmxYMkoxZEhSdmJsOXdiM05wZEdsdmJsOXRiMkpwYkdWY0lqcGNJbkpwWjJoMExYUnZjRndpTEZ3aWMyaHZkMTl2Ym14NVgyOXVZMlZjSWpwY0ltOW1abHdpTEZ3aWMyaHZkMTl2Ymw5b2IyMWxYM0JoWjJWY0lqcGNJbTltWmx3aUxGd2lZMnh2YzJWZmNHOXdkWEJmWlhOalhDSTZYQ0p2Ymx3aUxGd2ljRzl3ZFhCZmQybGtkR2hmWW5sZmNHVnlZMlZ1ZEdGblpWOXdlRndpT2x3aWNHbDRaV3h6WENJc1hDSndiM0IxY0Y5amIyNTBaVzUwWDNCaFpHUnBibWRjSWpveU1DeGNJbkJ2Y0hWd1gzQmhaR1JwYm1kZllubGZjR1Z5WTJWdWRHRm5aVjl3ZUZ3aU9sd2ljR2w0Wld4elhDSXNYQ0p3WWw5bWIyNTBYMlpoYldsc2VWd2lPbHdpU1c1b1pYSnBkRndpTEZ3aVkyeHZjMlZmY0c5d2RYQmZiM1psY214aGVWd2lPbHdpYjI1Y0lpeGNJbU5zYjNObFgzQnZjSFZ3WDI5MlpYSnNZWGxmYlc5aWFXeGxYQ0k2WENKdmJsd2lMRndpWlc1aFlteGxYM0JpWDJaMWJHeHpZM0psWlc1Y0lqcGNJbTltWmx3aUxGd2laVzVoWW14bFgyaHBaR1ZmZEdsdFpYSmNJanBjSW05bVpsd2lMRndpWlc1aFlteGxYMkYxZEc5amJHOXpaVjl2Ymw5amIyMXdiR1YwYVc5dVhDSTZYQ0p2Wm1aY0lpeGNJbVZ1WVdKc1pWOXpiMk5wWVd4ZmJHbHVhM05jSWpwY0ltOW1abHdpTEZ3aWMyOWphV0ZzWDJ4cGJtdHpYQ0k2ZTF3aWJHbHVhMlZrYVc1ZmJHbHVhMXdpT2x3aVhDSXNYQ0ptWVdObFltOXZhMTlzYVc1clhDSTZYQ0pjSWl4Y0luUjNhWFIwWlhKZmJHbHVhMXdpT2x3aVhDSXNYQ0oyYTI5dWRHRnJkR1ZmYkdsdWExd2lPbHdpWENJc1hDSjViM1YwZFdKbFgyeHBibXRjSWpwY0lsd2lMRndpYVc1emRHRm5jbUZ0WDJ4cGJtdGNJanBjSWx3aUxGd2lZbVZvWVc1alpWOXNhVzVyWENJNlhDSmNJbjBzWENKemIyTnBZV3hmWW5WMGRHOXVjMTlvWldGa2FXNW5YQ0k2WENKY0lpeGNJbU5zYjNObFgySjFkSFJ2Ymw5emFYcGxYQ0k2TVN4Y0ltTnNiM05sWDJKMWRIUnZibDlwYldGblpWd2lPbHdpWENJc1hDSmliM0prWlhKZmMzUjViR1ZjSWpwY0lrUnZkSFJsWkZ3aUxGd2lZWGx6WDNCaVgyaHZkbVZ5WDNOb2IzZGZZMnh2YzJWZlluUnVYQ0k2WENKdlptWmNJaXhjSW1ScGMyRmliR1ZmYzJOeWIyeHNYQ0k2WENKdlptWmNJaXhjSW1ScGMyRmliR1ZmYzJOeWIyeHNYMjF2WW1sc1pWd2lPbHdpYjJabVhDSXNYQ0psYm1GaWJHVmZiM0JsYmw5a1pXeGhlVjl0YjJKcGJHVmNJanBjSW05bVpsd2lMRndpYjNCbGJsOWtaV3hoZVY5dGIySnBiR1ZjSWpwY0lqQmNJaXhjSW1WdVlXSnNaVjl6WTNKdmJHeGZkRzl3WDIxdlltbHNaVndpT2x3aWIyWm1YQ0lzWENKelkzSnZiR3hmZEc5d1gyMXZZbWxzWlZ3aU9sd2lNRndpTEZ3aVpXNWhZbXhsWDNCaVgzQnZjMmwwYVc5dVgyMXZZbWxzWlZ3aU9sd2liMlptWENJc1hDSndZbDl3YjNOcGRHbHZibDl0YjJKcGJHVmNJanBjSW1ObGJuUmxjaTFqWlc1MFpYSmNJaXhjSW5CaVgySm5YMmx0WVdkbFgzQnZjMmwwYVc5dVhDSTZYQ0pqWlc1MFpYSXRZMlZ1ZEdWeVhDSXNYQ0p3WWw5aVoxOXBiV0ZuWlY5emFYcHBibWRjSWpwY0ltTnZkbVZ5WENJc1hDSjJhV1JsYjE5MGFHVnRaVjkxY214Y0lqcGNJbHdpTEZ3aWNHSmZiV2x1WDJobGFXZG9kRndpT2x3aVhDSXNYQ0p3WWw5bWIyNTBYM05wZW1WY0lqb3hNeXhjSW5CaVgyWnZiblJmYzJsNlpWOW1iM0pmYlc5aWFXeGxYQ0k2TVRNc1hDSndZbDkwYVhSc1pWOTBaWGgwWDNOb1lXUnZkMXdpT2x3aWNtZGlZU2d5TlRVc01qVTFMREkxTlN3d0tWd2lMRndpWlc1aFlteGxYM0JpWDNScGRHeGxYM1JsZUhSZmMyaGhaRzkzWENJNlhDSnZabVpjSWl4Y0luQmlYM1JwZEd4bFgzUmxlSFJmYzJoaFpHOTNYM2hmYjJabWMyVjBYQ0k2TWl4Y0luQmlYM1JwZEd4bFgzUmxlSFJmYzJoaFpHOTNYM2xmYjJabWMyVjBYQ0k2TWl4Y0luQmlYM1JwZEd4bFgzUmxlSFJmYzJoaFpHOTNYM3BmYjJabWMyVjBYQ0k2TUN4Y0ltTnlaV0YwWlY5a1lYUmxYQ0k2WENJeU1ESXpMVEV5TFRBM0lERXpPakF4T2pReFhDSXNYQ0pqY21WaGRHVmZZWFYwYUc5eVhDSTZOaXhjSW1GMWRHaHZjbHdpT2x3aWUxeGNYQ0pwWkZ4Y1hDSTZYRnhjSWpaY1hGd2lMRnhjWENKdVlXMWxYRnhjSWpwY1hGd2lTMkZ0WVd3Z1VIVnliMmhwZEZ4Y1hDSjlYQ0lzWENKbGJtRmliR1ZmWkdsemJXbHpjMXdpT2x3aWIyWm1YQ0lzWENKbGJtRmliR1ZmWkdsemJXbHpjMTkwWlhoMFhDSTZYQ0pFYVhOdGFYTnpJR0ZrWENJc1hDSmxibUZpYkdWZlltOTRYM05vWVdSdmQxd2lPbHdpYjJabVhDSXNYQ0ppYjNoZmMyaGhaRzkzWDJOdmJHOXlYQ0k2WENJak1EQXdYQ0lzWENKd1lsOWliM2hmYzJoaFpHOTNYM2hmYjJabWMyVjBYQ0k2TUN4Y0luQmlYMkp2ZUY5emFHRmtiM2RmZVY5dlptWnpaWFJjSWpvd0xGd2ljR0pmWW05NFgzTm9ZV1J2ZDE5NlgyOW1abk5sZEZ3aU9qRTFMRndpWkdsellXSnNaVjl6WTNKdmJHeGZiMjVmY0c5d2RYQmNJanBjSW05bVpsd2lMRndpWkdsellXSnNaVjl6WTNKdmJHeGZiMjVmY0c5d2RYQmZiVzlpYVd4bFhDSTZYQ0p2Wm1aY0lpeGNJbk5vYjNkZmMyTnliMnhzWW1GeVhDSTZYQ0p2Wm1aY0lpeGNJbWhwWkdWZmIyNWZjR05jSWpwY0ltOW1abHdpTEZ3aWFHbGtaVjl2Ymw5MFlXSnNaWFJ6WENJNlhDSnZabVpjSWl4Y0luQmlYMkpuWDJsdFlXZGxYMlJwY21WamRHbHZibDl2Ymw5dGIySnBiR1ZjSWpwY0ltOXVYQ0lzWENKamJHOXpaVjlpZFhSMGIyNWZZMjlzYjNKY0lqcGNJaU13TURBd01EQmNJaXhjSW1Oc2IzTmxYMkoxZEhSdmJsOW9iM1psY2w5amIyeHZjbHdpT2x3aUl6QXdNREF3TUZ3aUxGd2lZbXgxY21Wa1gyOTJaWEpzWVhsY0lqcGNJbTltWmx3aUxGd2lZbXgxY21Wa1gyOTJaWEpzWVhsZmJXOWlhV3hsWENJNlhDSnZabVpjSWl4Y0luQmlYMkYxZEc5amJHOXpaVjl0YjJKcGJHVmNJanBjSWpJd1hDSXNYQ0psYm1GaWJHVmZZWFYwYjJOc2IzTmxYMlJsYkdGNVgzUmxlSFJmYlc5aWFXeGxYQ0k2WENKdlptWmNJaXhjSW1WdVlXSnNaVjl2ZG1WeWJHRjVYM1JsZUhSZmJXOWlhV3hsWENJNlhDSnZabVpjSWl4Y0ltOTJaWEpzWVhsZmJXOWlhV3hsWDI5d1lXTnBkSGxjSWpwY0lqQXVOVndpZlNKOWZRPT0iOwogICAgICAgICAgICAgICAg
1 ms
javascript;base64,aWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF80JykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0gZWxzZSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF80JykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0=
1 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiggJCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2Ugc3RyaWN0JzsKICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNob3dfb25seV9vbmNlID0gJ29mZic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNNb2JpbGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbG9zZVBvcHVwT3ZlcmxheSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNQYWdlU2Nyb2xsRGlzYWJsZWQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlUG9wdXBPdmVybGF5ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BhZ2VTY3JvbGxEaXNhYmxlZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuZml4ZWQtbW9kZWwtYnRuIGJ1dHRvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX211c2ljX3NvdW5kJykuY3NzKHsnZGlzcGxheSc6J2Jsb2NrJ30pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNob3dfb25seV9vbmNlID09ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vd3d3LnhjZWxsZW5jZS1pdC5jb20vd3AtYWRtaW4vYWRtaW4tYWpheC5waHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdwb3N0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnYXlzX3BiX3NldF9jb29raWVfb25seV9vbmNlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdGaXhlZCBwcmljZSBtb2RlbCBwb3AgdXAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YUF0dHIgPSAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzQnKS5hdHRyKCdkYXRhLWF5cy1mbGFnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19mbGFnICYmIGRhdGFBdHRyID09ICd0cnVlJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc180JykuY3NzKCdkaXNwbGF5JywnYmxvY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc180JykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdhdXRvJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzQgc3BhbicpLmh0bWwoJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl80IHNwYW4nKS5hdHRyKCdkYXRhLWF5cy1tb2JpbGUtc2Vjb25kcycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl80IHNwYW4nKS5odG1sKCQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfNCBzcGFuJykuYXR0cignZGF0YS1heXMtc2Vjb25kcycpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJfcGJfNCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF80JykucmVtb3ZlQ2xhc3MoJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX291dF80JykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNCcpLmFkZENsYXNzKCQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfbW9kYWxfYW5pbWF0ZV9pbl80JykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNCcpLmNzcygnZGlzcGxheScsICdibG9jaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCAmJiAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV80JykuYXR0cignZGF0YS1tb2JpbGUtb3ZlcmxheScpID09ICd0cnVlJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV80JykuY3NzKHsnb3BhY2l0eSc6ICcwLjUnLCAnZGlzcGxheSc6ICdibG9jayd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfNCcpLmNzcyh7J29wYWNpdHknOiAnMC41MDAwMDAnLCAnZGlzcGxheSc6ICdibG9jayd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jaGVja180JykucHJvcCgnY2hlY2tlZCcsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2hlY2tfNCcpLmF0dHIoJ2NoZWNrZWQnLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLW1vZGFsLWNoZWNrYm94XzQnKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWRfNCcpLnZhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NlY29uZHMgPSAoYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCAvIDEwMDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VuZF9zcmMgPSAkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX3NvdW5kXzQnKS5hdHRyKCdzcmMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xvc2Vfc291bmRfc3JjID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9jbG9zZV9zb3VuZF80JykuYXR0cignc3JjJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQgPSBwYXJzZUZsb2F0KGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpIC0gNTA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdvZmYnID09PSAnb24nICYmIHR5cGVvZiBzb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c19wYl9zb3VuZF80JykuZ2V0KDApLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl9wYXVzZV9zb3VuZF80Jykub24oJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9zb3VuZF80JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY2xvc2Ugc291bmQgc3RhcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgJiYgdHlwZW9mIGNsb3NlX3NvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ29mZicgPT09ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl9wYXVzZV9zb3VuZF80Jykub24oJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNCcpLmdldCgwKS5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF80ICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNCcpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF80JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzQnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzQnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Nsb3NlIHNvdW5kIGVuZAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGltZV9wYl9zdHJfNCA9ICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfNCBzcGFuJykuYXR0cignZGF0YS1heXMtc2Vjb25kcycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbW9iaWxlVGltZXIgPSArJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl80IHNwYW4nKS5hdHRyKCdkYXRhLWF5cy1tb2JpbGUtc2Vjb25kcycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzQgc3BhbicpLmh0bWwobW9iaWxlVGltZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lX3BiX3N0cl80ID0gbW9iaWxlVGltZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aW1lX3BiXzQgPSBwYXJzZUludCh0aW1lX3BiX3N0cl80KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aW1lX3BiXzQgIT09IHVuZGVmaW5lZCl7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aW1lX3BiXzQgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGltZXJfcGJfNCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3VGltZV9wYl80ID0gdGltZV9wYl80LS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXlzX3BiX2VmZmVjdE91dF80ID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX291dF80JykudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzQgc3BhbicpLnRleHQobmV3VGltZV9wYl80KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNCcpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbi1kdXJhdGlvbic6IGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc2Vjb25kcyArICdzJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobmV3VGltZV9wYl80IDw9IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNCcpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF80JykuYXR0cignY2xhc3MnLCAnYXlzLXBiLW1vZGFsIGF5cy1wYi1tb2RhbF80IGZpeGVkLXByaWNlLXBvcHVwICcrJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX291dF80JykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfNCAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzQnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF80JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX3NvdW5kXzQnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl80KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCcxJyAmJiB0eXBlb2YgY2xvc2Vfc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyAmJiAnb2ZmJyA9PT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAhPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzQnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF80ICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzQnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzQnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl80KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNCcpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF80JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzQnKS5vbmUoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc180JykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF80JykuYXR0cignY2xhc3MnLCAnYXlzLXBiLW1vZGFsIGF5cy1wYi1tb2RhbF80IGZpeGVkLXByaWNlLXBvcHVwICcrYXlzX3BiX2VmZmVjdE91dF80KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnaWZyYW1lJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gL2h0dHBzOlwvXC93d3cueW91dHViZS5jb20vOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3JjID0gJCh0aGlzKS5hdHRyKCdzcmMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdzcmMnLCAkKHRoaXMpLmF0dHIoJ3NyYycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgndmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2YgJCh0aGlzKS5nZXQoMCkgIT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhICQodGhpcykuZ2V0KDApLnBhdXNlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmdldCgwKS5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5cy1wYi1tb2RhbHMnKS5maW5kKCdhdWRpby53cC1hdWRpby1zaG9ydGNvZGUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZiAkKHRoaXMpLmdldCgwKSAhPSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEgJCh0aGlzKS5nZXQoMCkucGF1c2VkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZ2V0KDApLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF80ICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzQnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF80JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfNCcpLmNzcyh7J29wYWNpdHknOiAnMCcsICdkaXNwbGF5JzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl80KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX3BiX2ZsYWcgPSAgdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdrZXlkb3duJywgZnVuY3Rpb24oZXZlbnQpIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIGF5c19wYl9mbGFnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT0gMjcpIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzQnKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX3BiX2ZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnb2ZmJyA9PT0gJ29uJyAmJiB0eXBlb2Ygc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9zb3VuZF80JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgJiYgdHlwZW9mIGNsb3NlX3NvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ29mZicgPT09ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAhPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNCcpLmdldCgwKS5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfNCAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNCcpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNCcpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF80JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNCcpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJ2NsaWNrU2VsZWN0b3InICE9ICdib3RoJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjbG9zZVBvcHVwT3ZlcmxheSAmJiAnT24nID09ICdPbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzQnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBiX3BhcmVudF9kaXYgPSAkKHRoaXMpLmZpbmQoJy5heXMtcGItbW9kYWxzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9kaXYgPSAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnLmF5cy1wYi1tb2RhbF80Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGJfcGFyZW50X2Rpdi5pcyhwYl9kaXYpICYmIHBiX3BhcmVudF9kaXYuaGFzKHBiX2RpdikubGVuZ3RoID09PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNCcpLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfNCcpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzQnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzQgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzQnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzQnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNCcpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzQnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2xvc2VQb3B1cE92ZXJsYXkgJiYgJ09uJyA9PSAnT24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc180Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfcGFyZW50X2RpdiA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9kaXYgPSAkKHRoaXMpLmZpbmQoJy5heXMtcGItbW9kYWxfNCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBiX2Rpdi5pcyhlLnRhcmdldCkgJiYgcGJfZGl2LmhhcyhlLnRhcmdldCkubGVuZ3RoID09PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNCcpLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfNCcpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzQnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzQgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzQnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzQnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl80KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNCcpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzQnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl80JykuY3NzKCdkaXNwbGF5Jywnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF80JykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmltYXRpb24tZHVyYXRpb24nOiBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NlY29uZHMgKyAncycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNCcpLm9uZSgnY2xpY2snLCBmdW5jdGlvbigpeyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXlzX3BiX2VmZmVjdE91dF80ID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX291dF80JykudmFsKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzQnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNCcpLmF0dHIoJ2NsYXNzJywgJ2F5cy1wYi1tb2RhbCBheXMtcGItbW9kYWxfNCBmaXhlZC1wcmljZS1wb3B1cCAnK2F5c19wYl9lZmZlY3RPdXRfNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnaWZyYW1lJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSAvaHR0cHM6XC9cL3d3dy55b3V0dWJlLmNvbS87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNyYyA9ICQodGhpcykuYXR0cignc3JjJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdzcmMnLCAkKHRoaXMpLmF0dHIoJ3NyYycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ3ZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2YgJCh0aGlzKS5nZXQoMCkgIT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEgJCh0aGlzKS5nZXQoMCkucGF1c2VkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5nZXQoMCkucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5cy1wYi1tb2RhbHMnKS5maW5kKCdhdWRpby53cC1hdWRpby1zaG9ydGNvZGUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mICQodGhpcykuZ2V0KDApICE9ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhICQodGhpcykuZ2V0KDApLnBhdXNlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZ2V0KDApLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzQgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNCcpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzQnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNCcpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfNCcpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV80JykuY3NzKHsnb3BhY2l0eSc6ICcwJywgJ2Rpc3BsYXknOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNQYWdlU2Nyb2xsRGlzYWJsZWQpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCdib2R5JykuYWRkQ2xhc3MoJ3BiX2Rpc2FibGVfc2Nyb2xsXzQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnaHRtbCcpLmFkZENsYXNzKCdwYl9kaXNhYmxlX3Njcm9sbF80Jyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuYXlzLXBiLW1vZGFsLWNsb3NlXzQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJ2JvZHknKS5yZW1vdmVDbGFzcygncGJfZGlzYWJsZV9zY3JvbGxfNCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnaHRtbCcpLnJlbW92ZUNsYXNzKCdwYl9kaXNhYmxlX3Njcm9sbF80Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdPbicgIT0gJ09uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzQnKS5jc3MoeydvcGFjaXR5JzogJzAnLCAnZGlzcGxheSc6ICdub25lICFpbXBvcnRhbnQnLCAncG9pbnRlci1ldmVudHMnOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF80JykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdhdXRvJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzQnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJ2ZhbHNlJyA9PSAndHJ1ZScgJiYgd2luZG93LmlubmVyV2lkdGggPCA3NjgpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigwICE9IDAgJiYgJ29mZicgIT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzQnKS5jc3MoeydkaXNwbGF5JzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNCcpLmNzcyh7J2Rpc3BsYXknOiAnYmxvY2snfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKDAgIT0gMCAmJiAnb2ZmJyAhPSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNCcpLmNzcyh7J2Rpc3BsYXknOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV80JykuY3NzKHsnZGlzcGxheSc6ICdibG9jayd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmKDAgPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2xvc2VQb3B1cE92ZXJsYXkgJiYgJ09uJyA9PSAnT24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfNCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9wYXJlbnQgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBiX2RpdiA9ICQodGhpcykuZmluZCgnLmF5cy1wYi1tb2RhbF80Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBiX2Rpdi5pcyhlLnRhcmdldCkgJiYgcGJfZGl2LmhhcyhlLnRhcmdldCkubGVuZ3RoID09PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzQnKS5jbGljaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF5c19wYl9mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbigna2V5ZG93bicsIGZ1bmN0aW9uKGV2ZW50KSB7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgJiYgYXlzX3BiX2ZsYWcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT0gMjcpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzQnKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19wYl9mbGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnT24nICE9ICdPbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzQnKS5jc3MoeydvcGFjaXR5JzogJzAnLCAnZGlzcGxheSc6ICdub25lICFpbXBvcnRhbnQnLCAncG9pbnRlci1ldmVudHMnOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzQnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ2F1dG8nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc180JykuY3NzKCdwb2ludGVyLWV2ZW50cycsJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignY2xpY2tTZWxlY3RvcicgIT0gJ2JvdGgnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyB2aWRlbycpLmhhc0NsYXNzKCd3cC12aWRlby1zaG9ydGNvZGUnKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlb1dpZHRoICA9ICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmF0dHIoJ3dpZHRoJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlb0hlaWdodCA9ICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmF0dHIoJ2hlaWdodCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyAud3AtdmlkZW8nKS5yZW1vdmVBdHRyKCdzdHlsZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgLm1lanMtY29udGFpbmVyJykucmVtb3ZlQXR0cignc3R5bGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgLndwLXZpZGVvJykuY3NzKHsnd2lkdGgnOiAnMTAwJSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIC5tZWpzLWNvbnRhaW5lcicpLmNzcyh7J3dpZHRoJzogJzEwMCUnLCdoZWlnaHQnOiB2aWRlb0hlaWdodCArICdweCd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmNzcyh7J3dpZHRoJzogJzEwMCUnLCdoZWlnaHQnOiB2aWRlb0hlaWdodCArICdweCd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwxMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgaWZyYW1lJykuYXR0cignc3R5bGUnKSAhPSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIGlmcmFtZScpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sNTAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignb2ZmJyA9PSAnb24nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvID0gJChkb2N1bWVudCkuZmluZCgndmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aWRlby5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1tpXS5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykubmV4dCgpLnZhbCgpID09PSAnb24nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzX3ZpZGVvX3dpbmRvdycpLmZpbmQoJy5jbG9zZS1pbWFnZS1idG4nKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pKCBqUXVlcnkgKTsKICAgICAgICAgICAgICAgIA==
10 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mIGF5c1BvcHVwT3B0aW9ucyA9PT0gInVuZGVmaW5lZCIpewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzUG9wdXBPcHRpb25zID0gW107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGF5c1BvcHVwT3B0aW9uc1siNCJdICA9ICJleUp3YjNCMWNHSnZlQ0k2ZXlKcFpDSTZJalFpTENKMGFYUnNaU0k2SWtacGVHVmtJSEJ5YVdObElHMXZaR1ZzSUhCdmNDQjFjQ0lzSW5CdmNIVndYMjVoYldVaU9pSWlMQ0prWlhOamNtbHdkR2x2YmlJNklpSXNJbU5oZEdWbmIzSjVYMmxrSWpvaU1TSXNJbUYxZEc5amJHOXpaU0k2SWpBaUxDSmpiMjlyYVdVaU9pSXdJaXdpZDJsa2RHZ2lPakV3TlRBc0ltaGxhV2RvZENJNk56VXdMQ0ppWjJOdmJHOXlJam9pSTJabVptWm1aaUlzSW5SbGVIUmpiMnh2Y2lJNklpTXdNREF3TURBaUxDSmliM0prWlhKemFYcGxJam9pTVNJc0ltSnZjbVJsY21OdmJHOXlJam9pSTJabVptWm1aaUlzSW1KdmNtUmxjbDl5WVdScGRYTWlPaUkwSWl3aWMyaHZjblJqYjJSbElqb2lJaXdpZFhObGNuTmZjbTlzWlNJNklsdGRJaXdpWTNWemRHOXRYMk5zWVhOeklqb2labWw0WldRdGNISnBZMlV0Y0c5d2RYQWlMQ0pqZFhOMGIyMWZZM056SWpvaUxtWnBlR1ZrTFhCeWFXTmxMWEJ2Y0hWd0lDNW1hWGhsWkMxd2IzQjFjQzFpYjJSNUptZDBPMmxtY21GdFpTQjdYSEpjYmlBZ0lDQmthWE53YkdGNU9pQnViMjVsSUNGcGJYQnZjblJoYm5RN1hISmNiaUFnSUNCM2FXUjBhRG9nTUNBaGFXMXdiM0owWVc1ME8xeHlYRzRnSUNBZ2FHVnBaMmgwT2lBd0lDRnBiWEJ2Y25SaGJuUTdYSEpjYm4waUxDSmpkWE4wYjIxZmFIUnRiQ0k2SWp4a2FYWWdZMnhoYzNNOVhDSm1hWGhsWkMxd2NtbGpaUzF3YjNCMWNDMW9aV0ZrWENJK1hISmNianhvTXo1RGFHOXZjMlVnUm1sNFpXUWdVSEpwWTJVZ1RXOWtaV3c4WEM5b016NWNjbHh1UEZ3dlpHbDJQbHh5WEc0OFpHbDJJR05zWVhOelBWd2labWw0WldRdGNHOXdkWEF0WW05a2VWd2lQbHh5WEc0OFpHbDJJR05zWVhOelBWd2labWw0WldRdGNHOXdkWEF0ZEdWNGRDMXphV1JsWENJK1hISmNianhrYVhZZ1kyeGhjM005WENKbWFYaGxaQzF3YjNCMWNDMTBaWGgwTFhScGRHeGxYQ0krWEhKY2JqeG9NejVEYjI1MFlXTjBJRWx1Wm05eWJXRjBhVzl1UEZ3dmFETStYSEpjYmp4Y0wyUnBkajVjY2x4dVBHUnBkaUJqYkdGemN6MWNJbVpwZUdWa0xYQnZjSFZ3TFhSbGVIUXRZMjl0Ylc5dVhDSStYSEpjYmx4eVhHNUdhV3hzSUhWd0lIUm9aU0JtYjNKdElHRnVaQ0J2ZFhJZ1ZHVmhiU0IzYVd4c0lHZGxkQ0JpWVdOcklIUnZJSGx2ZFNCM2FYUm9hVzRnTWpRZ2FHOTFjbk11WEhKY2JseHlYRzQ4WEM5a2FYWStYSEpjYmp4a2FYWWdZMnhoYzNNOVhDSm1hWGhsWkMxd2IzQjFjQzEwWlhoMExXTnZiblJoWTNSY0lqNDhZU0JvY21WbVBWd2lkR1ZzT2lzNU1TMDVPVEE1T1RVMU9UUTRYQ0krS3preExUazVNRGs1TlRVNU5EZzhYQzloUGp4Y0wyUnBkajVjY2x4dVBHUnBkaUJqYkdGemN6MWNJbVpwZUdWa0xYQnZjSFZ3TFhSbGVIUXRaVzFoYVd4Y0lqNDhZU0JvY21WbVBWd2liV0ZwYkhSdk9tbHVabTlBZUdObGJHeGxibU5sTFdsMExtTnZiVndpUG1sdVptOUFlR05sYkd4bGJtTmxMV2wwTG1OdmJUeGNMMkUrUEZ3dlpHbDJQbHh5WEc0OGRXd2dZMnhoYzNNOVhDSnpiMk5wWVd3dGJHbHVhM05jSWo1Y2NseHVJQ0FnSUNBZ0lDQThiR2tnWTJ4aGMzTTlYQ0p6YjJOcFlXd3RiR2x1YTNNdGJHbHpkRndpUGx4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0E4WVNCb2NtVm1QVndpYUhSMGNITTZYQzljTDNkM2R5NW1ZV05sWW05dmF5NWpiMjFjTDFoalpXeHNaVzVqWlVsVVhDOWNJaUIwWVhKblpYUTlYQ0pmWW14aGJtdGNJajQ4YVNCamJHRnpjejFjSW1samIyNHRabUZqWldKdmIydGNJajQ4WEM5cFBqeGNMMkUrWEhKY2JpQWdJQ0FnSUNBZ1BGd3ZiR2srWEhKY2JpQWdJQ0FnSUNBZ1BHeHBJR05zWVhOelBWd2ljMjlqYVdGc0xXeHBibXR6TFd4cGMzUmNJajVjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdQR0VnYUhKbFpqMWNJbWgwZEhCek9sd3ZYQzkzZDNjdWFXNXpkR0ZuY21GdExtTnZiVnd2ZUdObGJHeGxibU5sYVhSY0x6OW9iRDFsYmx3aUlIUmhjbWRsZEQxY0lsOWliR0Z1YTF3aVBqeHBJR05zWVhOelBWd2lhV052YmkxcGJuTjBZVndpUGp4Y0wyaytQRnd2WVQ1Y2NseHVJQ0FnSUNBZ0lDQThYQzlzYVQ1Y2NseHVJQ0FnSUNBZ0lDQThiR2tnWTJ4aGMzTTlYQ0p6YjJOcFlXd3RiR2x1YTNNdGJHbHpkRndpUGx4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0E4WVNCb2NtVm1QVndpYUhSMGNITTZYQzljTDJsdUxteHBibXRsWkdsdUxtTnZiVnd2WTI5dGNHRnVlVnd2ZUdObGJHeGxibU5sTFdsMFhDSWdkR0Z5WjJWMFBWd2lYMkpzWVc1clhDSStQR2tnWTJ4aGMzTTlYQ0pwWTI5dUxXeHBibXRsWkdsdVhDSStQRnd2YVQ0OFhDOWhQbHh5WEc0Z0lDQWdJQ0FnSUR4Y0wyeHBQbHh5WEc0Z0lDQWdJQ0FnSUR4c2FTQmpiR0Z6Y3oxY0luTnZZMmxoYkMxc2FXNXJjeTFzYVhOMFhDSStYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lEeGhJR2h5WldZOVhDSm9kSFJ3Y3pwY0wxd3ZkSGRwZEhSbGNpNWpiMjFjTDNoalpXeHNaVzVqWldsMFAyeGhibWM5Wlc1Y0lpQjBZWEpuWlhROVhDSmZZbXhoYm10Y0lqNDhhU0JqYkdGemN6MWNJbWxqYjI0dGRIZHBkSFJsY2x3aVBqeGNMMmsrUEZ3dllUNWNjbHh1SUNBZ0lDQWdJQ0E4WEM5c2FUNWNjbHh1SUNBZ0lDQWdJRHhjTDNWc1BseHlYRzQ4WkdsMklHTnNZWE56UFZ3aVptbDRaV1F0Y0c5d2RYQXRZbTkwZEc5dExYUmxlSFJjSWo1Y2NseHVYSEpjYmxkbElHRnpjM1Z5WlNCaFluTnZiSFYwWlNCd2NtOTBaV04wYVc5dUlHOW1JSGx2ZFhJZ1pHRjBZUzRnVkdobElHbHVabTl5YldGMGFXOXVJSGx2ZFZ4MU1qQXhPWFpsSUhCeWIzWnBaR1ZrSUhkcGJHd2djbVZ0WVdsdUlHTnZibVpwWkdWdWRHbGhiQ0JoYm1RZ2QyOXVYSFV5TURFNWRDQmlaU0J6YUdGeVpXUWdkMmwwYUNCaGJua2dkR2hwY21RZ2NHRnlkR2xsY3k0Z1VtVnpkQ0JoYzNOMWNtVmtMQ0I1YjNWeUlHVnRZV2xzSUhkcGJHd2dibTkwSUdKbElIVnpaV1FnWm05eUlHRnVlU0IxYm5OdmJHbGphWFJsWkNCamIyMXRkVzVwWTJGMGFXOXVMbHh5WEc1Y2NseHVQRnd2WkdsMlBseHlYRzQ4WEM5a2FYWStYSEpjYmp3aExTMGdXMmR5WVhacGRIbG1iM0p0SUdsa1BWd2lOVndpSUdGcVlYZzlYQ0owY25WbFhDSWdkR2wwYkdVOVhDSjBjblZsWENKZElDMHRQbHh5WEc0OFpHbDJJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOTNjbUZ3Y0dWeVgzaHBkR1pwZUdWa2NISnBZMlZ0YjJSbGJGd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliVjkzY21Gd2NHVnlJR1p2Y20wdFpHVjBZV2xzYzF3aVBqeG1iM0p0SUdsa1BWd2liV0YxZEdsalptOXliVjk0YVhSbWFYaGxaSEJ5YVdObGJXOWtaV3hjSWlCeWIyeGxQVndpWm05eWJWd2lJR0ZqZEdsdmJqMWNJbWgwZEhCek9sd3ZYQzl0WVM1dWIzQmhZMk5sYkdWeVlYUmxMbU52YlZ3dlptOXliVnd2YzNWaWJXbDBQMlp2Y20xSlpEMDBYQ0lnWVhWMGIyTnZiWEJzWlhSbFBWd2labUZzYzJWY0lpQmxibU4wZVhCbFBWd2liWFZzZEdsd1lYSjBYQzltYjNKdExXUmhkR0ZjSWlCdFpYUm9iMlE5WENKd2IzTjBYQ0lnWkdGMFlTMXRZWFYwYVdNdFptOXliVDFjSW5ocGRHWnBlR1ZrY0hKcFkyVnRiMlJsYkZ3aVBseHlYRzQ4WkdsMklHbGtQVndpYldGMWRHbGpabTl5YlY5NGFYUm1hWGhsWkhCeWFXTmxiVzlrWld4ZlpYSnliM0pjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdFpYSnliM0pjSWo0OFhDOWthWFkrWEhKY2JqeGthWFlnYVdROVhDSnRZWFYwYVdObWIzSnRYM2hwZEdacGVHVmtjSEpwWTJWdGIyUmxiRjl0WlhOellXZGxYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFcxbGMzTmhaMlVnYzNWalkyVnpjMloxYkd4NUxYTjFZbTFwZEZ3aVBqeGNMMlJwZGo1Y2NseHVQR1JwZGlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGFXNXVaWEptYjNKdFhDSStYSEpjYmp4a2FYWWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMWEJoWjJVdGQzSmhjSEJsY2lCdFlYVjBhV05tYjNKdExYQmhaMlV0TVZ3aUlHUmhkR0V0YldGMWRHbGpMV1p2Y20wdGNHRm5aVDFjSWpGY0lqNWNjbHh1UEdScGRpQmpiR0Z6Y3oxY0ltWnZjbTB0YzJWamRHbHZibHdpUGx4eVhHNDhaR2wySUdsa1BWd2liV0YxZEdsalptOXliVjk0YVhSbWFYaGxaSEJ5YVdObGJXOWtaV3hmWm1seWMzUmZibUZ0WlZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXliM2NnYldGMWRHbGpabTl5YlMxMFpYaDBJRzFoZFhScFkyWnZjbTB0Wm1sbGJHUXRNU0J0WVhWMGFXTm1iM0p0TFhKbGNYVnBjbVZrWENJZ1pHRjBZUzEyWVd4cFpHRjBaVDFjSW1acGNuTjBYMjVoYldWY0lpQmtZWFJoTFhaaGJHbGtZWFJwYjI0dGRIbHdaVDFjSW5SbGVIUmNJajQ4YkdGaVpXd2dhV1E5WENKdFlYVjBhV05tYjNKdFgyeGhZbVZzWDNocGRHWnBlR1ZrY0hKcFkyVnRiMlJsYkY5bWFYSnpkRjl1WVcxbFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV3hoWW1Wc1hDSWdabTl5UFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUm1hWGhsWkhCeWFXTmxiVzlrWld4ZlptbHljM1JmYm1GdFpWd2lQa1pwY25OMElFNWhiV1U4WEM5c1lXSmxiRDVjY2x4dVBHbHVjSFYwSUdsa1BWd2liV0YxZEdsalptOXliVjlwYm5CMWRGOTRhWFJtYVhobFpIQnlhV05sYlc5a1pXeGZabWx5YzNSZmJtRnRaVndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxcGJuQjFkRndpSUc1aGJXVTlYQ0p0WVhWMGFXTm1iM0p0VzJacGNuTjBYMjVoYldWZFhDSWdkSGx3WlQxY0luUmxlSFJjSWlCMllXeDFaVDFjSWx3aUlIQnNZV05sYUc5c1pHVnlQVndpUlc1MFpYSWdSbWx5YzNRZ1RtRnRaVndpSUZ3dlBseHlYRzQ4YzNCaGJpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRaWEp5YjNKdGMyZGNJaUJ6ZEhsc1pUMWNJbVJwYzNCc1lYazZJRzV2Ym1VN1hDSStWR2hwY3lCcGN5QnlaWEYxYVhKbFpDNDhYQzl6Y0dGdVBqeGNMMlJwZGo1Y2NseHVQR1JwZGlCcFpEMWNJbTFoZFhScFkyWnZjbTFmZUdsMFptbDRaV1J3Y21salpXMXZaR1ZzWDJ4aGMzUmZibUZ0WlZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXliM2NnYldGMWRHbGpabTl5YlMxMFpYaDBJRzFoZFhScFkyWnZjbTB0Wm1sbGJHUXRNaUJ0WVhWMGFXTm1iM0p0TFhKbGNYVnBjbVZrWENJZ1pHRjBZUzEyWVd4cFpHRjBaVDFjSW14aGMzUmZibUZ0WlZ3aUlHUmhkR0V0ZG1Gc2FXUmhkR2x2YmkxMGVYQmxQVndpZEdWNGRGd2lQanhzWVdKbGJDQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmJHRmlaV3hmZUdsMFptbDRaV1J3Y21salpXMXZaR1ZzWDJ4aGMzUmZibUZ0WlZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXNZV0psYkZ3aUlHWnZjajFjSW0xaGRYUnBZMlp2Y20xZmFXNXdkWFJmZUdsMFptbDRaV1J3Y21salpXMXZaR1ZzWDJ4aGMzUmZibUZ0WlZ3aVBreGhjM1FnVG1GdFpUeGNMMnhoWW1Wc1BseHlYRzQ4YVc1d2RYUWdhV1E5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHWnBlR1ZrY0hKcFkyVnRiMlJsYkY5c1lYTjBYMjVoYldWY0lpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRhVzV3ZFhSY0lpQnVZVzFsUFZ3aWJXRjFkR2xqWm05eWJWdHNZWE4wWDI1aGJXVmRYQ0lnZEhsd1pUMWNJblJsZUhSY0lpQjJZV3gxWlQxY0lsd2lJSEJzWVdObGFHOXNaR1Z5UFZ3aVJXNTBaWElnVEdGemRDQk9ZVzFsWENJZ1hDOCtYSEpjYmp4emNHRnVJR05zWVhOelBWd2liV0YxZEdsalptOXliUzFsY25KdmNtMXpaMXdpSUhOMGVXeGxQVndpWkdsemNHeGhlVG9nYm05dVpUdGNJajVVYUdseklHbHpJSEpsY1hWcGNtVmtManhjTDNOd1lXNCtQRnd2WkdsMlBseHlYRzQ4WEM5a2FYWStYSEpjYmp4a2FYWWdZMnhoYzNNOVhDSm1iM0p0TFhObFkzUnBiMjVjSWo1Y2NseHVQR1JwZGlCcFpEMWNJbTFoZFhScFkyWnZjbTFmZUdsMFptbDRaV1J3Y21salpXMXZaR1ZzWDJWdFlXbHNYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFhKdmR5QnRZWFYwYVdObWIzSnRMV1Z0WVdsc0lHMWhkWFJwWTJadmNtMHRabWxsYkdRdE15QnRZWFYwYVdObWIzSnRMWEpsY1hWcGNtVmtYQ0lnWkdGMFlTMTJZV3hwWkdGMFpUMWNJbVZ0WVdsc1hDSWdaR0YwWVMxMllXeHBaR0YwYVc5dUxYUjVjR1U5WENKbGJXRnBiRndpUGp4c1lXSmxiQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZiR0ZpWld4ZmVHbDBabWw0WldSd2NtbGpaVzF2WkdWc1gyVnRZV2xzWENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExXeGhZbVZzWENJZ1ptOXlQVndpYldGMWRHbGpabTl5YlY5cGJuQjFkRjk0YVhSbWFYaGxaSEJ5YVdObGJXOWtaV3hmWlcxaGFXeGNJajVGYldGcGJEeGNMMnhoWW1Wc1BseHlYRzQ4YVc1d2RYUWdhV1E5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHWnBlR1ZrY0hKcFkyVnRiMlJsYkY5bGJXRnBiRndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxcGJuQjFkRndpSUc1aGJXVTlYQ0p0WVhWMGFXTm1iM0p0VzJWdFlXbHNYVndpSUhSNWNHVTlYQ0psYldGcGJGd2lJSFpoYkhWbFBWd2lYQ0lnY0d4aFkyVm9iMnhrWlhJOVhDSkZiblJsY2lCRmJXRnBiRndpSUZ3dlBseHlYRzQ4YzNCaGJpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRaWEp5YjNKdGMyZGNJaUJ6ZEhsc1pUMWNJbVJwYzNCc1lYazZJRzV2Ym1VN1hDSStWR2hwY3lCcGN5QnlaWEYxYVhKbFpDNDhYQzl6Y0dGdVBqeGNMMlJwZGo1Y2NseHVQR1JwZGlCcFpEMWNJbTFoZFhScFkyWnZjbTFmZUdsMFptbDRaV1J3Y21salpXMXZaR1ZzWDJOdmJuUmhZM1JmYm5WdFltVnlYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFhKdmR5QnRZWFYwYVdObWIzSnRMWFJsYkNCdFlYVjBhV05tYjNKdExXWnBaV3hrTFRRZ2JXRjFkR2xqWm05eWJTMXlaWEYxYVhKbFpGd2lJR1JoZEdFdGRtRnNhV1JoZEdVOVhDSmpiMjUwWVdOMFgyNTFiV0psY2x3aUlHUmhkR0V0ZG1Gc2FXUmhkR2x2YmkxMGVYQmxQVndpZEdWc1hDSStQR3hoWW1Wc0lHbGtQVndpYldGMWRHbGpabTl5YlY5c1lXSmxiRjk0YVhSbWFYaGxaSEJ5YVdObGJXOWtaV3hmWTI5dWRHRmpkRjl1ZFcxaVpYSmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YkdGaVpXeGNJaUJtYjNJOVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR1pwZUdWa2NISnBZMlZ0YjJSbGJGOWpiMjUwWVdOMFgyNTFiV0psY2x3aVBsQm9iMjVsSUU1MWJXSmxjanhjTDJ4aFltVnNQbHh5WEc0OGFXNXdkWFFnYVdROVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR1pwZUdWa2NISnBZMlZ0YjJSbGJGOWpiMjUwWVdOMFgyNTFiV0psY2x3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXBibkIxZEZ3aUlHNWhiV1U5WENKdFlYVjBhV05tYjNKdFcyTnZiblJoWTNSZmJuVnRZbVZ5WFZ3aUlIUjVjR1U5WENKMFpXeGNJaUIyWVd4MVpUMWNJbHdpSUhCc1lXTmxhRzlzWkdWeVBWd2lSVzUwWlhJZ1VHaHZibVVnYm04dVhDSWdYQzgrWEhKY2JqeHpjR0Z1SUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxbGNuSnZjbTF6WjF3aUlITjBlV3hsUFZ3aVpHbHpjR3hoZVRvZ2JtOXVaVHRjSWo1VWFHbHpJR2x6SUhKbGNYVnBjbVZrTGp4Y0wzTndZVzQrUEZ3dlpHbDJQbHh5WEc0OFhDOWthWFkrWEhKY2JqeGthWFlnWTJ4aGMzTTlYQ0ptYjNKdExYTmxZM1JwYjI1Y0lqNWNjbHh1UEdScGRpQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmVHbDBabWw0WldSd2NtbGpaVzF2WkdWc1gyRndjSEp2ZUY5aWRXUm5aWFJmZFhOa1hDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMWEp2ZHlCdFlYVjBhV05tYjNKdExXNTFiV0psY2lCdFlYVjBhV05tYjNKdExXWnBaV3hrTFRWY0lqNDhiR0ZpWld3Z2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDJ4aFltVnNYM2hwZEdacGVHVmtjSEpwWTJWdGIyUmxiRjloY0hCeWIzaGZZblZrWjJWMFgzVnpaRndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxc1lXSmxiRndpSUdadmNqMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWm1sNFpXUndjbWxqWlcxdlpHVnNYMkZ3Y0hKdmVGOWlkV1JuWlhSZmRYTmtYQ0krUVhCd2NtOTRJRUoxWkdkbGRDQW9WVk5FS1R4Y0wyeGhZbVZzUGx4eVhHNDhhVzV3ZFhRZ2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDJsdWNIVjBYM2hwZEdacGVHVmtjSEpwWTJWdGIyUmxiRjloY0hCeWIzaGZZblZrWjJWMFgzVnpaRndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxcGJuQjFkRndpSUc1aGJXVTlYQ0p0WVhWMGFXTm1iM0p0VzJGd2NISnZlRjlpZFdSblpYUmZkWE5rWFZ3aUlIUjVjR1U5WENKdWRXMWlaWEpjSWlCMllXeDFaVDFjSWx3aUlIQnNZV05sYUc5c1pHVnlQVndpUlc1MFpYSWdRblZrWjJWMFhDSWdYQzgrUEZ3dlpHbDJQbHh5WEc0OFpHbDJJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOTRhWFJtYVhobFpIQnlhV05sYlc5a1pXeGZjSEp2YW1WamRGOWtaV0ZrYkdsdVpWd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzF5YjNjZ2JXRjFkR2xqWm05eWJTMWtZWFJsSUcxaGRYUnBZMlp2Y20wdFptbGxiR1F0Tmx3aVBqeHNZV0psYkNCcFpEMWNJbTFoZFhScFkyWnZjbTFmYkdGaVpXeGZlR2wwWm1sNFpXUndjbWxqWlcxdlpHVnNYM0J5YjJwbFkzUmZaR1ZoWkd4cGJtVmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YkdGaVpXeGNJaUJtYjNJOVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR1pwZUdWa2NISnBZMlZ0YjJSbGJGOXdjbTlxWldOMFgyUmxZV1JzYVc1bFhDSStVSEp2YW1WamRDQkVaV0ZrYkdsdVpUeGNMMnhoWW1Wc1BseHlYRzQ4YVc1d2RYUWdhV1E5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHWnBlR1ZrY0hKcFkyVnRiMlJsYkY5d2NtOXFaV04wWDJSbFlXUnNhVzVsWENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExXbHVjSFYwSUdSaGRHVXRkR2x0WlZ3aUlHNWhiV1U5WENKdFlYVjBhV05tYjNKdFczQnliMnBsWTNSZlpHVmhaR3hwYm1WZFhDSWdkSGx3WlQxY0ltUmhkR1ZjSWlCMllXeDFaVDFjSWx3aUlIQnNZV05sYUc5c1pHVnlQVndpUlc1MFpYSWdVSEp2YW1WamRDQkVaV0ZrYkdsdVpWd2lJRnd2UGp4Y0wyUnBkajVjY2x4dVBGd3ZaR2wyUGx4eVhHNDhaR2wySUdsa1BWd2liV0YxZEdsalptOXliVjk0YVhSbWFYaGxaSEJ5YVdObGJXOWtaV3hmY0hKdmFtVmpkRjlrWlhOamNtbHdkR2x2Ymx3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXliM2NnYldGMWRHbGpabTl5YlMxMFpYaDBJRzFoZFhScFkyWnZjbTB0Wm1sbGJHUXROMXdpUGp4c1lXSmxiQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZiR0ZpWld4ZmVHbDBabWw0WldSd2NtbGpaVzF2WkdWc1gzQnliMnBsWTNSZlpHVnpZM0pwY0hScGIyNWNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YkdGaVpXeGNJaUJtYjNJOVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR1pwZUdWa2NISnBZMlZ0YjJSbGJGOXdjbTlxWldOMFgyUmxjMk55YVhCMGFXOXVYQ0krVUhKdmFtVmpkQ0JFWlhOamNtbHdkR2x2Ymp4Y0wyeGhZbVZzUGx4eVhHNDhkR1Y0ZEdGeVpXRWdhV1E5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHWnBlR1ZrY0hKcFkyVnRiMlJsYkY5d2NtOXFaV04wWDJSbGMyTnlhWEIwYVc5dVhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMWFJsZUhSaGNtVmhJR1p2Y20wdGFXNXdkWFJjSWlCdVlXMWxQVndpYldGMWRHbGpabTl5YlZ0d2NtOXFaV04wWDJSbGMyTnlhWEIwYVc5dVhWd2lJSEJzWVdObGFHOXNaR1Z5UFZ3aVJXNTBaWElnVUhKdmFtVmpkQ0JFWlhOamNtbHdkR2x2Ymx3aVBqeGNMM1JsZUhSaGNtVmhQanhjTDJScGRqNWNjbHh1UEdScGRpQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmVHbDBabWw0WldSd2NtbGpaVzF2WkdWc1gzQnlaV1ptWlhKbFpGOTBaV05vYm05c2IyZDVYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFhKdmR5QnRZWFYwYVdObWIzSnRMWFJsZUhRZ2JXRjFkR2xqWm05eWJTMW1hV1ZzWkMwNFhDSStQR3hoWW1Wc0lHbGtQVndpYldGMWRHbGpabTl5YlY5c1lXSmxiRjk0YVhSbWFYaGxaSEJ5YVdObGJXOWtaV3hmY0hKbFptWmxjbVZrWDNSbFkyaHViMnh2WjNsY0lpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRiR0ZpWld4Y0lpQm1iM0k5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHWnBlR1ZrY0hKcFkyVnRiMlJsYkY5d2NtVm1abVZ5WldSZmRHVmphRzV2Ykc5bmVWd2lQbEJ5WldabVpYSmxaQ0JVWldOb2JtOXNiMmQ1UEZ3dmJHRmlaV3crWEhKY2JqeHBibkIxZENCcFpEMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWm1sNFpXUndjbWxqWlcxdlpHVnNYM0J5WldabVpYSmxaRjkwWldOb2JtOXNiMmQ1WENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExXbHVjSFYwSUdadmNtMHRhVzV3ZFhSY0lpQnVZVzFsUFZ3aWJXRjFkR2xqWm05eWJWdHdjbVZtWm1WeVpXUmZkR1ZqYUc1dmJHOW5lVjFjSWlCMGVYQmxQVndpZEdWNGRGd2lJSFpoYkhWbFBWd2lYQ0lnY0d4aFkyVm9iMnhrWlhJOVhDSkZiblJsY2lCUWNtVm1abVZ5WldRZ1ZHVmphRzV2Ykc5bmVWd2lJRnd2UGp4Y0wyUnBkajVjY2x4dVBHUnBkaUJwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwWm1sNFpXUndjbWxqWlcxdlpHVnNYM04xY0hCdmNuUnBibWRmWkc5amRXMWxiblJjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0Wm1sc1pTQnRZWFYwYVdObWIzSnRMV1pwWld4a0xUbGNJajQ4YkdGaVpXd2dhV1E5WENKdFlYVjBhV05tYjNKdFgyeGhZbVZzWDNocGRHWnBlR1ZrY0hKcFkyVnRiMlJsYkY5emRYQndiM0owYVc1blgyUnZZM1Z0Wlc1MFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV3hoWW1Wc1hDSWdabTl5UFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUm1hWGhsWkhCeWFXTmxiVzlrWld4ZmMzVndjRzl5ZEdsdVoxOWtiMk4xYldWdWRGd2lQbE4xY0hCdmNuUnBibWNnUkc5amRXMWxiblE4WEM5c1lXSmxiRDVjY2x4dVBHbHVjSFYwSUdsa1BWd2liV0YxZEdsalptOXliVjlwYm5CMWRGOTRhWFJtYVhobFpIQnlhV05sYlc5a1pXeGZjM1Z3Y0c5eWRHbHVaMTlrYjJOMWJXVnVkRndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxcGJuQjFkQ0J6Wld4bFkzUXRabWxzWlNCbWIzSnRMV2x1Y0hWMFhDSWdibUZ0WlQxY0ltMWhkWFJwWTJadmNtMWJjM1Z3Y0c5eWRHbHVaMTlrYjJOMWJXVnVkRjFjSWlCMGVYQmxQVndpWm1sc1pWd2lJSFpoYkhWbFBWd2lYQ0lnY0d4aFkyVm9iMnhrWlhJOVhDSlRaV3hsWTNRZ1JtbHNaVndpSUZ3dlBqeGNMMlJwZGo1Y2NseHVQR1JwZGlCcFpEMWNJbTFoZFhScFkyWnZjbTFmZUdsMFptbDRaV1J3Y21salpXMXZaR1ZzWDNOMVltMXBkRndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxeWIzY2diV0YxZEdsalptOXliUzFpZFhSMGIyNHRkM0poY0hCbGNpQnRZWFYwYVdObWIzSnRMV1pwWld4a0xURXdYQ0krUEdKMWRIUnZiaUJwWkQxY0ltMWhkWFJwWTJadmNtMWZhVzV3ZFhSZmVHbDBabWw0WldSd2NtbGpaVzF2WkdWc1gzTjFZbTFwZEZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMWlkWFIwYjI0Z1luUnVJR0owYmkxa1pXWmhkV3gwWENJZ2JtRnRaVDFjSW0xaGRYUnBZMlp2Y20xYmMzVmliV2wwWFZ3aUlIUjVjR1U5WENKemRXSnRhWFJjSWlCMllXeDFaVDFjSWx3aVBsTjFZbTFwZER4Y0wySjFkSFJ2Ymo0OFhDOWthWFkrWEhKY2JqeGNMMlJwZGo1Y2NseHVQRnd2WkdsMlBseHlYRzQ4YVc1d2RYUWdhV1E5WENKdFlYVjBhV05tYjNKdFgzaHBkR1pwZUdWa2NISnBZMlZ0YjJSbGJGOXBaRndpSUc1aGJXVTlYQ0p0WVhWMGFXTm1iM0p0VzJadmNtMUpaRjFjSWlCMGVYQmxQVndpYUdsa1pHVnVYQ0lnZG1Gc2RXVTlYQ0kwWENJZ1hDOCtYSEpjYmp4cGJuQjFkQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwWm1sNFpXUndjbWxqWlcxdlpHVnNYM0psZEhWeWJsd2lJRzVoYldVOVhDSnRZWFYwYVdObWIzSnRXM0psZEhWeWJsMWNJaUIwZVhCbFBWd2lhR2xrWkdWdVhDSWdkbUZzZFdVOVhDSmNJaUJjTHo1Y2NseHVQR2x1Y0hWMElHbGtQVndpYldGMWRHbGpabTl5YlY5NGFYUm1hWGhsWkhCeWFXTmxiVzlrWld4ZmJtRnRaVndpSUc1aGJXVTlYQ0p0WVhWMGFXTm1iM0p0VzJadmNtMU9ZVzFsWFZ3aUlIUjVjR1U5WENKb2FXUmtaVzVjSWlCMllXeDFaVDFjSW5ocGRHWnBlR1ZrY0hKcFkyVnRiMlJsYkZ3aUlGd3ZQbHh5WEc1Y2NseHVQRnd2Wm05eWJUNDhYQzlrYVhZK1hISmNianhjTDJScGRqNGlMQ0p2Ym05bVpuTjNhWFJqYUNJNklrOXVJaXdpYzJodmQxOXZibXg1WDJadmNsOWhkWFJvYjNJaU9pSnZabVlpTENKemFHOTNYMkZzYkNJNkltRnNiQ0lzSW1SbGJHRjVJam9pTUNJc0luTmpjbTlzYkY5MGIzQWlPaUl3SWl3aVlXNXBiV0YwWlY5cGJpSTZJbVpoWkdWSmJpSXNJbUZ1YVcxaGRHVmZiM1YwSWpvaVptRmtaVTkxZENJc0ltRmpkR2x2Ymw5aWRYUjBiMjRpT2lJdVptbDRaV1F0Ylc5a1pXd3RZblJ1SUdKMWRIUnZiaUlzSW5acFpYZGZjR3hoWTJVaU9pSWlMQ0poWTNScGIyNWZZblYwZEc5dVgzUjVjR1VpT2lKamJHbGphMU5sYkdWamRHOXlJaXdpYlc5a1lXeGZZMjl1ZEdWdWRDSTZJbU4xYzNSdmJWOW9kRzFzSWl3aWRtbGxkMTkwZVhCbElqb2laR1ZtWVhWc2RDSXNJbTl1YjJabWIzWmxjbXhoZVNJNklrOXVJaXdpYjNabGNteGhlVjl2Y0dGamFYUjVJam9pTUM0MU1EQXdNREFpTENKemFHOTNYM0J2Y0hWd1gzUnBkR3hsSWpvaVQyWm1JaXdpYzJodmQxOXdiM0IxY0Y5a1pYTmpJam9pVDJabUlpd2lZMnh2YzJWZlluVjBkRzl1SWpvaWIyWm1JaXdpYUdWaFpHVnlYMkpuWTI5c2IzSWlPaUlqWm1abVptWm1JaXdpWW1kZmFXMWhaMlVpT2lJaUxDSnNiMmRmZFhObGNpSTZJazl1SWl3aVozVmxjM1FpT2lKUGJpSXNJbUZqZEdsMlpWOWtZWFJsWDJOb1pXTnJJam9pYjJabUlpd2lZV04wYVhabFNXNTBaWEoyWVd3aU9pSXlNREkwTFRBeExUQTVJREUwT2pFMk9qTTRJaXdpWkdWaFkzUnBkbVZKYm5SbGNuWmhiQ0k2SWpJd01qUXRNREV0TURrZ01UUTZNVFk2TXpnaUxDSndZbDl3YjNOcGRHbHZiaUk2SW1ObGJuUmxjaTFqWlc1MFpYSWlMQ0p3WWw5dFlYSm5hVzRpT2lJd0lpd2liM0IwYVc5dWN5STZJbnRjSW1WdVlXSnNaVjlpWVdOclozSnZkVzVrWDJkeVlXUnBaVzUwWENJNlhDSnZabVpjSWl4Y0ltSmhZMnRuY205MWJtUmZaM0poWkdsbGJuUmZZMjlzYjNKZk1Wd2lPbHdpSXpBd01Gd2lMRndpWW1GamEyZHliM1Z1WkY5bmNtRmthV1Z1ZEY5amIyeHZjbDh5WENJNlhDSWpabVptWENJc1hDSndZbDluY21Ga2FXVnVkRjlrYVhKbFkzUnBiMjVjSWpwY0luWmxjblJwWTJGc1hDSXNYQ0psZUdObGNIUmZjRzl6ZEY5MGVYQmxjMXdpT2x0ZExGd2laWGhqWlhCMFgzQnZjM1J6WENJNlcxMHNYQ0poYkd4ZmNHOXpkSE5jSWpwY0lsd2lMRndpWTJ4dmMyVmZZblYwZEc5dVgyUmxiR0Y1WENJNk1DeGNJbU5zYjNObFgySjFkSFJ2Ymw5a1pXeGhlVjltYjNKZmJXOWlhV3hsWENJNk1DeGNJbVZ1WVdKc1pWOWpiRzl6WlY5aWRYUjBiMjVmWkdWc1lYbGZabTl5WDIxdlltbHNaVndpT2x3aWIyWm1YQ0lzWENKbGJtRmliR1ZmY0dKZmMyOTFibVJjSWpwY0ltOW1abHdpTEZ3aWIzWmxjbXhoZVY5amIyeHZjbHdpT2x3aUl6QXdNRndpTEZ3aVlXNXBiV0YwYVc5dVgzTndaV1ZrWENJNk1TeGNJbU5zYjNObFgyRnVhVzFoZEdsdmJsOXpjR1ZsWkZ3aU9qRXNYQ0p3WWw5dGIySnBiR1ZjSWpwY0ltOW1abHdpTEZ3aVkyeHZjMlZmWW5WMGRHOXVYM1JsZUhSY0lqcGNJbHhjZFRJM01UVmNJaXhjSW1WdVlXSnNaVjlqYkc5elpWOWlkWFIwYjI1ZmRHVjRkRjl0YjJKcGJHVmNJanBjSW05dVhDSXNYQ0pqYkc5elpWOWlkWFIwYjI1ZmRHVjRkRjl0YjJKcGJHVmNJanBjSWx4Y2RUSTNNVFZjSWl4Y0ltTnNiM05sWDJKMWRIUnZibDlvYjNabGNsOTBaWGgwWENJNlhDSmNJaXhjSW0xdlltbHNaVjkzYVdSMGFGd2lPbHdpWENJc1hDSnRiMkpwYkdWZmJXRjRYM2RwWkhSb1hDSTZYQ0pjSWl4Y0ltMXZZbWxzWlY5b1pXbG5hSFJjSWpwY0lsd2lMRndpWTJ4dmMyVmZZblYwZEc5dVgzQnZjMmwwYVc5dVhDSTZYQ0p5YVdkb2RDMTBiM0JjSWl4Y0ltVnVZV0pzWlY5amJHOXpaVjlpZFhSMGIyNWZjRzl6YVhScGIyNWZiVzlpYVd4bFhDSTZYQ0p2Wm1aY0lpeGNJbU5zYjNObFgySjFkSFJ2Ymw5d2IzTnBkR2x2Ymw5dGIySnBiR1ZjSWpwY0luSnBaMmgwTFhSdmNGd2lMRndpYzJodmQxOXZibXg1WDI5dVkyVmNJanBjSW05bVpsd2lMRndpYzJodmQxOXZibDlvYjIxbFgzQmhaMlZjSWpwY0ltOW1abHdpTEZ3aVkyeHZjMlZmY0c5d2RYQmZaWE5qWENJNlhDSnZibHdpTEZ3aWNHOXdkWEJmZDJsa2RHaGZZbmxmY0dWeVkyVnVkR0ZuWlY5d2VGd2lPbHdpY0dsNFpXeHpYQ0lzWENKd2IzQjFjRjlqYjI1MFpXNTBYM0JoWkdScGJtZGNJam95TUN4Y0luQnZjSFZ3WDNCaFpHUnBibWRmWW5sZmNHVnlZMlZ1ZEdGblpWOXdlRndpT2x3aWNHbDRaV3h6WENJc1hDSndZbDltYjI1MFgyWmhiV2xzZVZ3aU9sd2lTVzVvWlhKcGRGd2lMRndpWTJ4dmMyVmZjRzl3ZFhCZmIzWmxjbXhoZVZ3aU9sd2liMjVjSWl4Y0ltTnNiM05sWDNCdmNIVndYMjkyWlhKc1lYbGZiVzlpYVd4bFhDSTZYQ0p2Ymx3aUxGd2laVzVoWW14bFgzQmlYMloxYkd4elkzSmxaVzVjSWpwY0ltOW1abHdpTEZ3aVpXNWhZbXhsWDJocFpHVmZkR2x0WlhKY0lqcGNJbTltWmx3aUxGd2laVzVoWW14bFgyRjFkRzlqYkc5elpWOXZibDlqYjIxd2JHVjBhVzl1WENJNlhDSnZabVpjSWl4Y0ltVnVZV0pzWlY5emIyTnBZV3hmYkdsdWEzTmNJanBjSW05bVpsd2lMRndpYzI5amFXRnNYMnhwYm10elhDSTZlMXdpYkdsdWEyVmthVzVmYkdsdWExd2lPbHdpWENJc1hDSm1ZV05sWW05dmExOXNhVzVyWENJNlhDSmNJaXhjSW5SM2FYUjBaWEpmYkdsdWExd2lPbHdpWENJc1hDSjJhMjl1ZEdGcmRHVmZiR2x1YTF3aU9sd2lYQ0lzWENKNWIzVjBkV0psWDJ4cGJtdGNJanBjSWx3aUxGd2lhVzV6ZEdGbmNtRnRYMnhwYm10Y0lqcGNJbHdpTEZ3aVltVm9ZVzVqWlY5c2FXNXJYQ0k2WENKY0luMHNYQ0p6YjJOcFlXeGZZblYwZEc5dWMxOW9aV0ZrYVc1blhDSTZYQ0pjSWl4Y0ltTnNiM05sWDJKMWRIUnZibDl6YVhwbFhDSTZNU3hjSW1Oc2IzTmxYMkoxZEhSdmJsOXBiV0ZuWlZ3aU9sd2lYQ0lzWENKaWIzSmtaWEpmYzNSNWJHVmNJanBjSWtSdmRIUmxaRndpTEZ3aVlYbHpYM0JpWDJodmRtVnlYM05vYjNkZlkyeHZjMlZmWW5SdVhDSTZYQ0p2Wm1aY0lpeGNJbVJwYzJGaWJHVmZjMk55YjJ4c1hDSTZYQ0p2Wm1aY0lpeGNJbVJwYzJGaWJHVmZjMk55YjJ4c1gyMXZZbWxzWlZ3aU9sd2liMlptWENJc1hDSmxibUZpYkdWZmIzQmxibDlrWld4aGVWOXRiMkpwYkdWY0lqcGNJbTltWmx3aUxGd2liM0JsYmw5a1pXeGhlVjl0YjJKcGJHVmNJanBjSWpCY0lpeGNJbVZ1WVdKc1pWOXpZM0p2Ykd4ZmRHOXdYMjF2WW1sc1pWd2lPbHdpYjJabVhDSXNYQ0p6WTNKdmJHeGZkRzl3WDIxdlltbHNaVndpT2x3aU1Gd2lMRndpWlc1aFlteGxYM0JpWDNCdmMybDBhVzl1WDIxdlltbHNaVndpT2x3aWIyWm1YQ0lzWENKd1lsOXdiM05wZEdsdmJsOXRiMkpwYkdWY0lqcGNJbU5sYm5SbGNpMWpaVzUwWlhKY0lpeGNJbkJpWDJKblgybHRZV2RsWDNCdmMybDBhVzl1WENJNlhDSmpaVzUwWlhJdFkyVnVkR1Z5WENJc1hDSndZbDlpWjE5cGJXRm5aVjl6YVhwcGJtZGNJanBjSW1OdmRtVnlYQ0lzWENKMmFXUmxiMTkwYUdWdFpWOTFjbXhjSWpwY0lsd2lMRndpY0dKZmJXbHVYMmhsYVdkb2RGd2lPbHdpWENJc1hDSndZbDltYjI1MFgzTnBlbVZjSWpveE15eGNJbkJpWDJadmJuUmZjMmw2WlY5bWIzSmZiVzlpYVd4bFhDSTZNVE1zWENKd1lsOTBhWFJzWlY5MFpYaDBYM05vWVdSdmQxd2lPbHdpY21kaVlTZ3lOVFVzTWpVMUxESTFOU3d3S1Z3aUxGd2laVzVoWW14bFgzQmlYM1JwZEd4bFgzUmxlSFJmYzJoaFpHOTNYQ0k2WENKdlptWmNJaXhjSW5CaVgzUnBkR3hsWDNSbGVIUmZjMmhoWkc5M1gzaGZiMlptYzJWMFhDSTZNaXhjSW5CaVgzUnBkR3hsWDNSbGVIUmZjMmhoWkc5M1gzbGZiMlptYzJWMFhDSTZNaXhjSW5CaVgzUnBkR3hsWDNSbGVIUmZjMmhoWkc5M1gzcGZiMlptYzJWMFhDSTZNQ3hjSW1OeVpXRjBaVjlrWVhSbFhDSTZYQ0l5TURJekxURXlMVEEzSURFek9qSTBPak00WENJc1hDSmpjbVZoZEdWZllYVjBhRzl5WENJNk5peGNJbUYxZEdodmNsd2lPbHdpZTF4Y1hDSnBaRnhjWENJNlhGeGNJalpjWEZ3aUxGeGNYQ0p1WVcxbFhGeGNJanBjWEZ3aVMyRnRZV3dnVUhWeWIyaHBkRnhjWENKOVhDSXNYQ0psYm1GaWJHVmZaR2x6YldsemMxd2lPbHdpYjJabVhDSXNYQ0psYm1GaWJHVmZaR2x6YldsemMxOTBaWGgwWENJNlhDSkVhWE50YVhOeklHRmtYQ0lzWENKbGJtRmliR1ZmWW05NFgzTm9ZV1J2ZDF3aU9sd2liMlptWENJc1hDSmliM2hmYzJoaFpHOTNYMk52Ykc5eVhDSTZYQ0lqTURBd1hDSXNYQ0p3WWw5aWIzaGZjMmhoWkc5M1gzaGZiMlptYzJWMFhDSTZNQ3hjSW5CaVgySnZlRjl6YUdGa2IzZGZlVjl2Wm1aelpYUmNJam93TEZ3aWNHSmZZbTk0WDNOb1lXUnZkMTk2WDI5bVpuTmxkRndpT2pFMUxGd2laR2x6WVdKc1pWOXpZM0p2Ykd4ZmIyNWZjRzl3ZFhCY0lqcGNJbTltWmx3aUxGd2laR2x6WVdKc1pWOXpZM0p2Ykd4ZmIyNWZjRzl3ZFhCZmJXOWlhV3hsWENJNlhDSnZabVpjSWl4Y0luTm9iM2RmYzJOeWIyeHNZbUZ5WENJNlhDSnZabVpjSWl4Y0ltaHBaR1ZmYjI1ZmNHTmNJanBjSW05bVpsd2lMRndpYUdsa1pWOXZibDkwWVdKc1pYUnpYQ0k2WENKdlptWmNJaXhjSW5CaVgySm5YMmx0WVdkbFgyUnBjbVZqZEdsdmJsOXZibDl0YjJKcGJHVmNJanBjSW05dVhDSXNYQ0pqYkc5elpWOWlkWFIwYjI1ZlkyOXNiM0pjSWpwY0lpTXdNREF3TURCY0lpeGNJbU5zYjNObFgySjFkSFJ2Ymw5b2IzWmxjbDlqYjJ4dmNsd2lPbHdpSXpBd01EQXdNRndpTEZ3aVlteDFjbVZrWDI5MlpYSnNZWGxjSWpwY0ltOW1abHdpTEZ3aVlteDFjbVZrWDI5MlpYSnNZWGxmYlc5aWFXeGxYQ0k2WENKdlptWmNJaXhjSW5CaVgyRjFkRzlqYkc5elpWOXRiMkpwYkdWY0lqcGNJakl3WENJc1hDSmxibUZpYkdWZllYVjBiMk5zYjNObFgyUmxiR0Y1WDNSbGVIUmZiVzlpYVd4bFhDSTZYQ0p2Wm1aY0lpeGNJbVZ1WVdKc1pWOXZkbVZ5YkdGNVgzUmxlSFJmYlc5aWFXeGxYQ0k2WENKdlptWmNJaXhjSW05MlpYSnNZWGxmYlc5aWFXeGxYMjl3WVdOcGRIbGNJanBjSWpBdU5Wd2lmU0o5ZlE9PSI7CiAgICAgICAgICAgICAgICA=
9 ms
javascript;base64,aWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF81JykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0gZWxzZSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF81JykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0=
8 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiggJCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2Ugc3RyaWN0JzsKICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNob3dfb25seV9vbmNlID0gJ29mZic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNNb2JpbGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbG9zZVBvcHVwT3ZlcmxheSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNQYWdlU2Nyb2xsRGlzYWJsZWQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlUG9wdXBPdmVybGF5ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BhZ2VTY3JvbGxEaXNhYmxlZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcudGltZS1tYXRlcmlhbC1tb2RlbC1idG4gYnV0dG9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfbXVzaWNfc291bmQnKS5jc3MoeydkaXNwbGF5JzonYmxvY2snfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc2hvd19vbmx5X29uY2UgPT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5hamF4KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly93d3cueGNlbGxlbmNlLWl0LmNvbS93cC1hZG1pbi9hZG1pbi1hamF4LnBocCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ3Bvc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdheXNfcGJfc2V0X2Nvb2tpZV9vbmx5X29uY2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ1RpbWUgJmFtcDsgTWF0ZXJpYWwgbW9kZWwgcG9wIHVwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGFBdHRyID0gJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF81JykuYXR0cignZGF0YS1heXMtZmxhZycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfZmxhZyAmJiBkYXRhQXR0ciA9PSAndHJ1ZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfNScpLmNzcygnZGlzcGxheScsJ2Jsb2NrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfNScpLmNzcygncG9pbnRlci1ldmVudHMnLCAnYXV0bycpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA3NjgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl81IHNwYW4nKS5odG1sKCQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfNSBzcGFuJykuYXR0cignZGF0YS1heXMtbW9iaWxlLXNlY29uZHMnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfNSBzcGFuJykuaHRtbCgkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzUgc3BhbicpLmF0dHIoJ2RhdGEtYXlzLXNlY29uZHMnKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyX3BiXzUgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNScpLnJlbW92ZUNsYXNzKCQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfbW9kYWxfYW5pbWF0ZV9vdXRfNScpLnZhbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzUnKS5hZGRDbGFzcygkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX21vZGFsX2FuaW1hdGVfaW5fNScpLnZhbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzUnKS5jc3MoJ2Rpc3BsYXknLCAnYmxvY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA3NjggJiYgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfNScpLmF0dHIoJ2RhdGEtbW9iaWxlLW92ZXJsYXknKSA9PSAndHJ1ZScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfNScpLmNzcyh7J29wYWNpdHknOiAnMC41JywgJ2Rpc3BsYXknOiAnYmxvY2snfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzUnKS5jc3MoeydvcGFjaXR5JzogJzAuNTAwMDAwJywgJ2Rpc3BsYXknOiAnYmxvY2snfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2hlY2tfNScpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNoZWNrXzUnKS5hdHRyKCdjaGVja2VkJywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1tb2RhbC1jaGVja2JveF81JykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCA9ICQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkXzUnKS52YWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zZWNvbmRzID0gKGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQgLyAxMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc291bmRfc3JjID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9zb3VuZF81JykuYXR0cignc3JjJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsb3NlX3NvdW5kX3NyYyA9ICQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfY2xvc2Vfc291bmRfNScpLmF0dHIoJ3NyYycpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkID0gcGFyc2VGbG9hdChheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKSAtIDUwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnb2ZmJyA9PT0gJ29uJyAmJiB0eXBlb2Ygc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNheXNfcGJfc291bmRfNScpLmdldCgwKS5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfcGF1c2Vfc291bmRfNScpLm9uKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfNScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Nsb3NlIHNvdW5kIHN0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfcGF1c2Vfc291bmRfNScpLm9uKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzUnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfNSAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzUnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF81JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF81JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jbG9zZSBzb3VuZCBlbmQKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWVfcGJfc3RyXzUgPSAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzUgc3BhbicpLmF0dHIoJ2RhdGEtYXlzLXNlY29uZHMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA3NjgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1vYmlsZVRpbWVyID0gKyQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfNSBzcGFuJykuYXR0cignZGF0YS1heXMtbW9iaWxlLXNlY29uZHMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl81IHNwYW4nKS5odG1sKG1vYmlsZVRpbWVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV9wYl9zdHJfNSA9IG1vYmlsZVRpbWVyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGltZV9wYl81ID0gcGFyc2VJbnQodGltZV9wYl9zdHJfNSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGltZV9wYl81ICE9PSB1bmRlZmluZWQpeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGltZV9wYl81ICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWVyX3BiXzUgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1RpbWVfcGJfNSA9IHRpbWVfcGJfNS0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF5c19wYl9lZmZlY3RPdXRfNSA9ICQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfbW9kYWxfYW5pbWF0ZV9vdXRfNScpLnZhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl81IHNwYW4nKS50ZXh0KG5ld1RpbWVfcGJfNSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzUnKS5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmltYXRpb24tZHVyYXRpb24nOiBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NlY29uZHMgKyAncycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5ld1RpbWVfcGJfNSA8PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzUnKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNScpLmF0dHIoJ2NsYXNzJywgJ2F5cy1wYi1tb2RhbCBheXMtcGItbW9kYWxfNSBmaXhlZC1wcmljZS1wb3B1cCB0aW1lLW1hdGVyaWFsLXBvcHVwICcrJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX291dF81JykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfNSAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzUnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF81JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX3NvdW5kXzUnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl81KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCcxJyAmJiB0eXBlb2YgY2xvc2Vfc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyAmJiAnb2ZmJyA9PT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAhPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzUnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF81ICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzUnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzUnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl81KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNScpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF81JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzUnKS5vbmUoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc181JykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF81JykuYXR0cignY2xhc3MnLCAnYXlzLXBiLW1vZGFsIGF5cy1wYi1tb2RhbF81IGZpeGVkLXByaWNlLXBvcHVwIHRpbWUtbWF0ZXJpYWwtcG9wdXAgJytheXNfcGJfZWZmZWN0T3V0XzUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5cy1wYi1tb2RhbHMnKS5maW5kKCdpZnJhbWUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSAvaHR0cHM6XC9cL3d3dy55b3V0dWJlLmNvbS87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzcmMgPSAkKHRoaXMpLmF0dHIoJ3NyYycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ3NyYycsICQodGhpcykuYXR0cignc3JjJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5cy1wYi1tb2RhbHMnKS5maW5kKCd2aWRlby53cC12aWRlby1zaG9ydGNvZGUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZiAkKHRoaXMpLmdldCgwKSAhPSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEgJCh0aGlzKS5nZXQoMCkucGF1c2VkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZ2V0KDApLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ2F1ZGlvLndwLWF1ZGlvLXNob3J0Y29kZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mICQodGhpcykuZ2V0KDApICE9ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISAkKHRoaXMpLmdldCgwKS5wYXVzZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5nZXQoMCkucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzUgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNScpLmNzcygnZGlzcGxheScsICdub25lJyk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzUnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV81JykuY3NzKHsnb3BhY2l0eSc6ICcwJywgJ2Rpc3BsYXknOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBheXNfcGJfZmxhZyA9ICB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2tleWRvd24nLCBmdW5jdGlvbihldmVudCkgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgJiYgYXlzX3BiX2ZsYWcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PSAyNykgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNScpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfcGJfZmxhZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdvZmYnID09PSAnb24nICYmIHR5cGVvZiBzb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX3NvdW5kXzUnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl81KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiB0eXBlb2YgY2xvc2Vfc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyAmJiAnb2ZmJyA9PT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c19wYl9jbG9zZV9zb3VuZF81JykuZ2V0KDApLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF81ICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF81JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF81JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzUnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF81JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignY2xpY2tTZWxlY3RvcicgIT0gJ2JvdGgnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNsb3NlUG9wdXBPdmVybGF5ICYmICdPbicgPT0gJ09uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfNScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfcGFyZW50X2RpdiA9ICQodGhpcykuZmluZCgnLmF5cy1wYi1tb2RhbHMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBiX2RpdiA9ICQodGhpcykucGFyZW50cygnLmF5cy1wYi1tb2RhbHMnKS5maW5kKCcuYXlzLXBiLW1vZGFsXzUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYl9wYXJlbnRfZGl2LmlzKHBiX2RpdikgJiYgcGJfcGFyZW50X2Rpdi5oYXMocGJfZGl2KS5sZW5ndGggPT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV81JykuY2xpY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnb2ZmJyA9PT0gJ29uJyAmJiB0eXBlb2Ygc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9zb3VuZF81JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgJiYgdHlwZW9mIGNsb3NlX3NvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ29mZicgPT09ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAhPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNScpLmdldCgwKS5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfNSAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNScpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF81JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjbG9zZVBvcHVwT3ZlcmxheSAmJiAnT24nID09ICdPbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzUnKS5vbignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9wYXJlbnRfZGl2ID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBiX2RpdiA9ICQodGhpcykuZmluZCgnLmF5cy1wYi1tb2RhbF81Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGJfZGl2LmlzKGUudGFyZ2V0KSAmJiBwYl9kaXYuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV81JykuY2xpY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnb2ZmJyA9PT0gJ29uJyAmJiB0eXBlb2Ygc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9zb3VuZF81JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgJiYgdHlwZW9mIGNsb3NlX3NvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ29mZicgPT09ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAhPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNScpLmdldCgwKS5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfNSAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNScpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF81JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNScpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzUnKS5jc3MoJ2Rpc3BsYXknLCdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzUnKS5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbi1kdXJhdGlvbic6IGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc2Vjb25kcyArICdzJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV81Jykub25lKCdjbGljaycsIGZ1bmN0aW9uKCl7ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBheXNfcGJfZWZmZWN0T3V0XzUgPSAkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX21vZGFsX2FuaW1hdGVfb3V0XzUnKS52YWwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfNScpLmNzcygncG9pbnRlci1ldmVudHMnLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF81JykuYXR0cignY2xhc3MnLCAnYXlzLXBiLW1vZGFsIGF5cy1wYi1tb2RhbF81IGZpeGVkLXByaWNlLXBvcHVwIHRpbWUtbWF0ZXJpYWwtcG9wdXAgJytheXNfcGJfZWZmZWN0T3V0XzUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ2lmcmFtZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gL2h0dHBzOlwvXC93d3cueW91dHViZS5jb20vOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzcmMgPSAkKHRoaXMpLmF0dHIoJ3NyYycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignc3JjJywgJCh0aGlzKS5hdHRyKCdzcmMnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5cy1wYi1tb2RhbHMnKS5maW5kKCd2aWRlby53cC12aWRlby1zaG9ydGNvZGUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mICQodGhpcykuZ2V0KDApICE9ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhICQodGhpcykuZ2V0KDApLnBhdXNlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZ2V0KDApLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnYXVkaW8ud3AtYXVkaW8tc2hvcnRjb2RlJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZiAkKHRoaXMpLmdldCgwKSAhPSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISAkKHRoaXMpLmdldCgwKS5wYXVzZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmdldCgwKS5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF81ICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzUnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc181JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzUnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzUnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfNScpLmNzcyh7J29wYWNpdHknOiAnMCcsICdkaXNwbGF5JzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzUGFnZVNjcm9sbERpc2FibGVkKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnYm9keScpLmFkZENsYXNzKCdwYl9kaXNhYmxlX3Njcm9sbF81Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJ2h0bWwnKS5hZGRDbGFzcygncGJfZGlzYWJsZV9zY3JvbGxfNScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KGRvY3VtZW50KS5vbignY2xpY2snLCAnLmF5cy1wYi1tb2RhbC1jbG9zZV81JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCdib2R5JykucmVtb3ZlQ2xhc3MoJ3BiX2Rpc2FibGVfc2Nyb2xsXzUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJ2h0bWwnKS5yZW1vdmVDbGFzcygncGJfZGlzYWJsZV9zY3JvbGxfNScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnT24nICE9ICdPbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV81JykuY3NzKHsnb3BhY2l0eSc6ICcwJywgJ2Rpc3BsYXknOiAnbm9uZSAhaW1wb3J0YW50JywgJ3BvaW50ZXItZXZlbnRzJzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNScpLmNzcygncG9pbnRlci1ldmVudHMnLCAnYXV0bycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc181JykuY3NzKCdwb2ludGVyLWV2ZW50cycsJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCdmYWxzZScgPT0gJ3RydWUnICYmIHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoMCAhPSAwICYmICdvZmYnICE9ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV81JykuY3NzKHsnZGlzcGxheSc6ICdub25lJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzUnKS5jc3MoeydkaXNwbGF5JzogJ2Jsb2NrJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigwICE9IDAgJiYgJ29mZicgIT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzUnKS5jc3MoeydkaXNwbGF5JzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNScpLmNzcyh7J2Rpc3BsYXknOiAnYmxvY2snfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZigwID09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNsb3NlUG9wdXBPdmVybGF5ICYmICdPbicgPT0gJ09uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzUnKS5vbignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfcGFyZW50ID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9kaXYgPSAkKHRoaXMpLmZpbmQoJy5heXMtcGItbW9kYWxfNScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYl9kaXYuaXMoZS50YXJnZXQpICYmIHBiX2Rpdi5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV81JykuY2xpY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBheXNfcGJfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2tleWRvd24nLCBmdW5jdGlvbihldmVudCkgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIGF5c19wYl9mbGFnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09IDI3KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV81JykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfcGJfZmxhZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ09uJyAhPSAnT24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV81JykuY3NzKHsnb3BhY2l0eSc6ICcwJywgJ2Rpc3BsYXknOiAnbm9uZSAhaW1wb3J0YW50JywgJ3BvaW50ZXItZXZlbnRzJzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF81JykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdhdXRvJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfNScpLmNzcygncG9pbnRlci1ldmVudHMnLCdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJ2NsaWNrU2VsZWN0b3InICE9ICdib3RoJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgdmlkZW8nKS5oYXNDbGFzcygnd3AtdmlkZW8tc2hvcnRjb2RlJykpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9XaWR0aCAgPSAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyB2aWRlby53cC12aWRlby1zaG9ydGNvZGUnKS5hdHRyKCd3aWR0aCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9IZWlnaHQgPSAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyB2aWRlby53cC12aWRlby1zaG9ydGNvZGUnKS5hdHRyKCdoZWlnaHQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgLndwLXZpZGVvJykucmVtb3ZlQXR0cignc3R5bGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIC5tZWpzLWNvbnRhaW5lcicpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyB2aWRlby53cC12aWRlby1zaG9ydGNvZGUnKS5yZW1vdmVBdHRyKCdzdHlsZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIC53cC12aWRlbycpLmNzcyh7J3dpZHRoJzogJzEwMCUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyAubWVqcy1jb250YWluZXInKS5jc3Moeyd3aWR0aCc6ICcxMDAlJywnaGVpZ2h0JzogdmlkZW9IZWlnaHQgKyAncHgnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyB2aWRlby53cC12aWRlby1zaG9ydGNvZGUnKS5jc3Moeyd3aWR0aCc6ICcxMDAlJywnaGVpZ2h0JzogdmlkZW9IZWlnaHQgKyAncHgnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sMTAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIGlmcmFtZScpLmF0dHIoJ3N0eWxlJykgIT0gJycpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyBpZnJhbWUnKS5yZW1vdmVBdHRyKCdzdHlsZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDUwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJ29mZicgPT0gJ29uJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlbyA9ICQoZG9jdW1lbnQpLmZpbmQoJ3ZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmlkZW8ubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9baV0uYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLm5leHQoKS52YWwoKSA9PT0gJ29uJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5c192aWRlb193aW5kb3cnKS5maW5kKCcuY2xvc2UtaW1hZ2UtYnRuJykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9KSggalF1ZXJ5ICk7CiAgICAgICAgICAgICAgICA=
6 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mIGF5c1BvcHVwT3B0aW9ucyA9PT0gInVuZGVmaW5lZCIpewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzUG9wdXBPcHRpb25zID0gW107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGF5c1BvcHVwT3B0aW9uc1siNSJdICA9ICJleUp3YjNCMWNHSnZlQ0k2ZXlKcFpDSTZJalVpTENKMGFYUnNaU0k2SWxScGJXVWdKaUJOWVhSbGNtbGhiQ0J0YjJSbGJDQndiM0FnZFhBaUxDSndiM0IxY0Y5dVlXMWxJam9pSWl3aVpHVnpZM0pwY0hScGIyNGlPaUlpTENKallYUmxaMjl5ZVY5cFpDSTZJakVpTENKaGRYUnZZMnh2YzJVaU9pSXdJaXdpWTI5dmEybGxJam9pTUNJc0luZHBaSFJvSWpveE1EVXdMQ0pvWldsbmFIUWlPamMxTUN3aVltZGpiMnh2Y2lJNklpTm1abVptWm1ZaUxDSjBaWGgwWTI5c2IzSWlPaUlqTURBd01EQXdJaXdpWW05eVpHVnljMmw2WlNJNklqRWlMQ0ppYjNKa1pYSmpiMnh2Y2lJNklpTm1abVptWm1ZaUxDSmliM0prWlhKZmNtRmthWFZ6SWpvaU5DSXNJbk5vYjNKMFkyOWtaU0k2SWlJc0luVnpaWEp6WDNKdmJHVWlPaUpiWFNJc0ltTjFjM1J2YlY5amJHRnpjeUk2SW1acGVHVmtMWEJ5YVdObExYQnZjSFZ3SUhScGJXVXRiV0YwWlhKcFlXd3RjRzl3ZFhBaUxDSmpkWE4wYjIxZlkzTnpJam9pSWl3aVkzVnpkRzl0WDJoMGJXd2lPaUk4WkdsMklHTnNZWE56UFZ3aVptbDRaV1F0Y0hKcFkyVXRjRzl3ZFhBdGFHVmhaRndpUGx4eVhHNDhhRE0rUTJodmIzTmxJRlJwYldVZ1lXNWtJRTFoZEdWeWFXRnNQRnd2YURNK1hISmNianhjTDJScGRqNWNjbHh1UEdScGRpQmpiR0Z6Y3oxY0ltWnBlR1ZrTFhCdmNIVndMV0p2WkhsY0lqNWNjbHh1UEdScGRpQmpiR0Z6Y3oxY0ltWnBlR1ZrTFhCdmNIVndMWFJsZUhRdGMybGtaVndpUGx4eVhHNDhaR2wySUdOc1lYTnpQVndpWm1sNFpXUXRjRzl3ZFhBdGRHVjRkQzEwYVhSc1pWd2lQbHh5WEc0OGFETStRMjl1ZEdGamRDQkpibVp2Y20xaGRHbHZianhjTDJnelBseHlYRzQ4WEM5a2FYWStYSEpjYmp4a2FYWWdZMnhoYzNNOVhDSm1hWGhsWkMxd2IzQjFjQzEwWlhoMExXTnZiVzF2Ymx3aVBseHlYRzVjY2x4dVJtbHNiQ0IxY0NCMGFHVWdabTl5YlNCaGJtUWdiM1Z5SUZSbFlXMGdkMmxzYkNCblpYUWdZbUZqYXlCMGJ5QjViM1VnZDJsMGFHbHVJREkwSUdodmRYSnpMbHh5WEc1Y2NseHVQRnd2WkdsMlBseHlYRzQ4WkdsMklHTnNZWE56UFZ3aVptbDRaV1F0Y0c5d2RYQXRkR1Y0ZEMxamIyNTBZV04wWENJK1BHRWdhSEpsWmoxY0luUmxiRG9yT1RFdE9Ua3dPVGsxTlRrME9Gd2lQaXM1TVMwNU9UQTVPVFUxT1RRNFBGd3ZZVDQ4WEM5a2FYWStYSEpjYmp4a2FYWWdZMnhoYzNNOVhDSm1hWGhsWkMxd2IzQjFjQzEwWlhoMExXVnRZV2xzWENJK1BHRWdhSEpsWmoxY0ltMWhhV3gwYnpwcGJtWnZRSGhqWld4c1pXNWpaUzFwZEM1amIyMWNJajVwYm1adlFIaGpaV3hzWlc1alpTMXBkQzVqYjIwOFhDOWhQanhjTDJScGRqNWNjbHh1UEhWc0lHTnNZWE56UFZ3aWMyOWphV0ZzTFd4cGJtdHpYQ0krWEhKY2JpQWdJQ0FnSUNBZ1BHeHBJR05zWVhOelBWd2ljMjlqYVdGc0xXeHBibXR6TFd4cGMzUmNJajVjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdQR0VnYUhKbFpqMWNJbWgwZEhCek9sd3ZYQzkzZDNjdVptRmpaV0p2YjJzdVkyOXRYQzlZWTJWc2JHVnVZMlZKVkZ3dlhDSWdkR0Z5WjJWMFBWd2lYMkpzWVc1clhDSStQR2tnWTJ4aGMzTTlYQ0pwWTI5dUxXWmhZMlZpYjI5clhDSStQRnd2YVQ0OFhDOWhQbHh5WEc0Z0lDQWdJQ0FnSUR4Y0wyeHBQbHh5WEc0Z0lDQWdJQ0FnSUR4c2FTQmpiR0Z6Y3oxY0luTnZZMmxoYkMxc2FXNXJjeTFzYVhOMFhDSStYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lEeGhJR2h5WldZOVhDSm9kSFJ3Y3pwY0wxd3ZkM2QzTG1sdWMzUmhaM0poYlM1amIyMWNMM2hqWld4c1pXNWpaV2wwWEM4L2FHdzlaVzVjSWlCMFlYSm5aWFE5WENKZllteGhibXRjSWo0OGFTQmpiR0Z6Y3oxY0ltbGpiMjR0YVc1emRHRmNJajQ4WEM5cFBqeGNMMkUrWEhKY2JpQWdJQ0FnSUNBZ1BGd3ZiR2srWEhKY2JpQWdJQ0FnSUNBZ1BHeHBJR05zWVhOelBWd2ljMjlqYVdGc0xXeHBibXR6TFd4cGMzUmNJajVjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdQR0VnYUhKbFpqMWNJbWgwZEhCek9sd3ZYQzlwYmk1c2FXNXJaV1JwYmk1amIyMWNMMk52YlhCaGJubGNMM2hqWld4c1pXNWpaUzFwZEZ3aUlIUmhjbWRsZEQxY0lsOWliR0Z1YTF3aVBqeHBJR05zWVhOelBWd2lhV052Ymkxc2FXNXJaV1JwYmx3aVBqeGNMMmsrUEZ3dllUNWNjbHh1SUNBZ0lDQWdJQ0E4WEM5c2FUNWNjbHh1SUNBZ0lDQWdJQ0E4YkdrZ1kyeGhjM005WENKemIyTnBZV3d0YkdsdWEzTXRiR2x6ZEZ3aVBseHlYRzRnSUNBZ0lDQWdJQ0FnSUNBOFlTQm9jbVZtUFZ3aWFIUjBjSE02WEM5Y0wzUjNhWFIwWlhJdVkyOXRYQzk0WTJWc2JHVnVZMlZwZEQ5c1lXNW5QV1Z1WENJZ2RHRnlaMlYwUFZ3aVgySnNZVzVyWENJK1BHa2dZMnhoYzNNOVhDSnBZMjl1TFhSM2FYUjBaWEpjSWo0OFhDOXBQanhjTDJFK1hISmNiaUFnSUNBZ0lDQWdQRnd2YkdrK1hISmNiaUFnSUNBZ0lDQThYQzkxYkQ1Y2NseHVQR1JwZGlCamJHRnpjejFjSW1acGVHVmtMWEJ2Y0hWd0xXSnZkSFJ2YlMxMFpYaDBYQ0krWEhKY2JseHlYRzVYWlNCaGMzTjFjbVVnWVdKemIyeDFkR1VnY0hKdmRHVmpkR2x2YmlCdlppQjViM1Z5SUdSaGRHRXVJRlJvWlNCcGJtWnZjbTFoZEdsdmJpQjViM1ZjZFRJd01UbDJaU0J3Y205MmFXUmxaQ0IzYVd4c0lISmxiV0ZwYmlCamIyNW1hV1JsYm5ScFlXd2dZVzVrSUhkdmJseDFNakF4T1hRZ1ltVWdjMmhoY21Wa0lIZHBkR2dnWVc1NUlIUm9hWEprSUhCaGNuUnBaWE11SUZKbGMzUWdZWE56ZFhKbFpDd2dlVzkxY2lCbGJXRnBiQ0IzYVd4c0lHNXZkQ0JpWlNCMWMyVmtJR1p2Y2lCaGJua2dkVzV6YjJ4cFkybDBaV1FnWTI5dGJYVnVhV05oZEdsdmJpNWNjbHh1WEhKY2JqeGNMMlJwZGo1Y2NseHVQRnd2WkdsMlBseHlYRzQ4SVMwdElGdG5jbUYyYVhSNVptOXliU0JwWkQxY0lqWmNJaUJoYW1GNFBWd2lkSEoxWlZ3aUlIUnBkR3hsUFZ3aWRISjFaVndpWFNBdExUNWNjbHh1UEdScGRpQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmQzSmhjSEJsY2w5NGFYUjBhVzFsWVc1a2JXRjBaWEpwWVd4Y0lpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMWZkM0poY0hCbGNpQm1iM0p0TFdSbGRHRnBiSE5jSWo0OFptOXliU0JwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwZEdsdFpXRnVaRzFoZEdWeWFXRnNYQ0lnY205c1pUMWNJbVp2Y20xY0lpQmhZM1JwYjI0OVhDSm9kSFJ3Y3pwY0wxd3ZiV0V1Ym05d1lXTmpaV3hsY21GMFpTNWpiMjFjTDJadmNtMWNMM04xWW0xcGREOW1iM0p0U1dROU5sd2lJR0YxZEc5amIyMXdiR1YwWlQxY0ltWmhiSE5sWENJZ1pXNWpkSGx3WlQxY0ltMTFiSFJwY0dGeWRGd3ZabTl5YlMxa1lYUmhYQ0lnYldWMGFHOWtQVndpY0c5emRGd2lJR1JoZEdFdGJXRjFkR2xqTFdadmNtMDlYQ0o0YVhSMGFXMWxZVzVrYldGMFpYSnBZV3hjSWo1Y2NseHVQR1JwZGlCcFpEMWNJbTFoZFhScFkyWnZjbTFmZUdsMGRHbHRaV0Z1WkcxaGRHVnlhV0ZzWDJWeWNtOXlYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFdWeWNtOXlYQ0krUEZ3dlpHbDJQbHh5WEc0OFpHbDJJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOTRhWFIwYVcxbFlXNWtiV0YwWlhKcFlXeGZiV1Z6YzJGblpWd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzF0WlhOellXZGxJSE4xWTJObGMzTm1kV3hzZVMxemRXSnRhWFJjSWo0OFhDOWthWFkrWEhKY2JqeGthWFlnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFdsdWJtVnlabTl5YlZ3aVBseHlYRzQ4WkdsMklHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXdZV2RsTFhkeVlYQndaWElnYldGMWRHbGpabTl5YlMxd1lXZGxMVEZjSWlCa1lYUmhMVzFoZFhScFl5MW1iM0p0TFhCaFoyVTlYQ0l4WENJK1hISmNianhrYVhZZ1kyeGhjM005WENKbWIzSnRMWE5sWTNScGIyNWNJajVjY2x4dVBHUnBkaUJwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwZEdsdFpXRnVaRzFoZEdWeWFXRnNYMlpwY25OMFgyNWhiV1ZjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0ZEdWNGRDQnRZWFYwYVdObWIzSnRMV1pwWld4a0xURWdiV0YxZEdsalptOXliUzF5WlhGMWFYSmxaRndpSUdSaGRHRXRkbUZzYVdSaGRHVTlYQ0ptYVhKemRGOXVZVzFsWENJZ1pHRjBZUzEyWVd4cFpHRjBhVzl1TFhSNWNHVTlYQ0owWlhoMFhDSStQR3hoWW1Wc0lHbGtQVndpYldGMWRHbGpabTl5YlY5c1lXSmxiRjk0YVhSMGFXMWxZVzVrYldGMFpYSnBZV3hmWm1seWMzUmZibUZ0WlZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXNZV0psYkZ3aUlHWnZjajFjSW0xaGRYUnBZMlp2Y20xZmFXNXdkWFJmZUdsMGRHbHRaV0Z1WkcxaGRHVnlhV0ZzWDJacGNuTjBYMjVoYldWY0lqNUdhWEp6ZENCT1lXMWxQRnd2YkdGaVpXdytYSEpjYmp4cGJuQjFkQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZhVzV3ZFhSZmVHbDBkR2x0WldGdVpHMWhkR1Z5YVdGc1gyWnBjbk4wWDI1aGJXVmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YVc1d2RYUmNJaUJ1WVcxbFBWd2liV0YxZEdsalptOXliVnRtYVhKemRGOXVZVzFsWFZ3aUlIUjVjR1U5WENKMFpYaDBYQ0lnZG1Gc2RXVTlYQ0pjSWlCd2JHRmpaV2h2YkdSbGNqMWNJa1Z1ZEdWeUlFWnBjbk4wSUU1aGJXVmNJaUJjTHo1Y2NseHVQSE53WVc0Z1kyeGhjM005WENKdFlYVjBhV05tYjNKdExXVnljbTl5YlhOblhDSWdjM1I1YkdVOVhDSmthWE53YkdGNU9pQnViMjVsTzF3aVBsUm9hWE1nYVhNZ2NtVnhkV2x5WldRdVBGd3ZjM0JoYmo0OFhDOWthWFkrWEhKY2JqeGthWFlnYVdROVhDSnRZWFYwYVdObWIzSnRYM2hwZEhScGJXVmhibVJ0WVhSbGNtbGhiRjlzWVhOMFgyNWhiV1ZjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0ZEdWNGRDQnRZWFYwYVdObWIzSnRMV1pwWld4a0xUSWdiV0YxZEdsalptOXliUzF5WlhGMWFYSmxaRndpSUdSaGRHRXRkbUZzYVdSaGRHVTlYQ0pzWVhOMFgyNWhiV1ZjSWlCa1lYUmhMWFpoYkdsa1lYUnBiMjR0ZEhsd1pUMWNJblJsZUhSY0lqNDhiR0ZpWld3Z2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDJ4aFltVnNYM2hwZEhScGJXVmhibVJ0WVhSbGNtbGhiRjlzWVhOMFgyNWhiV1ZjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGJHRmlaV3hjSWlCbWIzSTlYQ0p0WVhWMGFXTm1iM0p0WDJsdWNIVjBYM2hwZEhScGJXVmhibVJ0WVhSbGNtbGhiRjlzWVhOMFgyNWhiV1ZjSWo1TVlYTjBJRTVoYldVOFhDOXNZV0psYkQ1Y2NseHVQR2x1Y0hWMElHbGtQVndpYldGMWRHbGpabTl5YlY5cGJuQjFkRjk0YVhSMGFXMWxZVzVrYldGMFpYSnBZV3hmYkdGemRGOXVZVzFsWENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExXbHVjSFYwWENJZ2JtRnRaVDFjSW0xaGRYUnBZMlp2Y20xYmJHRnpkRjl1WVcxbFhWd2lJSFI1Y0dVOVhDSjBaWGgwWENJZ2RtRnNkV1U5WENKY0lpQndiR0ZqWldodmJHUmxjajFjSWtWdWRHVnlJRXhoYzNRZ1RtRnRaVndpSUZ3dlBseHlYRzQ4YzNCaGJpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRaWEp5YjNKdGMyZGNJaUJ6ZEhsc1pUMWNJbVJwYzNCc1lYazZJRzV2Ym1VN1hDSStWR2hwY3lCcGN5QnlaWEYxYVhKbFpDNDhYQzl6Y0dGdVBqeGNMMlJwZGo1Y2NseHVQRnd2WkdsMlBseHlYRzQ4WkdsMklHTnNZWE56UFZ3aVptOXliUzF6WldOMGFXOXVYQ0krWEhKY2JqeGthWFlnYVdROVhDSnRZWFYwYVdObWIzSnRYM2hwZEhScGJXVmhibVJ0WVhSbGNtbGhiRjlsYldGcGJGd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzF5YjNjZ2JXRjFkR2xqWm05eWJTMWxiV0ZwYkNCdFlYVjBhV05tYjNKdExXWnBaV3hrTFRNZ2JXRjFkR2xqWm05eWJTMXlaWEYxYVhKbFpGd2lJR1JoZEdFdGRtRnNhV1JoZEdVOVhDSmxiV0ZwYkZ3aUlHUmhkR0V0ZG1Gc2FXUmhkR2x2YmkxMGVYQmxQVndpWlcxaGFXeGNJajQ4YkdGaVpXd2dhV1E5WENKdFlYVjBhV05tYjNKdFgyeGhZbVZzWDNocGRIUnBiV1ZoYm1SdFlYUmxjbWxoYkY5bGJXRnBiRndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxc1lXSmxiRndpSUdadmNqMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwZEdsdFpXRnVaRzFoZEdWeWFXRnNYMlZ0WVdsc1hDSStSVzFoYVd3OFhDOXNZV0psYkQ1Y2NseHVQR2x1Y0hWMElHbGtQVndpYldGMWRHbGpabTl5YlY5cGJuQjFkRjk0YVhSMGFXMWxZVzVrYldGMFpYSnBZV3hmWlcxaGFXeGNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YVc1d2RYUmNJaUJ1WVcxbFBWd2liV0YxZEdsalptOXliVnRsYldGcGJGMWNJaUIwZVhCbFBWd2laVzFoYVd4Y0lpQjJZV3gxWlQxY0lsd2lJSEJzWVdObGFHOXNaR1Z5UFZ3aVJXNTBaWElnUlcxaGFXeGNJaUJjTHo1Y2NseHVQSE53WVc0Z1kyeGhjM005WENKdFlYVjBhV05tYjNKdExXVnljbTl5YlhOblhDSWdjM1I1YkdVOVhDSmthWE53YkdGNU9pQnViMjVsTzF3aVBsUm9hWE1nYVhNZ2NtVnhkV2x5WldRdVBGd3ZjM0JoYmo0OFhDOWthWFkrWEhKY2JqeGthWFlnYVdROVhDSnRZWFYwYVdObWIzSnRYM2hwZEhScGJXVmhibVJ0WVhSbGNtbGhiRjlqYjI1MFlXTjBYMjUxYldKbGNsd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzF5YjNjZ2JXRjFkR2xqWm05eWJTMTBaV3dnYldGMWRHbGpabTl5YlMxbWFXVnNaQzAwSUcxaGRYUnBZMlp2Y20wdGNtVnhkV2x5WldSY0lpQmtZWFJoTFhaaGJHbGtZWFJsUFZ3aVkyOXVkR0ZqZEY5dWRXMWlaWEpjSWlCa1lYUmhMWFpoYkdsa1lYUnBiMjR0ZEhsd1pUMWNJblJsYkZ3aVBqeHNZV0psYkNCcFpEMWNJbTFoZFhScFkyWnZjbTFmYkdGaVpXeGZlR2wwZEdsdFpXRnVaRzFoZEdWeWFXRnNYMk52Ym5SaFkzUmZiblZ0WW1WeVhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV3hoWW1Wc1hDSWdabTl5UFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUjBhVzFsWVc1a2JXRjBaWEpwWVd4ZlkyOXVkR0ZqZEY5dWRXMWlaWEpjSWo1UWFHOXVaU0JPZFcxaVpYSThYQzlzWVdKbGJENWNjbHh1UEdsdWNIVjBJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUjBhVzFsWVc1a2JXRjBaWEpwWVd4ZlkyOXVkR0ZqZEY5dWRXMWlaWEpjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGFXNXdkWFJjSWlCdVlXMWxQVndpYldGMWRHbGpabTl5YlZ0amIyNTBZV04wWDI1MWJXSmxjbDFjSWlCMGVYQmxQVndpZEdWc1hDSWdkbUZzZFdVOVhDSmNJaUJ3YkdGalpXaHZiR1JsY2oxY0lrVnVkR1Z5SUZCb2IyNWxJRzV2TGx3aUlGd3ZQbHh5WEc0OGMzQmhiaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0WlhKeWIzSnRjMmRjSWlCemRIbHNaVDFjSW1ScGMzQnNZWGs2SUc1dmJtVTdYQ0krVkdocGN5QnBjeUJ5WlhGMWFYSmxaQzQ4WEM5emNHRnVQanhjTDJScGRqNWNjbHh1UEZ3dlpHbDJQbHh5WEc0OFpHbDJJR05zWVhOelBWd2labTl5YlMxelpXTjBhVzl1WENJK1hISmNianhrYVhZZ2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDNocGRIUnBiV1ZoYm1SdFlYUmxjbWxoYkY5aGNIQnliM2hmWW5Wa1oyVjBYM1Z6WkZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXliM2NnYldGMWRHbGpabTl5YlMxdWRXMWlaWElnYldGMWRHbGpabTl5YlMxbWFXVnNaQzAxWENJK1BHeGhZbVZzSUdsa1BWd2liV0YxZEdsalptOXliVjlzWVdKbGJGOTRhWFIwYVcxbFlXNWtiV0YwWlhKcFlXeGZZWEJ3Y205NFgySjFaR2RsZEY5MWMyUmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YkdGaVpXeGNJaUJtYjNJOVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkSFJwYldWaGJtUnRZWFJsY21saGJGOWhjSEJ5YjNoZlluVmtaMlYwWDNWelpGd2lQa0Z3Y0hKdmVDQkNkV1JuWlhRZ0tGVlRSQ2s4WEM5c1lXSmxiRDVjY2x4dVBHbHVjSFYwSUdsa1BWd2liV0YxZEdsalptOXliVjlwYm5CMWRGOTRhWFIwYVcxbFlXNWtiV0YwWlhKcFlXeGZZWEJ3Y205NFgySjFaR2RsZEY5MWMyUmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YVc1d2RYUmNJaUJ1WVcxbFBWd2liV0YxZEdsalptOXliVnRoY0hCeWIzaGZZblZrWjJWMFgzVnpaRjFjSWlCMGVYQmxQVndpYm5WdFltVnlYQ0lnZG1Gc2RXVTlYQ0pjSWlCd2JHRmpaV2h2YkdSbGNqMWNJa1Z1ZEdWeUlFSjFaR2RsZEZ3aUlGd3ZQanhjTDJScGRqNWNjbHh1UEdScGRpQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmVHbDBkR2x0WldGdVpHMWhkR1Z5YVdGc1gzQnliMnBsWTNSZlpHVmhaR3hwYm1WY0lpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRjbTkzSUcxaGRYUnBZMlp2Y20wdFpHRjBaU0J0WVhWMGFXTm1iM0p0TFdacFpXeGtMVFpjSWo0OGJHRmlaV3dnYVdROVhDSnRZWFYwYVdObWIzSnRYMnhoWW1Wc1gzaHBkSFJwYldWaGJtUnRZWFJsY21saGJGOXdjbTlxWldOMFgyUmxZV1JzYVc1bFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV3hoWW1Wc1hDSWdabTl5UFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUjBhVzFsWVc1a2JXRjBaWEpwWVd4ZmNISnZhbVZqZEY5a1pXRmtiR2x1WlZ3aVBsQnliMnBsWTNRZ1JHVmhaR3hwYm1VOFhDOXNZV0psYkQ1Y2NseHVQR2x1Y0hWMElHbGtQVndpYldGMWRHbGpabTl5YlY5cGJuQjFkRjk0YVhSMGFXMWxZVzVrYldGMFpYSnBZV3hmY0hKdmFtVmpkRjlrWldGa2JHbHVaVndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxcGJuQjFkQ0JrWVhSbExYUnBiV1ZjSWlCdVlXMWxQVndpYldGMWRHbGpabTl5YlZ0d2NtOXFaV04wWDJSbFlXUnNhVzVsWFZ3aUlIUjVjR1U5WENKa1lYUmxYQ0lnZG1Gc2RXVTlYQ0pjSWlCd2JHRmpaV2h2YkdSbGNqMWNJa1Z1ZEdWeUlGQnliMnBsWTNRZ1JHVmhaR3hwYm1WY0lpQmNMejQ4WEM5a2FYWStYSEpjYmp4Y0wyUnBkajVjY2x4dVBHUnBkaUJwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwZEdsdFpXRnVaRzFoZEdWeWFXRnNYM0J5YjJwbFkzUmZaR1Z6WTNKcGNIUnBiMjVjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0ZEdWNGRDQnRZWFYwYVdObWIzSnRMV1pwWld4a0xUZGNJajQ4YkdGaVpXd2dhV1E5WENKdFlYVjBhV05tYjNKdFgyeGhZbVZzWDNocGRIUnBiV1ZoYm1SdFlYUmxjbWxoYkY5d2NtOXFaV04wWDJSbGMyTnlhWEIwYVc5dVhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV3hoWW1Wc1hDSWdabTl5UFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUjBhVzFsWVc1a2JXRjBaWEpwWVd4ZmNISnZhbVZqZEY5a1pYTmpjbWx3ZEdsdmJsd2lQbEJ5YjJwbFkzUWdSR1Z6WTNKcGNIUnBiMjQ4WEM5c1lXSmxiRDVjY2x4dVBIUmxlSFJoY21WaElHbGtQVndpYldGMWRHbGpabTl5YlY5cGJuQjFkRjk0YVhSMGFXMWxZVzVrYldGMFpYSnBZV3hmY0hKdmFtVmpkRjlrWlhOamNtbHdkR2x2Ymx3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMTBaWGgwWVhKbFlTQm1iM0p0TFdsdWNIVjBYQ0lnYm1GdFpUMWNJbTFoZFhScFkyWnZjbTFiY0hKdmFtVmpkRjlrWlhOamNtbHdkR2x2YmwxY0lpQndiR0ZqWldodmJHUmxjajFjSWtWdWRHVnlJRkJ5YjJwbFkzUWdSR1Z6WTNKcGNIUnBiMjVjSWo0OFhDOTBaWGgwWVhKbFlUNDhYQzlrYVhZK1hISmNianhrYVhZZ2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDNocGRIUnBiV1ZoYm1SdFlYUmxjbWxoYkY5d2NtVm1abVZ5WldSZmRHVmphRzV2Ykc5bmVWd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzF5YjNjZ2JXRjFkR2xqWm05eWJTMTBaWGgwSUcxaGRYUnBZMlp2Y20wdFptbGxiR1F0T0Z3aVBqeHNZV0psYkNCcFpEMWNJbTFoZFhScFkyWnZjbTFmYkdGaVpXeGZlR2wwZEdsdFpXRnVaRzFoZEdWeWFXRnNYM0J5WldabVpYSmxaRjkwWldOb2JtOXNiMmQ1WENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExXeGhZbVZzWENJZ1ptOXlQVndpYldGMWRHbGpabTl5YlY5cGJuQjFkRjk0YVhSMGFXMWxZVzVrYldGMFpYSnBZV3hmY0hKbFptWmxjbVZrWDNSbFkyaHViMnh2WjNsY0lqNVFjbVZtWm1WeVpXUWdWR1ZqYUc1dmJHOW5lVHhjTDJ4aFltVnNQbHh5WEc0OGFXNXdkWFFnYVdROVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkSFJwYldWaGJtUnRZWFJsY21saGJGOXdjbVZtWm1WeVpXUmZkR1ZqYUc1dmJHOW5lVndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxcGJuQjFkQ0JtYjNKdExXbHVjSFYwWENJZ2JtRnRaVDFjSW0xaGRYUnBZMlp2Y20xYmNISmxabVpsY21Wa1gzUmxZMmh1YjJ4dlozbGRYQ0lnZEhsd1pUMWNJblJsZUhSY0lpQjJZV3gxWlQxY0lsd2lJSEJzWVdObGFHOXNaR1Z5UFZ3aVJXNTBaWElnVUhKbFptWmxjbVZrSUZSbFkyaHViMnh2WjNsY0lpQmNMejQ4WEM5a2FYWStYSEpjYmp4a2FYWWdhV1E5WENKdFlYVjBhV05tYjNKdFgzaHBkSFJwYldWaGJtUnRZWFJsY21saGJGOXpkWEJ3YjNKMGFXNW5YMlJ2WTNWdFpXNTBYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFhKdmR5QnRZWFYwYVdObWIzSnRMV1pwYkdVZ2JXRjFkR2xqWm05eWJTMW1hV1ZzWkMwNVhDSStQR3hoWW1Wc0lHbGtQVndpYldGMWRHbGpabTl5YlY5c1lXSmxiRjk0YVhSMGFXMWxZVzVrYldGMFpYSnBZV3hmYzNWd2NHOXlkR2x1WjE5a2IyTjFiV1Z1ZEZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXNZV0psYkZ3aUlHWnZjajFjSW0xaGRYUnBZMlp2Y20xZmFXNXdkWFJmZUdsMGRHbHRaV0Z1WkcxaGRHVnlhV0ZzWDNOMWNIQnZjblJwYm1kZlpHOWpkVzFsYm5SY0lqNVRkWEJ3YjNKMGFXNW5JRVJ2WTNWdFpXNTBQRnd2YkdGaVpXdytYSEpjYmp4cGJuQjFkQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZhVzV3ZFhSZmVHbDBkR2x0WldGdVpHMWhkR1Z5YVdGc1gzTjFjSEJ2Y25ScGJtZGZaRzlqZFcxbGJuUmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YVc1d2RYUWdjMlZzWldOMExXWnBiR1VnWm05eWJTMXBibkIxZEZ3aUlHNWhiV1U5WENKdFlYVjBhV05tYjNKdFczTjFjSEJ2Y25ScGJtZGZaRzlqZFcxbGJuUmRYQ0lnZEhsd1pUMWNJbVpwYkdWY0lpQjJZV3gxWlQxY0lsd2lJSEJzWVdObGFHOXNaR1Z5UFZ3aVUyVnNaV04wSUVacGJHVmNJaUJjTHo0OFhDOWthWFkrWEhKY2JqeGthWFlnYVdROVhDSnRZWFYwYVdObWIzSnRYM2hwZEhScGJXVmhibVJ0WVhSbGNtbGhiRjl6ZFdKdGFYUmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0Y205M0lHMWhkWFJwWTJadmNtMHRZblYwZEc5dUxYZHlZWEJ3WlhJZ2JXRjFkR2xqWm05eWJTMW1hV1ZzWkMweE1Gd2lQanhpZFhSMGIyNGdhV1E5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRIUnBiV1ZoYm1SdFlYUmxjbWxoYkY5emRXSnRhWFJjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdFluVjBkRzl1SUdKMGJpQmlkRzR0WkdWbVlYVnNkRndpSUc1aGJXVTlYQ0p0WVhWMGFXTm1iM0p0VzNOMVltMXBkRjFjSWlCMGVYQmxQVndpYzNWaWJXbDBYQ0lnZG1Gc2RXVTlYQ0pjSWo1VGRXSnRhWFE4WEM5aWRYUjBiMjQrUEZ3dlpHbDJQbHh5WEc0OFhDOWthWFkrWEhKY2JqeGNMMlJwZGo1Y2NseHVQR2x1Y0hWMElHbGtQVndpYldGMWRHbGpabTl5YlY5NGFYUjBhVzFsWVc1a2JXRjBaWEpwWVd4ZmFXUmNJaUJ1WVcxbFBWd2liV0YxZEdsalptOXliVnRtYjNKdFNXUmRYQ0lnZEhsd1pUMWNJbWhwWkdSbGJsd2lJSFpoYkhWbFBWd2lObHdpSUZ3dlBseHlYRzQ4YVc1d2RYUWdhV1E5WENKdFlYVjBhV05tYjNKdFgzaHBkSFJwYldWaGJtUnRZWFJsY21saGJGOXlaWFIxY201Y0lpQnVZVzFsUFZ3aWJXRjFkR2xqWm05eWJWdHlaWFIxY201ZFhDSWdkSGx3WlQxY0ltaHBaR1JsYmx3aUlIWmhiSFZsUFZ3aVhDSWdYQzgrWEhKY2JqeHBibkIxZENCcFpEMWNJbTFoZFhScFkyWnZjbTFmZUdsMGRHbHRaV0Z1WkcxaGRHVnlhV0ZzWDI1aGJXVmNJaUJ1WVcxbFBWd2liV0YxZEdsalptOXliVnRtYjNKdFRtRnRaVjFjSWlCMGVYQmxQVndpYUdsa1pHVnVYQ0lnZG1Gc2RXVTlYQ0o0YVhSMGFXMWxZVzVrYldGMFpYSnBZV3hjSWlCY0x6NWNjbHh1WEhKY2JqeGNMMlp2Y20wK1BGd3ZaR2wyUGx4eVhHNDhYQzlrYVhZK0lpd2liMjV2Wm1aemQybDBZMmdpT2lKUGJpSXNJbk5vYjNkZmIyNXNlVjltYjNKZllYVjBhRzl5SWpvaWIyWm1JaXdpYzJodmQxOWhiR3dpT2lKaGJHd2lMQ0prWld4aGVTSTZJakFpTENKelkzSnZiR3hmZEc5d0lqb2lNQ0lzSW1GdWFXMWhkR1ZmYVc0aU9pSm1ZV1JsU1c0aUxDSmhibWx0WVhSbFgyOTFkQ0k2SW1aaFpHVlBkWFFpTENKaFkzUnBiMjVmWW5WMGRHOXVJam9pTG5ScGJXVXRiV0YwWlhKcFlXd3RiVzlrWld3dFluUnVJR0oxZEhSdmJpSXNJblpwWlhkZmNHeGhZMlVpT2lJaUxDSmhZM1JwYjI1ZlluVjBkRzl1WDNSNWNHVWlPaUpqYkdsamExTmxiR1ZqZEc5eUlpd2liVzlrWVd4ZlkyOXVkR1Z1ZENJNkltTjFjM1J2YlY5b2RHMXNJaXdpZG1sbGQxOTBlWEJsSWpvaVpHVm1ZWFZzZENJc0ltOXViMlptYjNabGNteGhlU0k2SWs5dUlpd2liM1psY214aGVWOXZjR0ZqYVhSNUlqb2lNQzQxTURBd01EQWlMQ0p6YUc5M1gzQnZjSFZ3WDNScGRHeGxJam9pVDJabUlpd2ljMmh2ZDE5d2IzQjFjRjlrWlhOaklqb2lUMlptSWl3aVkyeHZjMlZmWW5WMGRHOXVJam9pYjJabUlpd2lhR1ZoWkdWeVgySm5ZMjlzYjNJaU9pSWpabVptWm1abUlpd2lZbWRmYVcxaFoyVWlPaUlpTENKc2IyZGZkWE5sY2lJNklrOXVJaXdpWjNWbGMzUWlPaUpQYmlJc0ltRmpkR2wyWlY5a1lYUmxYMk5vWldOcklqb2liMlptSWl3aVlXTjBhWFpsU1c1MFpYSjJZV3dpT2lJeU1ESTBMVEF4TFRBNUlERTBPakUyT2pNMklpd2laR1ZoWTNScGRtVkpiblJsY25aaGJDSTZJakl3TWpRdE1ERXRNRGtnTVRRNk1UWTZNellpTENKd1lsOXdiM05wZEdsdmJpSTZJbU5sYm5SbGNpMWpaVzUwWlhJaUxDSndZbDl0WVhKbmFXNGlPaUl3SWl3aWIzQjBhVzl1Y3lJNkludGNJbVZ1WVdKc1pWOWlZV05yWjNKdmRXNWtYMmR5WVdScFpXNTBYQ0k2WENKdlptWmNJaXhjSW1KaFkydG5jbTkxYm1SZlozSmhaR2xsYm5SZlkyOXNiM0pmTVZ3aU9sd2lJekF3TUZ3aUxGd2lZbUZqYTJkeWIzVnVaRjluY21Ga2FXVnVkRjlqYjJ4dmNsOHlYQ0k2WENJalptWm1YQ0lzWENKd1lsOW5jbUZrYVdWdWRGOWthWEpsWTNScGIyNWNJanBjSW5abGNuUnBZMkZzWENJc1hDSmxlR05sY0hSZmNHOXpkRjkwZVhCbGMxd2lPbHRkTEZ3aVpYaGpaWEIwWDNCdmMzUnpYQ0k2VzEwc1hDSmhiR3hmY0c5emRITmNJanBjSWx3aUxGd2lZMnh2YzJWZlluVjBkRzl1WDJSbGJHRjVYQ0k2TUN4Y0ltTnNiM05sWDJKMWRIUnZibDlrWld4aGVWOW1iM0pmYlc5aWFXeGxYQ0k2TUN4Y0ltVnVZV0pzWlY5amJHOXpaVjlpZFhSMGIyNWZaR1ZzWVhsZlptOXlYMjF2WW1sc1pWd2lPbHdpYjJabVhDSXNYQ0psYm1GaWJHVmZjR0pmYzI5MWJtUmNJanBjSW05bVpsd2lMRndpYjNabGNteGhlVjlqYjJ4dmNsd2lPbHdpSXpBd01Gd2lMRndpWVc1cGJXRjBhVzl1WDNOd1pXVmtYQ0k2TVN4Y0ltTnNiM05sWDJGdWFXMWhkR2x2Ymw5emNHVmxaRndpT2pFc1hDSndZbDl0YjJKcGJHVmNJanBjSW05bVpsd2lMRndpWTJ4dmMyVmZZblYwZEc5dVgzUmxlSFJjSWpwY0lseGNkVEkzTVRWY0lpeGNJbVZ1WVdKc1pWOWpiRzl6WlY5aWRYUjBiMjVmZEdWNGRGOXRiMkpwYkdWY0lqcGNJbTl1WENJc1hDSmpiRzl6WlY5aWRYUjBiMjVmZEdWNGRGOXRiMkpwYkdWY0lqcGNJbHhjZFRJM01UVmNJaXhjSW1Oc2IzTmxYMkoxZEhSdmJsOW9iM1psY2w5MFpYaDBYQ0k2WENKY0lpeGNJbTF2WW1sc1pWOTNhV1IwYUZ3aU9sd2lYQ0lzWENKdGIySnBiR1ZmYldGNFgzZHBaSFJvWENJNlhDSmNJaXhjSW0xdlltbHNaVjlvWldsbmFIUmNJanBjSWx3aUxGd2lZMnh2YzJWZlluVjBkRzl1WDNCdmMybDBhVzl1WENJNlhDSnlhV2RvZEMxMGIzQmNJaXhjSW1WdVlXSnNaVjlqYkc5elpWOWlkWFIwYjI1ZmNHOXphWFJwYjI1ZmJXOWlhV3hsWENJNlhDSnZabVpjSWl4Y0ltTnNiM05sWDJKMWRIUnZibDl3YjNOcGRHbHZibDl0YjJKcGJHVmNJanBjSW5KcFoyaDBMWFJ2Y0Z3aUxGd2ljMmh2ZDE5dmJteDVYMjl1WTJWY0lqcGNJbTltWmx3aUxGd2ljMmh2ZDE5dmJsOW9iMjFsWDNCaFoyVmNJanBjSW05bVpsd2lMRndpWTJ4dmMyVmZjRzl3ZFhCZlpYTmpYQ0k2WENKdmJsd2lMRndpY0c5d2RYQmZkMmxrZEdoZllubGZjR1Z5WTJWdWRHRm5aVjl3ZUZ3aU9sd2ljR2w0Wld4elhDSXNYQ0p3YjNCMWNGOWpiMjUwWlc1MFgzQmhaR1JwYm1kY0lqb3lNQ3hjSW5CdmNIVndYM0JoWkdScGJtZGZZbmxmY0dWeVkyVnVkR0ZuWlY5d2VGd2lPbHdpY0dsNFpXeHpYQ0lzWENKd1lsOW1iMjUwWDJaaGJXbHNlVndpT2x3aVNXNW9aWEpwZEZ3aUxGd2lZMnh2YzJWZmNHOXdkWEJmYjNabGNteGhlVndpT2x3aWIyNWNJaXhjSW1Oc2IzTmxYM0J2Y0hWd1gyOTJaWEpzWVhsZmJXOWlhV3hsWENJNlhDSnZibHdpTEZ3aVpXNWhZbXhsWDNCaVgyWjFiR3h6WTNKbFpXNWNJanBjSW05bVpsd2lMRndpWlc1aFlteGxYMmhwWkdWZmRHbHRaWEpjSWpwY0ltOW1abHdpTEZ3aVpXNWhZbXhsWDJGMWRHOWpiRzl6WlY5dmJsOWpiMjF3YkdWMGFXOXVYQ0k2WENKdlptWmNJaXhjSW1WdVlXSnNaVjl6YjJOcFlXeGZiR2x1YTNOY0lqcGNJbTltWmx3aUxGd2ljMjlqYVdGc1gyeHBibXR6WENJNmUxd2liR2x1YTJWa2FXNWZiR2x1YTF3aU9sd2lYQ0lzWENKbVlXTmxZbTl2YTE5c2FXNXJYQ0k2WENKY0lpeGNJblIzYVhSMFpYSmZiR2x1YTF3aU9sd2lYQ0lzWENKMmEyOXVkR0ZyZEdWZmJHbHVhMXdpT2x3aVhDSXNYQ0o1YjNWMGRXSmxYMnhwYm10Y0lqcGNJbHdpTEZ3aWFXNXpkR0ZuY21GdFgyeHBibXRjSWpwY0lsd2lMRndpWW1Wb1lXNWpaVjlzYVc1clhDSTZYQ0pjSW4wc1hDSnpiMk5wWVd4ZlluVjBkRzl1YzE5b1pXRmthVzVuWENJNlhDSmNJaXhjSW1Oc2IzTmxYMkoxZEhSdmJsOXphWHBsWENJNk1TeGNJbU5zYjNObFgySjFkSFJ2Ymw5cGJXRm5aVndpT2x3aVhDSXNYQ0ppYjNKa1pYSmZjM1I1YkdWY0lqcGNJa1J2ZEhSbFpGd2lMRndpWVhselgzQmlYMmh2ZG1WeVgzTm9iM2RmWTJ4dmMyVmZZblJ1WENJNlhDSnZabVpjSWl4Y0ltUnBjMkZpYkdWZmMyTnliMnhzWENJNlhDSnZabVpjSWl4Y0ltUnBjMkZpYkdWZmMyTnliMnhzWDIxdlltbHNaVndpT2x3aWIyWm1YQ0lzWENKbGJtRmliR1ZmYjNCbGJsOWtaV3hoZVY5dGIySnBiR1ZjSWpwY0ltOW1abHdpTEZ3aWIzQmxibDlrWld4aGVWOXRiMkpwYkdWY0lqcGNJakJjSWl4Y0ltVnVZV0pzWlY5elkzSnZiR3hmZEc5d1gyMXZZbWxzWlZ3aU9sd2liMlptWENJc1hDSnpZM0p2Ykd4ZmRHOXdYMjF2WW1sc1pWd2lPbHdpTUZ3aUxGd2laVzVoWW14bFgzQmlYM0J2YzJsMGFXOXVYMjF2WW1sc1pWd2lPbHdpYjJabVhDSXNYQ0p3WWw5d2IzTnBkR2x2Ymw5dGIySnBiR1ZjSWpwY0ltTmxiblJsY2kxalpXNTBaWEpjSWl4Y0luQmlYMkpuWDJsdFlXZGxYM0J2YzJsMGFXOXVYQ0k2WENKalpXNTBaWEl0WTJWdWRHVnlYQ0lzWENKd1lsOWlaMTlwYldGblpWOXphWHBwYm1kY0lqcGNJbU52ZG1WeVhDSXNYQ0oyYVdSbGIxOTBhR1Z0WlY5MWNteGNJanBjSWx3aUxGd2ljR0pmYldsdVgyaGxhV2RvZEZ3aU9sd2lYQ0lzWENKd1lsOW1iMjUwWDNOcGVtVmNJam94TXl4Y0luQmlYMlp2Ym5SZmMybDZaVjltYjNKZmJXOWlhV3hsWENJNk1UTXNYQ0p3WWw5MGFYUnNaVjkwWlhoMFgzTm9ZV1J2ZDF3aU9sd2ljbWRpWVNneU5UVXNNalUxTERJMU5Td3dLVndpTEZ3aVpXNWhZbXhsWDNCaVgzUnBkR3hsWDNSbGVIUmZjMmhoWkc5M1hDSTZYQ0p2Wm1aY0lpeGNJbkJpWDNScGRHeGxYM1JsZUhSZmMyaGhaRzkzWDNoZmIyWm1jMlYwWENJNk1peGNJbkJpWDNScGRHeGxYM1JsZUhSZmMyaGhaRzkzWDNsZmIyWm1jMlYwWENJNk1peGNJbkJpWDNScGRHeGxYM1JsZUhSZmMyaGhaRzkzWDNwZmIyWm1jMlYwWENJNk1DeGNJbU55WldGMFpWOWtZWFJsWENJNlhDSXlNREl6TFRFeUxUQTNJREV6T2pJNE9qTTJYQ0lzWENKamNtVmhkR1ZmWVhWMGFHOXlYQ0k2Tml4Y0ltRjFkR2h2Y2x3aU9sd2llMXhjWENKcFpGeGNYQ0k2WEZ4Y0lqWmNYRndpTEZ4Y1hDSnVZVzFsWEZ4Y0lqcGNYRndpUzJGdFlXd2dVSFZ5YjJocGRGeGNYQ0o5WENJc1hDSmxibUZpYkdWZlpHbHpiV2x6YzF3aU9sd2liMlptWENJc1hDSmxibUZpYkdWZlpHbHpiV2x6YzE5MFpYaDBYQ0k2WENKRWFYTnRhWE56SUdGa1hDSXNYQ0psYm1GaWJHVmZZbTk0WDNOb1lXUnZkMXdpT2x3aWIyWm1YQ0lzWENKaWIzaGZjMmhoWkc5M1gyTnZiRzl5WENJNlhDSWpNREF3WENJc1hDSndZbDlpYjNoZmMyaGhaRzkzWDNoZmIyWm1jMlYwWENJNk1DeGNJbkJpWDJKdmVGOXphR0ZrYjNkZmVWOXZabVp6WlhSY0lqb3dMRndpY0dKZlltOTRYM05vWVdSdmQxOTZYMjltWm5ObGRGd2lPakUxTEZ3aVpHbHpZV0pzWlY5elkzSnZiR3hmYjI1ZmNHOXdkWEJjSWpwY0ltOW1abHdpTEZ3aVpHbHpZV0pzWlY5elkzSnZiR3hmYjI1ZmNHOXdkWEJmYlc5aWFXeGxYQ0k2WENKdlptWmNJaXhjSW5Ob2IzZGZjMk55YjJ4c1ltRnlYQ0k2WENKdlptWmNJaXhjSW1ocFpHVmZiMjVmY0dOY0lqcGNJbTltWmx3aUxGd2lhR2xrWlY5dmJsOTBZV0pzWlhSelhDSTZYQ0p2Wm1aY0lpeGNJbkJpWDJKblgybHRZV2RsWDJScGNtVmpkR2x2Ymw5dmJsOXRiMkpwYkdWY0lqcGNJbTl1WENJc1hDSmpiRzl6WlY5aWRYUjBiMjVmWTI5c2IzSmNJanBjSWlNd01EQXdNREJjSWl4Y0ltTnNiM05sWDJKMWRIUnZibDlvYjNabGNsOWpiMnh2Y2x3aU9sd2lJekF3TURBd01Gd2lMRndpWW14MWNtVmtYMjkyWlhKc1lYbGNJanBjSW05bVpsd2lMRndpWW14MWNtVmtYMjkyWlhKc1lYbGZiVzlpYVd4bFhDSTZYQ0p2Wm1aY0lpeGNJbkJpWDJGMWRHOWpiRzl6WlY5dGIySnBiR1ZjSWpwY0lqSXdYQ0lzWENKbGJtRmliR1ZmWVhWMGIyTnNiM05sWDJSbGJHRjVYM1JsZUhSZmJXOWlhV3hsWENJNlhDSnZabVpjSWl4Y0ltVnVZV0pzWlY5dmRtVnliR0Y1WDNSbGVIUmZiVzlpYVd4bFhDSTZYQ0p2Wm1aY0lpeGNJbTkyWlhKc1lYbGZiVzlpYVd4bFgyOXdZV05wZEhsY0lqcGNJakF1TlZ3aWZTSjlmUT09IjsKICAgICAgICAgICAgICAgIA==
4 ms
javascript;base64,aWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF82JykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0gZWxzZSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF82JykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0=
5 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiggJCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2Ugc3RyaWN0JzsKICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNob3dfb25seV9vbmNlID0gJ29mZic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNNb2JpbGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbG9zZVBvcHVwT3ZlcmxheSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNQYWdlU2Nyb2xsRGlzYWJsZWQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlUG9wdXBPdmVybGF5ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BhZ2VTY3JvbGxEaXNhYmxlZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuZGV0YWlscy1jb25zdWx0YW50IGJ1dHRvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX211c2ljX3NvdW5kJykuY3NzKHsnZGlzcGxheSc6J2Jsb2NrJ30pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNob3dfb25seV9vbmNlID09ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vd3d3LnhjZWxsZW5jZS1pdC5jb20vd3AtYWRtaW4vYWRtaW4tYWpheC5waHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdwb3N0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnYXlzX3BiX3NldF9jb29raWVfb25seV9vbmNlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiA2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdCb29rIEEgRnJlZSBDb25zdWx0YXRpb24nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YUF0dHIgPSAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzYnKS5hdHRyKCdkYXRhLWF5cy1mbGFnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19mbGFnICYmIGRhdGFBdHRyID09ICd0cnVlJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc182JykuY3NzKCdkaXNwbGF5JywnYmxvY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc182JykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdhdXRvJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzYgc3BhbicpLmh0bWwoJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl82IHNwYW4nKS5hdHRyKCdkYXRhLWF5cy1tb2JpbGUtc2Vjb25kcycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl82IHNwYW4nKS5odG1sKCQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfNiBzcGFuJykuYXR0cignZGF0YS1heXMtc2Vjb25kcycpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJfcGJfNiA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF82JykucmVtb3ZlQ2xhc3MoJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX291dF82JykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNicpLmFkZENsYXNzKCQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfbW9kYWxfYW5pbWF0ZV9pbl82JykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNicpLmNzcygnZGlzcGxheScsICdibG9jaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCAmJiAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV82JykuYXR0cignZGF0YS1tb2JpbGUtb3ZlcmxheScpID09ICd0cnVlJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV82JykuY3NzKHsnb3BhY2l0eSc6ICcwLjUnLCAnZGlzcGxheSc6ICdibG9jayd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfNicpLmNzcyh7J29wYWNpdHknOiAnMC41MDAwMDAnLCAnZGlzcGxheSc6ICdibG9jayd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jaGVja182JykucHJvcCgnY2hlY2tlZCcsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2hlY2tfNicpLmF0dHIoJ2NoZWNrZWQnLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLW1vZGFsLWNoZWNrYm94XzYnKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWRfNicpLnZhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NlY29uZHMgPSAoYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCAvIDEwMDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VuZF9zcmMgPSAkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX3NvdW5kXzYnKS5hdHRyKCdzcmMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xvc2Vfc291bmRfc3JjID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9jbG9zZV9zb3VuZF82JykuYXR0cignc3JjJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQgPSBwYXJzZUZsb2F0KGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpIC0gNTA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdvZmYnID09PSAnb24nICYmIHR5cGVvZiBzb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c19wYl9zb3VuZF82JykuZ2V0KDApLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl9wYXVzZV9zb3VuZF82Jykub24oJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9zb3VuZF82JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY2xvc2Ugc291bmQgc3RhcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgJiYgdHlwZW9mIGNsb3NlX3NvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ29mZicgPT09ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl9wYXVzZV9zb3VuZF82Jykub24oJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNicpLmdldCgwKS5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF82ICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF82JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzYnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzYnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Nsb3NlIHNvdW5kIGVuZAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGltZV9wYl9zdHJfNiA9ICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfNiBzcGFuJykuYXR0cignZGF0YS1heXMtc2Vjb25kcycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbW9iaWxlVGltZXIgPSArJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl82IHNwYW4nKS5hdHRyKCdkYXRhLWF5cy1tb2JpbGUtc2Vjb25kcycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzYgc3BhbicpLmh0bWwobW9iaWxlVGltZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lX3BiX3N0cl82ID0gbW9iaWxlVGltZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aW1lX3BiXzYgPSBwYXJzZUludCh0aW1lX3BiX3N0cl82KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aW1lX3BiXzYgIT09IHVuZGVmaW5lZCl7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aW1lX3BiXzYgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGltZXJfcGJfNiA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3VGltZV9wYl82ID0gdGltZV9wYl82LS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXlzX3BiX2VmZmVjdE91dF82ID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX291dF82JykudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzYgc3BhbicpLnRleHQobmV3VGltZV9wYl82KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNicpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbi1kdXJhdGlvbic6IGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc2Vjb25kcyArICdzJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobmV3VGltZV9wYl82IDw9IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNicpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF82JykuYXR0cignY2xhc3MnLCAnYXlzLXBiLW1vZGFsIGF5cy1wYi1tb2RhbF82IGZpeGVkLXByaWNlLXBvcHVwIHNjaGVkdWxlLWRldmVsb3Blci1pbnRlcnZpZXcgJyskKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX21vZGFsX2FuaW1hdGVfb3V0XzYnKS52YWwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF82ICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzYnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnb2ZmJyA9PT0gJ29uJyAmJiB0eXBlb2Ygc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfNicpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNicpLmdldCgwKS5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzYgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNicpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF82JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzYnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNicpLm9uZSgnY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzYnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzYnKS5hdHRyKCdjbGFzcycsICdheXMtcGItbW9kYWwgYXlzLXBiLW1vZGFsXzYgZml4ZWQtcHJpY2UtcG9wdXAgc2NoZWR1bGUtZGV2ZWxvcGVyLWludGVydmlldyAnK2F5c19wYl9lZmZlY3RPdXRfNik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ2lmcmFtZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IC9odHRwczpcL1wvd3d3LnlvdXR1YmUuY29tLzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNyYyA9ICQodGhpcykuYXR0cignc3JjJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignc3JjJywgJCh0aGlzKS5hdHRyKCdzcmMnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ3ZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mICQodGhpcykuZ2V0KDApICE9ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISAkKHRoaXMpLmdldCgwKS5wYXVzZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5nZXQoMCkucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnYXVkaW8ud3AtYXVkaW8tc2hvcnRjb2RlJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2YgJCh0aGlzKS5nZXQoMCkgIT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhICQodGhpcykuZ2V0KDApLnBhdXNlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmdldCgwKS5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfNiAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF82JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNicpLmNzcygnZGlzcGxheScsICdub25lJyk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzYnKS5jc3MoeydvcGFjaXR5JzogJzAnLCAnZGlzcGxheSc6ICdub25lJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF5c19wYl9mbGFnID0gIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbigna2V5ZG93bicsIGZ1bmN0aW9uKGV2ZW50KSB7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiBheXNfcGJfZmxhZyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09IDI3KSB7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV82JykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19wYl9mbGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfNicpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzYnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzYgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzYnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzYnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl82KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzYnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl82KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCdjbGlja1NlbGVjdG9yJyAhPSAnYm90aCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2xvc2VQb3B1cE92ZXJsYXkgJiYgJ09uJyA9PSAnT24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV82Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9wYXJlbnRfZGl2ID0gJCh0aGlzKS5maW5kKCcuYXlzLXBiLW1vZGFscycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfZGl2ID0gJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJy5heXMtcGItbW9kYWxfNicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBiX3BhcmVudF9kaXYuaXMocGJfZGl2KSAmJiBwYl9wYXJlbnRfZGl2LmhhcyhwYl9kaXYpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzYnKS5jbGljaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdvZmYnID09PSAnb24nICYmIHR5cGVvZiBzb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX3NvdW5kXzYnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl82KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiB0eXBlb2YgY2xvc2Vfc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyAmJiAnb2ZmJyA9PT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c19wYl9jbG9zZV9zb3VuZF82JykuZ2V0KDApLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF82ICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF82JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF82JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzYnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF82JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNsb3NlUG9wdXBPdmVybGF5ICYmICdPbicgPT0gJ09uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfNicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBiX3BhcmVudF9kaXYgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfZGl2ID0gJCh0aGlzKS5maW5kKCcuYXlzLXBiLW1vZGFsXzYnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYl9kaXYuaXMoZS50YXJnZXQpICYmIHBiX2Rpdi5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzYnKS5jbGljaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdvZmYnID09PSAnb24nICYmIHR5cGVvZiBzb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX3NvdW5kXzYnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl82KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiB0eXBlb2YgY2xvc2Vfc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyAmJiAnb2ZmJyA9PT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICE9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c19wYl9jbG9zZV9zb3VuZF82JykuZ2V0KDApLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF82ICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF82JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF82JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzYnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF82JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfNicpLmNzcygnZGlzcGxheScsJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNicpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uLWR1cmF0aW9uJzogYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zZWNvbmRzICsgJ3MnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzYnKS5vbmUoJ2NsaWNrJywgZnVuY3Rpb24oKXsgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF5c19wYl9lZmZlY3RPdXRfNiA9ICQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfbW9kYWxfYW5pbWF0ZV9vdXRfNicpLnZhbCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc182JykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzYnKS5hdHRyKCdjbGFzcycsICdheXMtcGItbW9kYWwgYXlzLXBiLW1vZGFsXzYgZml4ZWQtcHJpY2UtcG9wdXAgc2NoZWR1bGUtZGV2ZWxvcGVyLWludGVydmlldyAnK2F5c19wYl9lZmZlY3RPdXRfNik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnaWZyYW1lJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSAvaHR0cHM6XC9cL3d3dy55b3V0dWJlLmNvbS87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNyYyA9ICQodGhpcykuYXR0cignc3JjJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdzcmMnLCAkKHRoaXMpLmF0dHIoJ3NyYycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ3ZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2YgJCh0aGlzKS5nZXQoMCkgIT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEgJCh0aGlzKS5nZXQoMCkucGF1c2VkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5nZXQoMCkucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5cy1wYi1tb2RhbHMnKS5maW5kKCdhdWRpby53cC1hdWRpby1zaG9ydGNvZGUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mICQodGhpcykuZ2V0KDApICE9ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhICQodGhpcykuZ2V0KDApLnBhdXNlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZ2V0KDApLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzYgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzYnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfNicpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV82JykuY3NzKHsnb3BhY2l0eSc6ICcwJywgJ2Rpc3BsYXknOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNQYWdlU2Nyb2xsRGlzYWJsZWQpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCdib2R5JykuYWRkQ2xhc3MoJ3BiX2Rpc2FibGVfc2Nyb2xsXzYnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnaHRtbCcpLmFkZENsYXNzKCdwYl9kaXNhYmxlX3Njcm9sbF82Jyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuYXlzLXBiLW1vZGFsLWNsb3NlXzYnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJ2JvZHknKS5yZW1vdmVDbGFzcygncGJfZGlzYWJsZV9zY3JvbGxfNicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnaHRtbCcpLnJlbW92ZUNsYXNzKCdwYl9kaXNhYmxlX3Njcm9sbF82Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdPbicgIT0gJ09uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzYnKS5jc3MoeydvcGFjaXR5JzogJzAnLCAnZGlzcGxheSc6ICdub25lICFpbXBvcnRhbnQnLCAncG9pbnRlci1ldmVudHMnOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF82JykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdhdXRvJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzYnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJ2ZhbHNlJyA9PSAndHJ1ZScgJiYgd2luZG93LmlubmVyV2lkdGggPCA3NjgpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigwICE9IDAgJiYgJ29mZicgIT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzYnKS5jc3MoeydkaXNwbGF5JzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNicpLmNzcyh7J2Rpc3BsYXknOiAnYmxvY2snfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKDAgIT0gMCAmJiAnb2ZmJyAhPSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNicpLmNzcyh7J2Rpc3BsYXknOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV82JykuY3NzKHsnZGlzcGxheSc6ICdibG9jayd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmKDAgPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2xvc2VQb3B1cE92ZXJsYXkgJiYgJ09uJyA9PSAnT24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfNicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9wYXJlbnQgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBiX2RpdiA9ICQodGhpcykuZmluZCgnLmF5cy1wYi1tb2RhbF82Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBiX2Rpdi5pcyhlLnRhcmdldCkgJiYgcGJfZGl2LmhhcyhlLnRhcmdldCkubGVuZ3RoID09PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzYnKS5jbGljaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF5c19wYl9mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbigna2V5ZG93bicsIGZ1bmN0aW9uKGV2ZW50KSB7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgJiYgYXlzX3BiX2ZsYWcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT0gMjcpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzYnKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19wYl9mbGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnT24nICE9ICdPbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzYnKS5jc3MoeydvcGFjaXR5JzogJzAnLCAnZGlzcGxheSc6ICdub25lICFpbXBvcnRhbnQnLCAncG9pbnRlci1ldmVudHMnOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzYnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ2F1dG8nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc182JykuY3NzKCdwb2ludGVyLWV2ZW50cycsJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignY2xpY2tTZWxlY3RvcicgIT0gJ2JvdGgnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyB2aWRlbycpLmhhc0NsYXNzKCd3cC12aWRlby1zaG9ydGNvZGUnKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlb1dpZHRoICA9ICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmF0dHIoJ3dpZHRoJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlb0hlaWdodCA9ICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmF0dHIoJ2hlaWdodCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyAud3AtdmlkZW8nKS5yZW1vdmVBdHRyKCdzdHlsZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgLm1lanMtY29udGFpbmVyJykucmVtb3ZlQXR0cignc3R5bGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgLndwLXZpZGVvJykuY3NzKHsnd2lkdGgnOiAnMTAwJSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIC5tZWpzLWNvbnRhaW5lcicpLmNzcyh7J3dpZHRoJzogJzEwMCUnLCdoZWlnaHQnOiB2aWRlb0hlaWdodCArICdweCd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvLndwLXZpZGVvLXNob3J0Y29kZScpLmNzcyh7J3dpZHRoJzogJzEwMCUnLCdoZWlnaHQnOiB2aWRlb0hlaWdodCArICdweCd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwxMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgaWZyYW1lJykuYXR0cignc3R5bGUnKSAhPSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIGlmcmFtZScpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sNTAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignb2ZmJyA9PSAnb24nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvID0gJChkb2N1bWVudCkuZmluZCgndmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aWRlby5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1tpXS5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykubmV4dCgpLnZhbCgpID09PSAnb24nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzX3ZpZGVvX3dpbmRvdycpLmZpbmQoJy5jbG9zZS1pbWFnZS1idG4nKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pKCBqUXVlcnkgKTsKICAgICAgICAgICAgICAgIA==
2 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mIGF5c1BvcHVwT3B0aW9ucyA9PT0gInVuZGVmaW5lZCIpewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzUG9wdXBPcHRpb25zID0gW107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGF5c1BvcHVwT3B0aW9uc1siNiJdICA9ICJleUp3YjNCMWNHSnZlQ0k2ZXlKcFpDSTZJallpTENKMGFYUnNaU0k2SWtKdmIyc2dRU0JHY21WbElFTnZibk4xYkhSaGRHbHZiaUlzSW5CdmNIVndYMjVoYldVaU9pSWlMQ0prWlhOamNtbHdkR2x2YmlJNklpSXNJbU5oZEdWbmIzSjVYMmxrSWpvaU1TSXNJbUYxZEc5amJHOXpaU0k2SWpBaUxDSmpiMjlyYVdVaU9pSXdJaXdpZDJsa2RHZ2lPakV3TlRBc0ltaGxhV2RvZENJNk56VXdMQ0ppWjJOdmJHOXlJam9pSTJabVptWm1aaUlzSW5SbGVIUmpiMnh2Y2lJNklpTXdNREF3TURBaUxDSmliM0prWlhKemFYcGxJam9pTVNJc0ltSnZjbVJsY21OdmJHOXlJam9pSTJabVptWm1aaUlzSW1KdmNtUmxjbDl5WVdScGRYTWlPaUkwSWl3aWMyaHZjblJqYjJSbElqb2lJaXdpZFhObGNuTmZjbTlzWlNJNklsdGRJaXdpWTNWemRHOXRYMk5zWVhOeklqb2labWw0WldRdGNISnBZMlV0Y0c5d2RYQWdjMk5vWldSMWJHVXRaR1YyWld4dmNHVnlMV2x1ZEdWeWRtbGxkeUlzSW1OMWMzUnZiVjlqYzNNaU9pSWlMQ0pqZFhOMGIyMWZhSFJ0YkNJNklqeGthWFlnWTJ4aGMzTTlYQ0ptYVhobFpDMXdjbWxqWlMxd2IzQjFjQzFvWldGa1hDSStYSEpjYmp4b016NUNiMjlySUVFZ1JuSmxaU0JEYjI1emRXeDBZWFJwYjI0OFhDOW9NejVjY2x4dVBGd3ZaR2wyUGx4eVhHNDhaR2wySUdOc1lYTnpQVndpWm1sNFpXUXRjRzl3ZFhBdFltOWtlU0JpYjI5ckxXTnZibk4xYkhSaGRHbHZibHdpUGx4eVhHNDhaR2wySUdOc1lYTnpQVndpWm1sNFpXUXRjRzl3ZFhBdGRHVjRkQzF6YVdSbFhDSStYSEpjYmp4a2FYWWdZMnhoYzNNOVhDSm1hWGhsWkMxd2IzQjFjQzEwWlhoMExYUnBkR3hsWENJK1hISmNianhvTXo1RGIyNTBZV04wSUVsdVptOXliV0YwYVc5dVBGd3ZhRE0rWEhKY2JqeGNMMlJwZGo1Y2NseHVQR1JwZGlCamJHRnpjejFjSW1acGVHVmtMWEJ2Y0hWd0xYUmxlSFF0WTI5dGJXOXVYQ0krWEhKY2JseHlYRzVHYVd4c0lIVndJSFJvWlNCbWIzSnRJR0Z1WkNCdmRYSWdWR1ZoYlNCM2FXeHNJR2RsZENCaVlXTnJJSFJ2SUhsdmRTQjNhWFJvYVc0Z01qUWdhRzkxY25NdVhISmNibHh5WEc0OFhDOWthWFkrWEhKY2JqeGthWFlnWTJ4aGMzTTlYQ0ptYVhobFpDMXdiM0IxY0MxMFpYaDBMV052Ym5SaFkzUmNJajQ4WVNCb2NtVm1QVndpZEdWc09pczVNUzA1T1RBNU9UVTFPVFE0WENJK0t6a3hMVGs1TURrNU5UVTVORGc4WEM5aFBqeGNMMlJwZGo1Y2NseHVQR1JwZGlCamJHRnpjejFjSW1acGVHVmtMWEJ2Y0hWd0xYUmxlSFF0WlcxaGFXeGNJajQ4WVNCb2NtVm1QVndpYldGcGJIUnZPbWx1Wm05QWVHTmxiR3hsYm1ObExXbDBMbU52YlZ3aVBtbHVabTlBZUdObGJHeGxibU5sTFdsMExtTnZiVHhjTDJFK1BGd3ZaR2wyUGx4eVhHNDhkV3dnWTJ4aGMzTTlYQ0p6YjJOcFlXd3RiR2x1YTNOY0lqNWNjbHh1SUNBZ0lDQWdJQ0E4YkdrZ1kyeGhjM005WENKemIyTnBZV3d0YkdsdWEzTXRiR2x6ZEZ3aVBseHlYRzRnSUNBZ0lDQWdJQ0FnSUNBOFlTQm9jbVZtUFZ3aWFIUjBjSE02WEM5Y0wzZDNkeTVtWVdObFltOXZheTVqYjIxY0wxaGpaV3hzWlc1alpVbFVYQzljSWlCMFlYSm5aWFE5WENKZllteGhibXRjSWo0OGFTQmpiR0Z6Y3oxY0ltbGpiMjR0Wm1GalpXSnZiMnRjSWo0OFhDOXBQanhjTDJFK1hISmNiaUFnSUNBZ0lDQWdQRnd2YkdrK1hISmNiaUFnSUNBZ0lDQWdQR3hwSUdOc1lYTnpQVndpYzI5amFXRnNMV3hwYm10ekxXeHBjM1JjSWo1Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnUEdFZ2FISmxaajFjSW1oMGRIQnpPbHd2WEM5M2QzY3VhVzV6ZEdGbmNtRnRMbU52YlZ3dmVHTmxiR3hsYm1ObGFYUmNMejlvYkQxbGJsd2lJSFJoY21kbGREMWNJbDlpYkdGdWExd2lQanhwSUdOc1lYTnpQVndpYVdOdmJpMXBibk4wWVZ3aVBqeGNMMmsrUEZ3dllUNWNjbHh1SUNBZ0lDQWdJQ0E4WEM5c2FUNWNjbHh1SUNBZ0lDQWdJQ0E4YkdrZ1kyeGhjM005WENKemIyTnBZV3d0YkdsdWEzTXRiR2x6ZEZ3aVBseHlYRzRnSUNBZ0lDQWdJQ0FnSUNBOFlTQm9jbVZtUFZ3aWFIUjBjSE02WEM5Y0wybHVMbXhwYm10bFpHbHVMbU52YlZ3dlkyOXRjR0Z1ZVZ3dmVHTmxiR3hsYm1ObExXbDBYQ0lnZEdGeVoyVjBQVndpWDJKc1lXNXJYQ0krUEdrZ1kyeGhjM005WENKcFkyOXVMV3hwYm10bFpHbHVYQ0krUEZ3dmFUNDhYQzloUGx4eVhHNGdJQ0FnSUNBZ0lEeGNMMnhwUGx4eVhHNGdJQ0FnSUNBZ0lEeHNhU0JqYkdGemN6MWNJbk52WTJsaGJDMXNhVzVyY3kxc2FYTjBYQ0krWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJRHhoSUdoeVpXWTlYQ0pvZEhSd2N6cGNMMXd2ZEhkcGRIUmxjaTVqYjIxY0wzaGpaV3hzWlc1alpXbDBQMnhoYm1jOVpXNWNJaUIwWVhKblpYUTlYQ0pmWW14aGJtdGNJajQ4YVNCamJHRnpjejFjSW1samIyNHRkSGRwZEhSbGNsd2lQanhjTDJrK1BGd3ZZVDVjY2x4dUlDQWdJQ0FnSUNBOFhDOXNhVDVjY2x4dUlDQWdJQ0FnSUR4Y0wzVnNQbHh5WEc0OFpHbDJJR05zWVhOelBWd2labWw0WldRdGNHOXdkWEF0WW05MGRHOXRMWFJsZUhSY0lqNWNjbHh1WEhKY2JsZGxJR0Z6YzNWeVpTQmhZbk52YkhWMFpTQndjbTkwWldOMGFXOXVJRzltSUhsdmRYSWdaR0YwWVM0Z1ZHaGxJR2x1Wm05eWJXRjBhVzl1SUhsdmRWeDFNakF4T1habElIQnliM1pwWkdWa0lIZHBiR3dnY21WdFlXbHVJR052Ym1acFpHVnVkR2xoYkNCaGJtUWdkMjl1WEhVeU1ERTVkQ0JpWlNCemFHRnlaV1FnZDJsMGFDQmhibmtnZEdocGNtUWdjR0Z5ZEdsbGN5NGdVbVZ6ZENCaGMzTjFjbVZrTENCNWIzVnlJR1Z0WVdsc0lIZHBiR3dnYm05MElHSmxJSFZ6WldRZ1ptOXlJR0Z1ZVNCMWJuTnZiR2xqYVhSbFpDQmpiMjF0ZFc1cFkyRjBhVzl1TGx4eVhHNWNjbHh1UEZ3dlpHbDJQbHh5WEc0OFhDOWthWFkrWEhKY2Jqd2hMUzBnVzJkeVlYWnBkSGxtYjNKdElHbGtQVndpTjF3aUlHRnFZWGc5WENKMGNuVmxYQ0lnZEdsMGJHVTlYQ0owY25WbFhDSmRJQzB0UGx4eVhHNDhaR2wySUdsa1BWd2liV0YxZEdsalptOXliVjkzY21Gd2NHVnlYM2hwZEdKdmIydGhabkpsWldOdmJuTjFiSFJoZEdsdmJsd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliVjkzY21Gd2NHVnlJR1p2Y20wdFpHVjBZV2xzYzF3aVBqeG1iM0p0SUdsa1BWd2liV0YxZEdsalptOXliVjk0YVhSaWIyOXJZV1p5WldWamIyNXpkV3gwWVhScGIyNWNJaUJ5YjJ4bFBWd2labTl5YlZ3aUlHRmpkR2x2YmoxY0ltaDBkSEJ6T2x3dlhDOXRZUzV1YjNCaFkyTmxiR1Z5WVhSbExtTnZiVnd2Wm05eWJWd3ZjM1ZpYldsMFAyWnZjbTFKWkQwNVhDSWdZWFYwYjJOdmJYQnNaWFJsUFZ3aVptRnNjMlZjSWlCbGJtTjBlWEJsUFZ3aWJYVnNkR2x3WVhKMFhDOW1iM0p0TFdSaGRHRmNJaUJ0WlhSb2IyUTlYQ0p3YjNOMFhDSWdaR0YwWVMxdFlYVjBhV010Wm05eWJUMWNJbmhwZEdKdmIydGhabkpsWldOdmJuTjFiSFJoZEdsdmJsd2lQbHh5WEc0OFpHbDJJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOTRhWFJpYjI5cllXWnlaV1ZqYjI1emRXeDBZWFJwYjI1ZlpYSnliM0pjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdFpYSnliM0pjSWo0OFhDOWthWFkrWEhKY2JqeGthWFlnYVdROVhDSnRZWFYwYVdObWIzSnRYM2hwZEdKdmIydGhabkpsWldOdmJuTjFiSFJoZEdsdmJsOXRaWE56WVdkbFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMVzFsYzNOaFoyVWdjM1ZqWTJWemMyWjFiR3g1TFhOMVltMXBkRndpUGp4Y0wyUnBkajVjY2x4dVBHUnBkaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YVc1dVpYSm1iM0p0WENJK1hISmNianhrYVhZZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExYQmhaMlV0ZDNKaGNIQmxjaUJ0WVhWMGFXTm1iM0p0TFhCaFoyVXRNVndpSUdSaGRHRXRiV0YxZEdsakxXWnZjbTB0Y0dGblpUMWNJakZjSWo1Y2NseHVQR1JwZGlCamJHRnpjejFjSW1admNtMHRjMlZqZEdsdmJsd2lQbHh5WEc0OFpHbDJJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOTRhWFJpYjI5cllXWnlaV1ZqYjI1emRXeDBZWFJwYjI1ZlptbHljM1JmYm1GdFpWd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzF5YjNjZ2JXRjFkR2xqWm05eWJTMTBaWGgwSUcxaGRYUnBZMlp2Y20wdFptbGxiR1F0TVNCdFlYVjBhV05tYjNKdExYSmxjWFZwY21Wa1hDSWdaR0YwWVMxMllXeHBaR0YwWlQxY0ltWnBjbk4wWDI1aGJXVmNJaUJrWVhSaExYWmhiR2xrWVhScGIyNHRkSGx3WlQxY0luUmxlSFJjSWo0OGJHRmlaV3dnYVdROVhDSnRZWFYwYVdObWIzSnRYMnhoWW1Wc1gzaHBkR0p2YjJ0aFpuSmxaV052Ym5OMWJIUmhkR2x2Ymw5bWFYSnpkRjl1WVcxbFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV3hoWW1Wc1hDSWdabTl5UFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUmliMjlyWVdaeVpXVmpiMjV6ZFd4MFlYUnBiMjVmWm1seWMzUmZibUZ0WlZ3aVBrWnBjbk4wSUU1aGJXVThYQzlzWVdKbGJENWNjbHh1UEdsdWNIVjBJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUmliMjlyWVdaeVpXVmpiMjV6ZFd4MFlYUnBiMjVmWm1seWMzUmZibUZ0WlZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXBibkIxZEZ3aUlHNWhiV1U5WENKdFlYVjBhV05tYjNKdFcyWnBjbk4wWDI1aGJXVmRYQ0lnZEhsd1pUMWNJblJsZUhSY0lpQjJZV3gxWlQxY0lsd2lJSEJzWVdObGFHOXNaR1Z5UFZ3aVJXNTBaWElnWm1seWMzUWdibUZ0WlZ3aUlGd3ZQbHh5WEc0OGMzQmhiaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0WlhKeWIzSnRjMmRjSWlCemRIbHNaVDFjSW1ScGMzQnNZWGs2SUc1dmJtVTdYQ0krVkdocGN5QnBjeUJ5WlhGMWFYSmxaQzQ4WEM5emNHRnVQanhjTDJScGRqNWNjbHh1UEdScGRpQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmVHbDBZbTl2YTJGbWNtVmxZMjl1YzNWc2RHRjBhVzl1WDJ4aGMzUmZibUZ0WlZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXliM2NnYldGMWRHbGpabTl5YlMxMFpYaDBJRzFoZFhScFkyWnZjbTB0Wm1sbGJHUXRNaUJ0WVhWMGFXTm1iM0p0TFhKbGNYVnBjbVZrWENJZ1pHRjBZUzEyWVd4cFpHRjBaVDFjSW14aGMzUmZibUZ0WlZ3aUlHUmhkR0V0ZG1Gc2FXUmhkR2x2YmkxMGVYQmxQVndpZEdWNGRGd2lQanhzWVdKbGJDQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmJHRmlaV3hmZUdsMFltOXZhMkZtY21WbFkyOXVjM1ZzZEdGMGFXOXVYMnhoYzNSZmJtRnRaVndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxc1lXSmxiRndpSUdadmNqMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWW05dmEyRm1jbVZsWTI5dWMzVnNkR0YwYVc5dVgyeGhjM1JmYm1GdFpWd2lQa3hoYzNRZ1RtRnRaVHhjTDJ4aFltVnNQbHh5WEc0OGFXNXdkWFFnYVdROVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR0p2YjJ0aFpuSmxaV052Ym5OMWJIUmhkR2x2Ymw5c1lYTjBYMjVoYldWY0lpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRhVzV3ZFhSY0lpQnVZVzFsUFZ3aWJXRjFkR2xqWm05eWJWdHNZWE4wWDI1aGJXVmRYQ0lnZEhsd1pUMWNJblJsZUhSY0lpQjJZV3gxWlQxY0lsd2lJSEJzWVdObGFHOXNaR1Z5UFZ3aVJXNTBaWElnYkdGemRDQnVZVzFsWENJZ1hDOCtYSEpjYmp4emNHRnVJR05zWVhOelBWd2liV0YxZEdsalptOXliUzFsY25KdmNtMXpaMXdpSUhOMGVXeGxQVndpWkdsemNHeGhlVG9nYm05dVpUdGNJajVVYUdseklHbHpJSEpsY1hWcGNtVmtManhjTDNOd1lXNCtQRnd2WkdsMlBseHlYRzQ4WEM5a2FYWStYSEpjYmp4a2FYWWdZMnhoYzNNOVhDSm1iM0p0TFhObFkzUnBiMjVjSWo1Y2NseHVQR1JwZGlCcFpEMWNJbTFoZFhScFkyWnZjbTFmZUdsMFltOXZhMkZtY21WbFkyOXVjM1ZzZEdGMGFXOXVYMlZ0WVdsc1hDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMWEp2ZHlCdFlYVjBhV05tYjNKdExXVnRZV2xzSUcxaGRYUnBZMlp2Y20wdFptbGxiR1F0TXlCdFlYVjBhV05tYjNKdExYSmxjWFZwY21Wa1hDSWdaR0YwWVMxMllXeHBaR0YwWlQxY0ltVnRZV2xzWENJZ1pHRjBZUzEyWVd4cFpHRjBhVzl1TFhSNWNHVTlYQ0psYldGcGJGd2lQanhzWVdKbGJDQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmJHRmlaV3hmZUdsMFltOXZhMkZtY21WbFkyOXVjM1ZzZEdGMGFXOXVYMlZ0WVdsc1hDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV3hoWW1Wc1hDSWdabTl5UFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUmliMjlyWVdaeVpXVmpiMjV6ZFd4MFlYUnBiMjVmWlcxaGFXeGNJajVGYldGcGJEeGNMMnhoWW1Wc1BseHlYRzQ4YVc1d2RYUWdhV1E5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHSnZiMnRoWm5KbFpXTnZibk4xYkhSaGRHbHZibDlsYldGcGJGd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzFwYm5CMWRGd2lJRzVoYldVOVhDSnRZWFYwYVdObWIzSnRXMlZ0WVdsc1hWd2lJSFI1Y0dVOVhDSmxiV0ZwYkZ3aUlIWmhiSFZsUFZ3aVhDSWdjR3hoWTJWb2IyeGtaWEk5WENKRmJuUmxjaUJsYldGcGJGd2lJRnd2UGx4eVhHNDhjM0JoYmlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdFpYSnliM0p0YzJkY0lpQnpkSGxzWlQxY0ltUnBjM0JzWVhrNklHNXZibVU3WENJK1ZHaHBjeUJwY3lCeVpYRjFhWEpsWkM0OFhDOXpjR0Z1UGp4Y0wyUnBkajVjY2x4dVBHUnBkaUJwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwWW05dmEyRm1jbVZsWTI5dWMzVnNkR0YwYVc5dVgzQm9iMjVsWENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExYSnZkeUJ0WVhWMGFXTm1iM0p0TFhSbGJDQnRZWFYwYVdObWIzSnRMV1pwWld4a0xUUWdiV0YxZEdsalptOXliUzF5WlhGMWFYSmxaRndpSUdSaGRHRXRkbUZzYVdSaGRHVTlYQ0p3YUc5dVpWd2lJR1JoZEdFdGRtRnNhV1JoZEdsdmJpMTBlWEJsUFZ3aWRHVnNYQ0krUEd4aFltVnNJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXNZV0psYkY5NGFYUmliMjlyWVdaeVpXVmpiMjV6ZFd4MFlYUnBiMjVmY0dodmJtVmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YkdGaVpXeGNJaUJtYjNJOVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR0p2YjJ0aFpuSmxaV052Ym5OMWJIUmhkR2x2Ymw5d2FHOXVaVndpUGxCb2IyNWxJRTUxYldKbGNqeGNMMnhoWW1Wc1BseHlYRzQ4YVc1d2RYUWdhV1E5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHSnZiMnRoWm5KbFpXTnZibk4xYkhSaGRHbHZibDl3YUc5dVpWd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzFwYm5CMWRGd2lJRzVoYldVOVhDSnRZWFYwYVdObWIzSnRXM0JvYjI1bFhWd2lJSFI1Y0dVOVhDSjBaV3hjSWlCMllXeDFaVDFjSWx3aUlIQnNZV05sYUc5c1pHVnlQVndpUlc1MFpYSWdVR2h2Ym1VZ2JtOHVYQ0lnWEM4K1hISmNianh6Y0dGdUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMWxjbkp2Y20xeloxd2lJSE4wZVd4bFBWd2laR2x6Y0d4aGVUb2dibTl1WlR0Y0lqNVVhR2x6SUdseklISmxjWFZwY21Wa0xqeGNMM053WVc0K1BGd3ZaR2wyUGx4eVhHNDhYQzlrYVhZK1hISmNianhrYVhZZ1kyeGhjM005WENKbWIzSnRMWE5sWTNScGIyNWNJajVjY2x4dVBHUnBkaUJwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwWW05dmEyRm1jbVZsWTI5dWMzVnNkR0YwYVc5dVgySjFjMmx1WlhOelgyNWhiV1ZjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0ZEdWNGRDQnRZWFYwYVdObWIzSnRMV1pwWld4a0xUVmNJajQ4YkdGaVpXd2dhV1E5WENKdFlYVjBhV05tYjNKdFgyeGhZbVZzWDNocGRHSnZiMnRoWm5KbFpXTnZibk4xYkhSaGRHbHZibDlpZFhOcGJtVnpjMTl1WVcxbFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV3hoWW1Wc1hDSWdabTl5UFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUmliMjlyWVdaeVpXVmpiMjV6ZFd4MFlYUnBiMjVmWW5WemFXNWxjM05mYm1GdFpWd2lQa0oxYzJsdVpYTnpJRTVoYldVOFhDOXNZV0psYkQ1Y2NseHVQR2x1Y0hWMElHbGtQVndpYldGMWRHbGpabTl5YlY5cGJuQjFkRjk0YVhSaWIyOXJZV1p5WldWamIyNXpkV3gwWVhScGIyNWZZblZ6YVc1bGMzTmZibUZ0WlZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXBibkIxZEZ3aUlHNWhiV1U5WENKdFlYVjBhV05tYjNKdFcySjFjMmx1WlhOelgyNWhiV1ZkWENJZ2RIbHdaVDFjSW5SbGVIUmNJaUIyWVd4MVpUMWNJbHdpSUhCc1lXTmxhRzlzWkdWeVBWd2lSVzUwWlhJZ1FuVnphVzVsYzNNZ1RtRnRaVndpSUZ3dlBqeGNMMlJwZGo1Y2NseHVQR1JwZGlCcFpEMWNJbTFoZFhScFkyWnZjbTFmZUdsMFltOXZhMkZtY21WbFkyOXVjM1ZzZEdGMGFXOXVYM0J5WldabVpYSmxaRjkwWldOb2JtOXNiMmQ1WENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExYSnZkeUJ0WVhWMGFXTm1iM0p0TFhSbGVIUWdiV0YxZEdsalptOXliUzFtYVdWc1pDMDJYQ0krUEd4aFltVnNJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXNZV0psYkY5NGFYUmliMjlyWVdaeVpXVmpiMjV6ZFd4MFlYUnBiMjVmY0hKbFptWmxjbVZrWDNSbFkyaHViMnh2WjNsY0lpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRiR0ZpWld4Y0lpQm1iM0k5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHSnZiMnRoWm5KbFpXTnZibk4xYkhSaGRHbHZibDl3Y21WbVptVnlaV1JmZEdWamFHNXZiRzluZVZ3aVBsQnlaV1ptWlhKbFpDQlVaV05vYm05c2IyZDVQRnd2YkdGaVpXdytYSEpjYmp4cGJuQjFkQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZhVzV3ZFhSZmVHbDBZbTl2YTJGbWNtVmxZMjl1YzNWc2RHRjBhVzl1WDNCeVpXWm1aWEpsWkY5MFpXTm9ibTlzYjJkNVhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV2x1Y0hWMFhDSWdibUZ0WlQxY0ltMWhkWFJwWTJadmNtMWJjSEpsWm1abGNtVmtYM1JsWTJodWIyeHZaM2xkWENJZ2RIbHdaVDFjSW5SbGVIUmNJaUIyWVd4MVpUMWNJbHdpSUhCc1lXTmxhRzlzWkdWeVBWd2lSVzUwWlhJZ2NISmxabVpsY21Wa0lIUmxZMmh1YjJ4dlozbGNJaUJjTHo0OFhDOWthWFkrWEhKY2JqeGNMMlJwZGo1Y2NseHVQR1JwZGlCamJHRnpjejFjSW1admNtMHRjMlZqZEdsdmJsd2lQbHh5WEc0OFpHbDJJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOTRhWFJpYjI5cllXWnlaV1ZqYjI1emRXeDBZWFJwYjI1ZllYQndjbTk0WDJKMVpHZGxkRjkxYzJSY0lpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRjbTkzSUcxaGRYUnBZMlp2Y20wdGJuVnRZbVZ5SUcxaGRYUnBZMlp2Y20wdFptbGxiR1F0TjF3aVBqeHNZV0psYkNCcFpEMWNJbTFoZFhScFkyWnZjbTFmYkdGaVpXeGZlR2wwWW05dmEyRm1jbVZsWTI5dWMzVnNkR0YwYVc5dVgyRndjSEp2ZUY5aWRXUm5aWFJmZFhOa1hDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV3hoWW1Wc1hDSWdabTl5UFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUmliMjlyWVdaeVpXVmpiMjV6ZFd4MFlYUnBiMjVmWVhCd2NtOTRYMkoxWkdkbGRGOTFjMlJjSWo1QmNIQnliM2dnUW5Wa1oyVjBJQ2hWVTBRcFBGd3ZiR0ZpWld3K1hISmNianhwYm5CMWRDQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmFXNXdkWFJmZUdsMFltOXZhMkZtY21WbFkyOXVjM1ZzZEdGMGFXOXVYMkZ3Y0hKdmVGOWlkV1JuWlhSZmRYTmtYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFdsdWNIVjBYQ0lnYm1GdFpUMWNJbTFoZFhScFkyWnZjbTFiWVhCd2NtOTRYMkoxWkdkbGRGOTFjMlJkWENJZ2RIbHdaVDFjSW01MWJXSmxjbHdpSUhaaGJIVmxQVndpWENJZ2NHeGhZMlZvYjJ4a1pYSTlYQ0pGYm5SbGNpQkNkV1JuWlhSY0lpQmNMejQ4WEM5a2FYWStYSEpjYmp4a2FYWWdhV1E5WENKdFlYVjBhV05tYjNKdFgzaHBkR0p2YjJ0aFpuSmxaV052Ym5OMWJIUmhkR2x2Ymw5d2NtOXFaV04wWDJSbFlXUnNhVzVsWENJZ1kyeGhjM005WENKdFlYVjBhV05tYjNKdExYSnZkeUJ0WVhWMGFXTm1iM0p0TFdSaGRHVWdiV0YxZEdsalptOXliUzFtYVdWc1pDMDRYQ0krUEd4aFltVnNJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXNZV0psYkY5NGFYUmliMjlyWVdaeVpXVmpiMjV6ZFd4MFlYUnBiMjVmY0hKdmFtVmpkRjlrWldGa2JHbHVaVndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxc1lXSmxiRndpSUdadmNqMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWW05dmEyRm1jbVZsWTI5dWMzVnNkR0YwYVc5dVgzQnliMnBsWTNSZlpHVmhaR3hwYm1WY0lqNVFjbTlxWldOMElFUmxZV1JzYVc1bFBGd3ZiR0ZpWld3K1hISmNianhwYm5CMWRDQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmFXNXdkWFJmZUdsMFltOXZhMkZtY21WbFkyOXVjM1ZzZEdGMGFXOXVYM0J5YjJwbFkzUmZaR1ZoWkd4cGJtVmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YVc1d2RYUWdaR0YwWlMxMGFXMWxYQ0lnYm1GdFpUMWNJbTFoZFhScFkyWnZjbTFiY0hKdmFtVmpkRjlrWldGa2JHbHVaVjFjSWlCMGVYQmxQVndpWkdGMFpWd2lJSFpoYkhWbFBWd2lYQ0lnY0d4aFkyVm9iMnhrWlhJOVhDSlRaV3hsWTNRZ1VISnZhbVZqZENCRVpXRmtiR2x1WlZ3aUlGd3ZQanhjTDJScGRqNWNjbHh1UEZ3dlpHbDJQbHh5WEc0OFpHbDJJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOTRhWFJpYjI5cllXWnlaV1ZqYjI1emRXeDBZWFJwYjI1ZmMzVndjRzl5ZEdsdVoxOWtiMk4xYldWdWRGd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzF5YjNjZ2JXRjFkR2xqWm05eWJTMW1hV3hsSUcxaGRYUnBZMlp2Y20wdFptbGxiR1F0T1Z3aVBqeHNZV0psYkNCcFpEMWNJbTFoZFhScFkyWnZjbTFmYkdGaVpXeGZlR2wwWW05dmEyRm1jbVZsWTI5dWMzVnNkR0YwYVc5dVgzTjFjSEJ2Y25ScGJtZGZaRzlqZFcxbGJuUmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YkdGaVpXeGNJaUJtYjNJOVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR0p2YjJ0aFpuSmxaV052Ym5OMWJIUmhkR2x2Ymw5emRYQndiM0owYVc1blgyUnZZM1Z0Wlc1MFhDSStVM1Z3Y0c5eWRHbHVaeUJFYjJOMWJXVnVkRHhjTDJ4aFltVnNQbHh5WEc0OGFXNXdkWFFnYVdROVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR0p2YjJ0aFpuSmxaV052Ym5OMWJIUmhkR2x2Ymw5emRYQndiM0owYVc1blgyUnZZM1Z0Wlc1MFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV2x1Y0hWMElITmxiR1ZqZEMxbWFXeGxJR1p2Y20wdGFXNXdkWFJjSWlCdVlXMWxQVndpYldGMWRHbGpabTl5YlZ0emRYQndiM0owYVc1blgyUnZZM1Z0Wlc1MFhWd2lJSFI1Y0dVOVhDSm1hV3hsWENJZ2RtRnNkV1U5WENKY0lpQndiR0ZqWldodmJHUmxjajFjSWxObGJHVmpkQ0JtYVd4bFhDSWdYQzgrWEhKY2JqeHpjR0Z1SUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxb1pXeHdiV1Z6YzJGblpWd2lQazFoZUNCVGFYcGxPaUF4TUNCTlFqeGNMM053WVc0K1BGd3ZaR2wyUGx4eVhHNDhaR2wySUdsa1BWd2liV0YxZEdsalptOXliVjk0YVhSaWIyOXJZV1p5WldWamIyNXpkV3gwWVhScGIyNWZjM1ZpYldsMFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMWEp2ZHlCdFlYVjBhV05tYjNKdExXSjFkSFJ2YmkxM2NtRndjR1Z5SUcxaGRYUnBZMlp2Y20wdFptbGxiR1F0TVRCY0lqNDhZblYwZEc5dUlHbGtQVndpYldGMWRHbGpabTl5YlY5cGJuQjFkRjk0YVhSaWIyOXJZV1p5WldWamIyNXpkV3gwWVhScGIyNWZjM1ZpYldsMFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV0oxZEhSdmJpQmlkRzRnWW5SdUxXUmxabUYxYkhSY0lpQnVZVzFsUFZ3aWJXRjFkR2xqWm05eWJWdHpkV0p0YVhSZFhDSWdkSGx3WlQxY0luTjFZbTFwZEZ3aUlIWmhiSFZsUFZ3aVhDSStVM1ZpYldsMFBGd3ZZblYwZEc5dVBqeGNMMlJwZGo1Y2NseHVQRnd2WkdsMlBseHlYRzQ4WEM5a2FYWStYSEpjYmp4cGJuQjFkQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwWW05dmEyRm1jbVZsWTI5dWMzVnNkR0YwYVc5dVgybGtYQ0lnYm1GdFpUMWNJbTFoZFhScFkyWnZjbTFiWm05eWJVbGtYVndpSUhSNWNHVTlYQ0pvYVdSa1pXNWNJaUIyWVd4MVpUMWNJamxjSWlCY0x6NWNjbHh1UEdsdWNIVjBJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOTRhWFJpYjI5cllXWnlaV1ZqYjI1emRXeDBZWFJwYjI1ZmNtVjBkWEp1WENJZ2JtRnRaVDFjSW0xaGRYUnBZMlp2Y20xYmNtVjBkWEp1WFZ3aUlIUjVjR1U5WENKb2FXUmtaVzVjSWlCMllXeDFaVDFjSWx3aUlGd3ZQbHh5WEc0OGFXNXdkWFFnYVdROVhDSnRZWFYwYVdObWIzSnRYM2hwZEdKdmIydGhabkpsWldOdmJuTjFiSFJoZEdsdmJsOXVZVzFsWENJZ2JtRnRaVDFjSW0xaGRYUnBZMlp2Y20xYlptOXliVTVoYldWZFhDSWdkSGx3WlQxY0ltaHBaR1JsYmx3aUlIWmhiSFZsUFZ3aWVHbDBZbTl2YTJGbWNtVmxZMjl1YzNWc2RHRjBhVzl1WENJZ1hDOCtYSEpjYmx4eVhHNDhYQzltYjNKdFBqeGNMMlJwZGo1Y2NseHVQRnd2WkdsMlBpSXNJbTl1YjJabWMzZHBkR05vSWpvaVQyNGlMQ0p6YUc5M1gyOXViSGxmWm05eVgyRjFkR2h2Y2lJNkltOW1aaUlzSW5Ob2IzZGZZV3hzSWpvaVlXeHNJaXdpWkdWc1lYa2lPaUl3SWl3aWMyTnliMnhzWDNSdmNDSTZJakFpTENKaGJtbHRZWFJsWDJsdUlqb2labUZrWlVsdUlpd2lZVzVwYldGMFpWOXZkWFFpT2lKbVlXUmxUM1YwSWl3aVlXTjBhVzl1WDJKMWRIUnZiaUk2SWk1a1pYUmhhV3h6TFdOdmJuTjFiSFJoYm5RZ1luVjBkRzl1SWl3aWRtbGxkMTl3YkdGalpTSTZJaUlzSW1GamRHbHZibDlpZFhSMGIyNWZkSGx3WlNJNkltTnNhV05yVTJWc1pXTjBiM0lpTENKdGIyUmhiRjlqYjI1MFpXNTBJam9pWTNWemRHOXRYMmgwYld3aUxDSjJhV1YzWDNSNWNHVWlPaUprWldaaGRXeDBJaXdpYjI1dlptWnZkbVZ5YkdGNUlqb2lUMjRpTENKdmRtVnliR0Y1WDI5d1lXTnBkSGtpT2lJd0xqVXdNREF3TUNJc0luTm9iM2RmY0c5d2RYQmZkR2wwYkdVaU9pSlBabVlpTENKemFHOTNYM0J2Y0hWd1gyUmxjMk1pT2lKUFptWWlMQ0pqYkc5elpWOWlkWFIwYjI0aU9pSnZabVlpTENKb1pXRmtaWEpmWW1kamIyeHZjaUk2SWlObVptWm1abVlpTENKaVoxOXBiV0ZuWlNJNklpSXNJbXh2WjE5MWMyVnlJam9pVDI0aUxDSm5kV1Z6ZENJNklrOXVJaXdpWVdOMGFYWmxYMlJoZEdWZlkyaGxZMnNpT2lKdlptWWlMQ0poWTNScGRtVkpiblJsY25aaGJDSTZJakl3TWpRdE1ERXRNRGtnTVRRNk1UWTZNelVpTENKa1pXRmpkR2wyWlVsdWRHVnlkbUZzSWpvaU1qQXlOQzB3TVMwd09TQXhORG94Tmpvek5TSXNJbkJpWDNCdmMybDBhVzl1SWpvaVkyVnVkR1Z5TFdObGJuUmxjaUlzSW5CaVgyMWhjbWRwYmlJNklqQWlMQ0p2Y0hScGIyNXpJam9pZTF3aVpXNWhZbXhsWDJKaFkydG5jbTkxYm1SZlozSmhaR2xsYm5SY0lqcGNJbTltWmx3aUxGd2lZbUZqYTJkeWIzVnVaRjluY21Ga2FXVnVkRjlqYjJ4dmNsOHhYQ0k2WENJak1EQXdYQ0lzWENKaVlXTnJaM0p2ZFc1a1gyZHlZV1JwWlc1MFgyTnZiRzl5WHpKY0lqcGNJaU5tWm1aY0lpeGNJbkJpWDJkeVlXUnBaVzUwWDJScGNtVmpkR2x2Ymx3aU9sd2lkbVZ5ZEdsallXeGNJaXhjSW1WNFkyVndkRjl3YjNOMFgzUjVjR1Z6WENJNlcxMHNYQ0psZUdObGNIUmZjRzl6ZEhOY0lqcGJYU3hjSW1Gc2JGOXdiM04wYzF3aU9sd2lYQ0lzWENKamJHOXpaVjlpZFhSMGIyNWZaR1ZzWVhsY0lqb3dMRndpWTJ4dmMyVmZZblYwZEc5dVgyUmxiR0Y1WDJadmNsOXRiMkpwYkdWY0lqb3dMRndpWlc1aFlteGxYMk5zYjNObFgySjFkSFJ2Ymw5a1pXeGhlVjltYjNKZmJXOWlhV3hsWENJNlhDSnZabVpjSWl4Y0ltVnVZV0pzWlY5d1lsOXpiM1Z1WkZ3aU9sd2liMlptWENJc1hDSnZkbVZ5YkdGNVgyTnZiRzl5WENJNlhDSWpNREF3WENJc1hDSmhibWx0WVhScGIyNWZjM0JsWldSY0lqb3hMRndpWTJ4dmMyVmZZVzVwYldGMGFXOXVYM053WldWa1hDSTZNU3hjSW5CaVgyMXZZbWxzWlZ3aU9sd2liMlptWENJc1hDSmpiRzl6WlY5aWRYUjBiMjVmZEdWNGRGd2lPbHdpWEZ4MU1qY3hOVndpTEZ3aVpXNWhZbXhsWDJOc2IzTmxYMkoxZEhSdmJsOTBaWGgwWDIxdlltbHNaVndpT2x3aWIyNWNJaXhjSW1Oc2IzTmxYMkoxZEhSdmJsOTBaWGgwWDIxdlltbHNaVndpT2x3aVhGeDFNamN4TlZ3aUxGd2lZMnh2YzJWZlluVjBkRzl1WDJodmRtVnlYM1JsZUhSY0lqcGNJbHdpTEZ3aWJXOWlhV3hsWDNkcFpIUm9YQ0k2WENKY0lpeGNJbTF2WW1sc1pWOXRZWGhmZDJsa2RHaGNJanBjSWx3aUxGd2liVzlpYVd4bFgyaGxhV2RvZEZ3aU9sd2lYQ0lzWENKamJHOXpaVjlpZFhSMGIyNWZjRzl6YVhScGIyNWNJanBjSW5KcFoyaDBMWFJ2Y0Z3aUxGd2laVzVoWW14bFgyTnNiM05sWDJKMWRIUnZibDl3YjNOcGRHbHZibDl0YjJKcGJHVmNJanBjSW05bVpsd2lMRndpWTJ4dmMyVmZZblYwZEc5dVgzQnZjMmwwYVc5dVgyMXZZbWxzWlZ3aU9sd2ljbWxuYUhRdGRHOXdYQ0lzWENKemFHOTNYMjl1YkhsZmIyNWpaVndpT2x3aWIyWm1YQ0lzWENKemFHOTNYMjl1WDJodmJXVmZjR0ZuWlZ3aU9sd2liMlptWENJc1hDSmpiRzl6WlY5d2IzQjFjRjlsYzJOY0lqcGNJbTl1WENJc1hDSndiM0IxY0Y5M2FXUjBhRjlpZVY5d1pYSmpaVzUwWVdkbFgzQjRYQ0k2WENKd2FYaGxiSE5jSWl4Y0luQnZjSFZ3WDJOdmJuUmxiblJmY0dGa1pHbHVaMXdpT2pJd0xGd2ljRzl3ZFhCZmNHRmtaR2x1WjE5aWVWOXdaWEpqWlc1MFlXZGxYM0I0WENJNlhDSndhWGhsYkhOY0lpeGNJbkJpWDJadmJuUmZabUZ0YVd4NVhDSTZYQ0pKYm1obGNtbDBYQ0lzWENKamJHOXpaVjl3YjNCMWNGOXZkbVZ5YkdGNVhDSTZYQ0p2Ymx3aUxGd2lZMnh2YzJWZmNHOXdkWEJmYjNabGNteGhlVjl0YjJKcGJHVmNJanBjSW05dVhDSXNYQ0psYm1GaWJHVmZjR0pmWm5Wc2JITmpjbVZsYmx3aU9sd2liMlptWENJc1hDSmxibUZpYkdWZmFHbGtaVjkwYVcxbGNsd2lPbHdpYjJabVhDSXNYQ0psYm1GaWJHVmZZWFYwYjJOc2IzTmxYMjl1WDJOdmJYQnNaWFJwYjI1Y0lqcGNJbTltWmx3aUxGd2laVzVoWW14bFgzTnZZMmxoYkY5c2FXNXJjMXdpT2x3aWIyWm1YQ0lzWENKemIyTnBZV3hmYkdsdWEzTmNJanA3WENKc2FXNXJaV1JwYmw5c2FXNXJYQ0k2WENKY0lpeGNJbVpoWTJWaWIyOXJYMnhwYm10Y0lqcGNJbHdpTEZ3aWRIZHBkSFJsY2w5c2FXNXJYQ0k2WENKY0lpeGNJblpyYjI1MFlXdDBaVjlzYVc1clhDSTZYQ0pjSWl4Y0lubHZkWFIxWW1WZmJHbHVhMXdpT2x3aVhDSXNYQ0pwYm5OMFlXZHlZVzFmYkdsdWExd2lPbHdpWENJc1hDSmlaV2hoYm1ObFgyeHBibXRjSWpwY0lsd2lmU3hjSW5OdlkybGhiRjlpZFhSMGIyNXpYMmhsWVdScGJtZGNJanBjSWx3aUxGd2lZMnh2YzJWZlluVjBkRzl1WDNOcGVtVmNJam94TEZ3aVkyeHZjMlZmWW5WMGRHOXVYMmx0WVdkbFhDSTZYQ0pjSWl4Y0ltSnZjbVJsY2w5emRIbHNaVndpT2x3aVJHOTBkR1ZrWENJc1hDSmhlWE5mY0dKZmFHOTJaWEpmYzJodmQxOWpiRzl6WlY5aWRHNWNJanBjSW05bVpsd2lMRndpWkdsellXSnNaVjl6WTNKdmJHeGNJanBjSW05bVpsd2lMRndpWkdsellXSnNaVjl6WTNKdmJHeGZiVzlpYVd4bFhDSTZYQ0p2Wm1aY0lpeGNJbVZ1WVdKc1pWOXZjR1Z1WDJSbGJHRjVYMjF2WW1sc1pWd2lPbHdpYjJabVhDSXNYQ0p2Y0dWdVgyUmxiR0Y1WDIxdlltbHNaVndpT2x3aU1Gd2lMRndpWlc1aFlteGxYM05qY205c2JGOTBiM0JmYlc5aWFXeGxYQ0k2WENKdlptWmNJaXhjSW5OamNtOXNiRjkwYjNCZmJXOWlhV3hsWENJNlhDSXdYQ0lzWENKbGJtRmliR1ZmY0dKZmNHOXphWFJwYjI1ZmJXOWlhV3hsWENJNlhDSnZabVpjSWl4Y0luQmlYM0J2YzJsMGFXOXVYMjF2WW1sc1pWd2lPbHdpWTJWdWRHVnlMV05sYm5SbGNsd2lMRndpY0dKZlltZGZhVzFoWjJWZmNHOXphWFJwYjI1Y0lqcGNJbU5sYm5SbGNpMWpaVzUwWlhKY0lpeGNJbkJpWDJKblgybHRZV2RsWDNOcGVtbHVaMXdpT2x3aVkyOTJaWEpjSWl4Y0luWnBaR1Z2WDNSb1pXMWxYM1Z5YkZ3aU9sd2lYQ0lzWENKd1lsOXRhVzVmYUdWcFoyaDBYQ0k2WENKY0lpeGNJbkJpWDJadmJuUmZjMmw2WlZ3aU9qRXpMRndpY0dKZlptOXVkRjl6YVhwbFgyWnZjbDl0YjJKcGJHVmNJam94TXl4Y0luQmlYM1JwZEd4bFgzUmxlSFJmYzJoaFpHOTNYQ0k2WENKeVoySmhLREkxTlN3eU5UVXNNalUxTERBcFhDSXNYQ0psYm1GaWJHVmZjR0pmZEdsMGJHVmZkR1Y0ZEY5emFHRmtiM2RjSWpwY0ltOW1abHdpTEZ3aWNHSmZkR2wwYkdWZmRHVjRkRjl6YUdGa2IzZGZlRjl2Wm1aelpYUmNJam95TEZ3aWNHSmZkR2wwYkdWZmRHVjRkRjl6YUdGa2IzZGZlVjl2Wm1aelpYUmNJam95TEZ3aWNHSmZkR2wwYkdWZmRHVjRkRjl6YUdGa2IzZGZlbDl2Wm1aelpYUmNJam93TEZ3aVkzSmxZWFJsWDJSaGRHVmNJanBjSWpJd01qTXRNVEl0TWpFZ01EZzZOVEk2TURSY0lpeGNJbU55WldGMFpWOWhkWFJvYjNKY0lqbzJMRndpWVhWMGFHOXlYQ0k2WENKN1hGeGNJbWxrWEZ4Y0lqcGNYRndpTmx4Y1hDSXNYRnhjSW01aGJXVmNYRndpT2x4Y1hDSkxZVzFoYkNCUWRYSnZhR2wwWEZ4Y0luMWNJaXhjSW1WdVlXSnNaVjlrYVhOdGFYTnpYQ0k2WENKdlptWmNJaXhjSW1WdVlXSnNaVjlrYVhOdGFYTnpYM1JsZUhSY0lqcGNJa1JwYzIxcGMzTWdZV1JjSWl4Y0ltVnVZV0pzWlY5aWIzaGZjMmhoWkc5M1hDSTZYQ0p2Wm1aY0lpeGNJbUp2ZUY5emFHRmtiM2RmWTI5c2IzSmNJanBjSWlNd01EQmNJaXhjSW5CaVgySnZlRjl6YUdGa2IzZGZlRjl2Wm1aelpYUmNJam93TEZ3aWNHSmZZbTk0WDNOb1lXUnZkMTk1WDI5bVpuTmxkRndpT2pBc1hDSndZbDlpYjNoZmMyaGhaRzkzWDNwZmIyWm1jMlYwWENJNk1UVXNYQ0prYVhOaFlteGxYM05qY205c2JGOXZibDl3YjNCMWNGd2lPbHdpYjJabVhDSXNYQ0prYVhOaFlteGxYM05qY205c2JGOXZibDl3YjNCMWNGOXRiMkpwYkdWY0lqcGNJbTltWmx3aUxGd2ljMmh2ZDE5elkzSnZiR3hpWVhKY0lqcGNJbTltWmx3aUxGd2lhR2xrWlY5dmJsOXdZMXdpT2x3aWIyWm1YQ0lzWENKb2FXUmxYMjl1WDNSaFlteGxkSE5jSWpwY0ltOW1abHdpTEZ3aWNHSmZZbWRmYVcxaFoyVmZaR2x5WldOMGFXOXVYMjl1WDIxdlltbHNaVndpT2x3aWIyNWNJaXhjSW1Oc2IzTmxYMkoxZEhSdmJsOWpiMnh2Y2x3aU9sd2lJekF3TURBd01Gd2lMRndpWTJ4dmMyVmZZblYwZEc5dVgyaHZkbVZ5WDJOdmJHOXlYQ0k2WENJak1EQXdNREF3WENJc1hDSmliSFZ5WldSZmIzWmxjbXhoZVZ3aU9sd2liMlptWENJc1hDSmliSFZ5WldSZmIzWmxjbXhoZVY5dGIySnBiR1ZjSWpwY0ltOW1abHdpTEZ3aWNHSmZZWFYwYjJOc2IzTmxYMjF2WW1sc1pWd2lPbHdpTWpCY0lpeGNJbVZ1WVdKc1pWOWhkWFJ2WTJ4dmMyVmZaR1ZzWVhsZmRHVjRkRjl0YjJKcGJHVmNJanBjSW05bVpsd2lMRndpWlc1aFlteGxYMjkyWlhKc1lYbGZkR1Y0ZEY5dGIySnBiR1ZjSWpwY0ltOW1abHdpTEZ3aWIzWmxjbXhoZVY5dGIySnBiR1ZmYjNCaFkybDBlVndpT2x3aU1DNDFYQ0o5SW4xOSI7CiAgICAgICAgICAgICAgICA=
6 ms
javascript;base64,aWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF83JykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0gZWxzZSB7IGpRdWVyeShkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF83JykuY3NzKHsndG9wJzogJzAnLCAncmlnaHQnOiAnMCcsICdib3R0b20nOiAnMCcsICdsZWZ0JzogJzAnfSk7IH0=
6 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiggJCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2Ugc3RyaWN0JzsKICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNob3dfb25seV9vbmNlID0gJ29mZic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNNb2JpbGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbG9zZVBvcHVwT3ZlcmxheSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNQYWdlU2Nyb2xsRGlzYWJsZWQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlUG9wdXBPdmVybGF5ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BhZ2VTY3JvbGxEaXNhYmxlZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuY29uc3VsdC14aXQtYnRuIGJ1dHRvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX211c2ljX3NvdW5kJykuY3NzKHsnZGlzcGxheSc6J2Jsb2NrJ30pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNob3dfb25seV9vbmNlID09ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vd3d3LnhjZWxsZW5jZS1pdC5jb20vd3AtYWRtaW4vYWRtaW4tYWpheC5waHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdwb3N0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnYXlzX3BiX3NldF9jb29raWVfb25seV9vbmNlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiA3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdDb25zdWx0IFhpdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRhQXR0ciA9ICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNycpLmF0dHIoJ2RhdGEtYXlzLWZsYWcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX2ZsYWcgJiYgZGF0YUF0dHIgPT0gJ3RydWUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzcnKS5jc3MoJ2Rpc3BsYXknLCdibG9jaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzcnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ2F1dG8nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfNyBzcGFuJykuaHRtbCgkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzcgc3BhbicpLmF0dHIoJ2RhdGEtYXlzLW1vYmlsZS1zZWNvbmRzJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzcgc3BhbicpLmh0bWwoJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl83IHNwYW4nKS5hdHRyKCdkYXRhLWF5cy1zZWNvbmRzJykpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl83KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcl9wYl83ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzcnKS5yZW1vdmVDbGFzcygkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX21vZGFsX2FuaW1hdGVfb3V0XzcnKS52YWwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF83JykuYWRkQ2xhc3MoJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX2luXzcnKS52YWwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF83JykuY3NzKCdkaXNwbGF5JywgJ2Jsb2NrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4ICYmICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzcnKS5hdHRyKCdkYXRhLW1vYmlsZS1vdmVybGF5JykgPT0gJ3RydWUnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzcnKS5jc3MoeydvcGFjaXR5JzogJzAuNScsICdkaXNwbGF5JzogJ2Jsb2NrJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcjYXlzLXBiLXNjcmVlbi1zaGFkZV83JykuY3NzKHsnb3BhY2l0eSc6ICcwLjUwMDAwMCcsICdkaXNwbGF5JzogJ2Jsb2NrJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNoZWNrXzcnKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jaGVja183JykuYXR0cignY2hlY2tlZCcsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItbW9kYWwtY2hlY2tib3hfNycpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQgPSAkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZF83JykudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc2Vjb25kcyA9IChheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkIC8gMTAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvdW5kX3NyYyA9ICQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfc291bmRfNycpLmF0dHIoJ3NyYycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbG9zZV9zb3VuZF9zcmMgPSAkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzcnKS5hdHRyKCdzcmMnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCA9IHBhcnNlRmxvYXQoYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCkgLSA1MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX3NvdW5kXzcnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3BhdXNlX3NvdW5kXzcnKS5vbignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX3NvdW5kXzcnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jbG9zZSBzb3VuZCBzdGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiB0eXBlb2YgY2xvc2Vfc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyAmJiAnb2ZmJyA9PT0gJ29uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAhPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3BhdXNlX3NvdW5kXzcnKS5vbignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c19wYl9jbG9zZV9zb3VuZF83JykuZ2V0KDApLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzcgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF83JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzcnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl83KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNycpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNycpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY2xvc2Ugc291bmQgZW5kCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aW1lX3BiX3N0cl83ID0gJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl83IHNwYW4nKS5hdHRyKCdkYXRhLWF5cy1zZWNvbmRzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtb2JpbGVUaW1lciA9ICskKGRvY3VtZW50KS5maW5kKCcuYXlzX3BiX3RpbWVyXzcgc3BhbicpLmF0dHIoJ2RhdGEtYXlzLW1vYmlsZS1zZWNvbmRzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfNyBzcGFuJykuaHRtbChtb2JpbGVUaW1lcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVfcGJfc3RyXzcgPSBtb2JpbGVUaW1lcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWVfcGJfNyA9IHBhcnNlSW50KHRpbWVfcGJfc3RyXzcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRpbWVfcGJfNyAhPT0gdW5kZWZpbmVkKXsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRpbWVfcGJfNyAhPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aW1lcl9wYl83ID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdUaW1lX3BiXzcgPSB0aW1lX3BiXzctLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBheXNfcGJfZWZmZWN0T3V0XzcgPSAkKGRvY3VtZW50KS5maW5kKCcjYXlzX3BiX21vZGFsX2FuaW1hdGVfb3V0XzcnKS52YWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXNfcGJfdGltZXJfNyBzcGFuJykudGV4dChuZXdUaW1lX3BiXzcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF83JykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uLWR1cmF0aW9uJzogYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zZWNvbmRzICsgJ3MnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihuZXdUaW1lX3BiXzcgPD0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV83JykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzcnKS5hdHRyKCdjbGFzcycsICdheXMtcGItbW9kYWwgYXlzLXBiLW1vZGFsXzcgZml4ZWQtcHJpY2UtcG9wdXAgc2NoZWR1bGUtZGV2ZWxvcGVyLWludGVydmlldyAnKyQoZG9jdW1lbnQpLmZpbmQoJyNheXNfcGJfbW9kYWxfYW5pbWF0ZV9vdXRfNycpLnZhbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzcgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF83JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNycpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdvZmYnID09PSAnb24nICYmIHR5cGVvZiBzb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9zb3VuZF83JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnMScgJiYgdHlwZW9mIGNsb3NlX3NvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ29mZicgPT09ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2F5c19wYl9jbG9zZV9zb3VuZF83JykuZ2V0KDApLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfNyAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF83JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9jbG9zZV9zb3VuZF83JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzcnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNycpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV83Jykub25lKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfNycpLmNzcygncG9pbnRlci1ldmVudHMnLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNycpLmF0dHIoJ2NsYXNzJywgJ2F5cy1wYi1tb2RhbCBheXMtcGItbW9kYWxfNyBmaXhlZC1wcmljZS1wb3B1cCBzY2hlZHVsZS1kZXZlbG9wZXItaW50ZXJ2aWV3ICcrYXlzX3BiX2VmZmVjdE91dF83KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnaWZyYW1lJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gL2h0dHBzOlwvXC93d3cueW91dHViZS5jb20vOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3JjID0gJCh0aGlzKS5hdHRyKCdzcmMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdzcmMnLCAkKHRoaXMpLmF0dHIoJ3NyYycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgndmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2YgJCh0aGlzKS5nZXQoMCkgIT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhICQodGhpcykuZ2V0KDApLnBhdXNlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmdldCgwKS5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5cy1wYi1tb2RhbHMnKS5maW5kKCdhdWRpby53cC1hdWRpby1zaG9ydGNvZGUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZiAkKHRoaXMpLmdldCgwKSAhPSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEgJCh0aGlzKS5nZXQoMCkucGF1c2VkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZ2V0KDApLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXlzX3BiX2VmZmVjdE91dF83ICE9ICdub25lJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzcnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF83JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfNycpLmNzcyh7J29wYWNpdHknOiAnMCcsICdkaXNwbGF5JzogJ25vbmUnfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl83KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX3BiX2ZsYWcgPSAgdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdrZXlkb3duJywgZnVuY3Rpb24oZXZlbnQpIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIGF5c19wYl9mbGFnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT0gMjcpIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzcnKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX3BiX2ZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnb2ZmJyA9PT0gJ29uJyAmJiB0eXBlb2Ygc291bmRfc3JjICE9PSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gJCgnI2F5c19wYl9zb3VuZF83JykuZ2V0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJfcGJfNyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgJiYgdHlwZW9mIGNsb3NlX3NvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ29mZicgPT09ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAhPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNycpLmdldCgwKS5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfNyAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNycpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNycpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXlzX3BiX2FuaW1hdGlvbl9jbG9zZV9zcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF83JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfY2xvc2Vfc291bmRfNycpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJ2NsaWNrU2VsZWN0b3InICE9ICdib3RoJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjbG9zZVBvcHVwT3ZlcmxheSAmJiAnT24nID09ICdPbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzcnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBiX3BhcmVudF9kaXYgPSAkKHRoaXMpLmZpbmQoJy5heXMtcGItbW9kYWxzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9kaXYgPSAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgnLmF5cy1wYi1tb2RhbF83Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGJfcGFyZW50X2Rpdi5pcyhwYl9kaXYpICYmIHBiX3BhcmVudF9kaXYuaGFzKHBiX2RpdikubGVuZ3RoID09PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNycpLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfNycpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzcnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzcgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzcnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzcnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNycpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzcnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2xvc2VQb3B1cE92ZXJsYXkgJiYgJ09uJyA9PSAnT24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc183Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfcGFyZW50X2RpdiA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYl9kaXYgPSAkKHRoaXMpLmZpbmQoJy5heXMtcGItbW9kYWxfNycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBiX2Rpdi5pcyhlLnRhcmdldCkgJiYgcGJfZGl2LmhhcyhlLnRhcmdldCkubGVuZ3RoID09PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNycpLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ29mZicgPT09ICdvbicgJiYgdHlwZW9mIHNvdW5kX3NyYyAhPT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdWRpbyA9ICQoJyNheXNfcGJfc291bmRfNycpLmdldCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyX3BiXzcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJzEnICYmIHR5cGVvZiBjbG9zZV9zb3VuZF9zcmMgIT09ICd1bmRlZmluZWQnICYmICdvZmYnID09PSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignMScgIT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzcnKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihheXNfcGJfZWZmZWN0T3V0XzcgIT0gJ25vbmUnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzcnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzcnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcl9wYl83KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGF5c19wYl9hbmltYXRpb25fY2xvc2Vfc3BlZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNycpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW8gPSAkKCcjYXlzX3BiX2Nsb3NlX3NvdW5kXzcnKS5nZXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5c19wYl90aW1lcl83JykuY3NzKCdkaXNwbGF5Jywnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF83JykuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmltYXRpb24tZHVyYXRpb24nOiBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NlY29uZHMgKyAncycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNycpLm9uZSgnY2xpY2snLCBmdW5jdGlvbigpeyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXlzX3BiX2VmZmVjdE91dF83ID0gJChkb2N1bWVudCkuZmluZCgnI2F5c19wYl9tb2RhbF9hbmltYXRlX291dF83JykudmFsKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzcnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNycpLmF0dHIoJ2NsYXNzJywgJ2F5cy1wYi1tb2RhbCBheXMtcGItbW9kYWxfNyBmaXhlZC1wcmljZS1wb3B1cCBzY2hlZHVsZS1kZXZlbG9wZXItaW50ZXJ2aWV3ICcrYXlzX3BiX2VmZmVjdE91dF83KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLmF5cy1wYi1tb2RhbHMnKS5maW5kKCdpZnJhbWUnKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IC9odHRwczpcL1wvd3d3LnlvdXR1YmUuY29tLzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3JjID0gJCh0aGlzKS5hdHRyKCdzcmMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ3NyYycsICQodGhpcykuYXR0cignc3JjJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXMtcGItbW9kYWxzJykuZmluZCgndmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZiAkKHRoaXMpLmdldCgwKSAhPSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISAkKHRoaXMpLmdldCgwKS5wYXVzZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmdldCgwKS5wYXVzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuYXlzLXBiLW1vZGFscycpLmZpbmQoJ2F1ZGlvLndwLWF1ZGlvLXNob3J0Y29kZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2YgJCh0aGlzKS5nZXQoMCkgIT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEgJCh0aGlzKS5nZXQoMCkucGF1c2VkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5nZXQoMCkucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF5c19wYl9lZmZlY3RPdXRfNyAhPSAnbm9uZScpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF83JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfNycpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF5c19mbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBheXNfcGJfYW5pbWF0aW9uX2Nsb3NlX3NwZWVkKTsgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbF83JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc183JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheXNfZmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJyNheXMtcGItc2NyZWVuLXNoYWRlXzcnKS5jc3MoeydvcGFjaXR5JzogJzAnLCAnZGlzcGxheSc6ICdub25lJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc1BhZ2VTY3JvbGxEaXNhYmxlZCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJ2JvZHknKS5hZGRDbGFzcygncGJfZGlzYWJsZV9zY3JvbGxfNycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCdodG1sJykuYWRkQ2xhc3MoJ3BiX2Rpc2FibGVfc2Nyb2xsXzcnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShkb2N1bWVudCkub24oJ2NsaWNrJywgJy5heXMtcGItbW9kYWwtY2xvc2VfNycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnYm9keScpLnJlbW92ZUNsYXNzKCdwYl9kaXNhYmxlX3Njcm9sbF83Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCdodG1sJykucmVtb3ZlQ2xhc3MoJ3BiX2Rpc2FibGVfc2Nyb2xsXzcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ09uJyAhPSAnT24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfNycpLmNzcyh7J29wYWNpdHknOiAnMCcsICdkaXNwbGF5JzogJ25vbmUgIWltcG9ydGFudCcsICdwb2ludGVyLWV2ZW50cyc6ICdub25lJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsXzcnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ2F1dG8nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF2X3BvcF9tb2RhbHNfNycpLmNzcygncG9pbnRlci1ldmVudHMnLCdub25lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZignZmFsc2UnID09ICd0cnVlJyAmJiB3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKDAgIT0gMCAmJiAnb2ZmJyAhPSAnb24nKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNycpLmNzcyh7J2Rpc3BsYXknOiAnbm9uZSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV83JykuY3NzKHsnZGlzcGxheSc6ICdibG9jayd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoMCAhPSAwICYmICdvZmYnICE9ICdvbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbC1jbG9zZV83JykuY3NzKHsnZGlzcGxheSc6ICdub25lJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFsLWNsb3NlXzcnKS5jc3MoeydkaXNwbGF5JzogJ2Jsb2NrJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYoMCA9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjbG9zZVBvcHVwT3ZlcmxheSAmJiAnT24nID09ICdPbicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXZfcG9wX21vZGFsc183Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBiX3BhcmVudCA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGJfZGl2ID0gJCh0aGlzKS5maW5kKCcuYXlzLXBiLW1vZGFsXzcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGJfZGl2LmlzKGUudGFyZ2V0KSAmJiBwYl9kaXYuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNycpLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzX3BiX2ZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdrZXlkb3duJywgZnVuY3Rpb24oZXZlbnQpIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCcxJyAmJiBheXNfcGJfZmxhZyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PSAyNykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWwtY2xvc2VfNycpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXlzX3BiX2ZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdPbicgIT0gJ09uJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnI2F5cy1wYi1zY3JlZW4tc2hhZGVfNycpLmNzcyh7J29wYWNpdHknOiAnMCcsICdkaXNwbGF5JzogJ25vbmUgIWltcG9ydGFudCcsICdwb2ludGVyLWV2ZW50cyc6ICdub25lJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxfNycpLmNzcygncG9pbnRlci1ldmVudHMnLCAnYXV0bycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5hdl9wb3BfbW9kYWxzXzcnKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywnbm9uZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCdjbGlja1NlbGVjdG9yJyAhPSAnYm90aCcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIHZpZGVvJykuaGFzQ2xhc3MoJ3dwLXZpZGVvLXNob3J0Y29kZScpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvV2lkdGggID0gJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgdmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJykuYXR0cignd2lkdGgnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvSGVpZ2h0ID0gJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgdmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJykuYXR0cignaGVpZ2h0Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmZpbmQoJy5heXMtcGItbW9kYWxzIC53cC12aWRlbycpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyAubWVqcy1jb250YWluZXInKS5yZW1vdmVBdHRyKCdzdHlsZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgdmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJykucmVtb3ZlQXR0cignc3R5bGUnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyAud3AtdmlkZW8nKS5jc3Moeyd3aWR0aCc6ICcxMDAlJ30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgLm1lanMtY29udGFpbmVyJykuY3NzKHsnd2lkdGgnOiAnMTAwJScsJ2hlaWdodCc6IHZpZGVvSGVpZ2h0ICsgJ3B4J30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgdmlkZW8ud3AtdmlkZW8tc2hvcnRjb2RlJykuY3NzKHsnd2lkdGgnOiAnMTAwJScsJ2hlaWdodCc6IHZpZGVvSGVpZ2h0ICsgJ3B4J30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDEwMDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkKGRvY3VtZW50KS5maW5kKCcuYXlzLXBiLW1vZGFscyBpZnJhbWUnKS5hdHRyKCdzdHlsZScpICE9ICcnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuZmluZCgnLmF5cy1wYi1tb2RhbHMgaWZyYW1lJykucmVtb3ZlQXR0cignc3R5bGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSw1MDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCdvZmYnID09ICdvbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW8gPSAkKGRvY3VtZW50KS5maW5kKCd2aWRlby53cC12aWRlby1zaG9ydGNvZGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZpZGVvLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5uZXh0KCkudmFsKCkgPT09ICdvbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5heXNfdmlkZW9fd2luZG93JykuZmluZCgnLmNsb3NlLWltYWdlLWJ0bicpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSkoIGpRdWVyeSApOwogICAgICAgICAgICAgICAg
5 ms
javascript;base64,CiAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mIGF5c1BvcHVwT3B0aW9ucyA9PT0gInVuZGVmaW5lZCIpewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXlzUG9wdXBPcHRpb25zID0gW107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGF5c1BvcHVwT3B0aW9uc1siNyJdICA9ICJleUp3YjNCMWNHSnZlQ0k2ZXlKcFpDSTZJamNpTENKMGFYUnNaU0k2SWtOdmJuTjFiSFFnV0dsMElpd2ljRzl3ZFhCZmJtRnRaU0k2SWlJc0ltUmxjMk55YVhCMGFXOXVJam9pSWl3aVkyRjBaV2R2Y25sZmFXUWlPaUl4SWl3aVlYVjBiMk5zYjNObElqb2lNQ0lzSW1OdmIydHBaU0k2SWpBaUxDSjNhV1IwYUNJNk1UQTFNQ3dpYUdWcFoyaDBJam8zTlRBc0ltSm5ZMjlzYjNJaU9pSWpabVptWm1abUlpd2lkR1Y0ZEdOdmJHOXlJam9pSXpBd01EQXdNQ0lzSW1KdmNtUmxjbk5wZW1VaU9pSXhJaXdpWW05eVpHVnlZMjlzYjNJaU9pSWpabVptWm1abUlpd2lZbTl5WkdWeVgzSmhaR2wxY3lJNklqUWlMQ0p6YUc5eWRHTnZaR1VpT2lJaUxDSjFjMlZ5YzE5eWIyeGxJam9pVzEwaUxDSmpkWE4wYjIxZlkyeGhjM01pT2lKbWFYaGxaQzF3Y21salpTMXdiM0IxY0NCelkyaGxaSFZzWlMxa1pYWmxiRzl3WlhJdGFXNTBaWEoyYVdWM0lpd2lZM1Z6ZEc5dFgyTnpjeUk2SWlJc0ltTjFjM1J2YlY5b2RHMXNJam9pUEdScGRpQmpiR0Z6Y3oxY0ltWnBlR1ZrTFhCeWFXTmxMWEJ2Y0hWd0xXaGxZV1JjSWo1Y2NseHVQR2d6UGtOdmJuUmhZM1FnVlZNOFhDOW9NejVjY2x4dVBGd3ZaR2wyUGx4eVhHNDhaR2wySUdOc1lYTnpQVndpWm1sNFpXUXRjRzl3ZFhBdFltOWtlU0JpYjI5ckxXTnZibk4xYkhSaGRHbHZibHdpUGx4eVhHNDhaR2wySUdOc1lYTnpQVndpWm1sNFpXUXRjRzl3ZFhBdGRHVjRkQzF6YVdSbFhDSStYSEpjYmp4a2FYWWdZMnhoYzNNOVhDSm1hWGhsWkMxd2IzQjFjQzEwWlhoMExYUnBkR3hsWENJK1hISmNianhvTXo1RGIyNTBZV04wSUVsdVptOXliV0YwYVc5dVBGd3ZhRE0rWEhKY2JqeGNMMlJwZGo1Y2NseHVQR1JwZGlCamJHRnpjejFjSW1acGVHVmtMWEJ2Y0hWd0xYUmxlSFF0WTI5dGJXOXVYQ0krWEhKY2JseHlYRzVHYVd4c0lIVndJSFJvWlNCbWIzSnRJR0Z1WkNCdmRYSWdWR1ZoYlNCM2FXeHNJR2RsZENCaVlXTnJJSFJ2SUhsdmRTQjNhWFJvYVc0Z01qUWdhRzkxY25NdVhISmNibHh5WEc0OFhDOWthWFkrWEhKY2JqeGthWFlnWTJ4aGMzTTlYQ0ptYVhobFpDMXdiM0IxY0MxMFpYaDBMV052Ym5SaFkzUmNJajQ4WVNCb2NtVm1QVndpZEdWc09pczVNUzA1T1RBNU9UVTFPVFE0WENJK0t6a3hMVGs1TURrNU5UVTVORGc4WEM5aFBqeGNMMlJwZGo1Y2NseHVQR1JwZGlCamJHRnpjejFjSW1acGVHVmtMWEJ2Y0hWd0xYUmxlSFF0WlcxaGFXeGNJajQ4WVNCb2NtVm1QVndpYldGcGJIUnZPbWx1Wm05QWVHTmxiR3hsYm1ObExXbDBMbU52YlZ3aVBtbHVabTlBZUdObGJHeGxibU5sTFdsMExtTnZiVHhjTDJFK1BGd3ZaR2wyUGx4eVhHNDhkV3dnWTJ4aGMzTTlYQ0p6YjJOcFlXd3RiR2x1YTNOY0lqNWNjbHh1SUNBZ0lDQWdJQ0E4YkdrZ1kyeGhjM005WENKemIyTnBZV3d0YkdsdWEzTXRiR2x6ZEZ3aVBseHlYRzRnSUNBZ0lDQWdJQ0FnSUNBOFlTQm9jbVZtUFZ3aWFIUjBjSE02WEM5Y0wzZDNkeTVtWVdObFltOXZheTVqYjIxY0wxaGpaV3hzWlc1alpVbFVYQzljSWlCMFlYSm5aWFE5WENKZllteGhibXRjSWo0OGFTQmpiR0Z6Y3oxY0ltbGpiMjR0Wm1GalpXSnZiMnRjSWo0OFhDOXBQanhjTDJFK1hISmNiaUFnSUNBZ0lDQWdQRnd2YkdrK1hISmNiaUFnSUNBZ0lDQWdQR3hwSUdOc1lYTnpQVndpYzI5amFXRnNMV3hwYm10ekxXeHBjM1JjSWo1Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnUEdFZ2FISmxaajFjSW1oMGRIQnpPbHd2WEM5M2QzY3VhVzV6ZEdGbmNtRnRMbU52YlZ3dmVHTmxiR3hsYm1ObGFYUmNMejlvYkQxbGJsd2lJSFJoY21kbGREMWNJbDlpYkdGdWExd2lQanhwSUdOc1lYTnpQVndpYVdOdmJpMXBibk4wWVZ3aVBqeGNMMmsrUEZ3dllUNWNjbHh1SUNBZ0lDQWdJQ0E4WEM5c2FUNWNjbHh1SUNBZ0lDQWdJQ0E4YkdrZ1kyeGhjM005WENKemIyTnBZV3d0YkdsdWEzTXRiR2x6ZEZ3aVBseHlYRzRnSUNBZ0lDQWdJQ0FnSUNBOFlTQm9jbVZtUFZ3aWFIUjBjSE02WEM5Y0wybHVMbXhwYm10bFpHbHVMbU52YlZ3dlkyOXRjR0Z1ZVZ3dmVHTmxiR3hsYm1ObExXbDBYQ0lnZEdGeVoyVjBQVndpWDJKc1lXNXJYQ0krUEdrZ1kyeGhjM005WENKcFkyOXVMV3hwYm10bFpHbHVYQ0krUEZ3dmFUNDhYQzloUGx4eVhHNGdJQ0FnSUNBZ0lEeGNMMnhwUGx4eVhHNGdJQ0FnSUNBZ0lEeHNhU0JqYkdGemN6MWNJbk52WTJsaGJDMXNhVzVyY3kxc2FYTjBYQ0krWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJRHhoSUdoeVpXWTlYQ0pvZEhSd2N6cGNMMXd2ZEhkcGRIUmxjaTVqYjIxY0wzaGpaV3hzWlc1alpXbDBQMnhoYm1jOVpXNWNJaUIwWVhKblpYUTlYQ0pmWW14aGJtdGNJajQ4YVNCamJHRnpjejFjSW1samIyNHRkSGRwZEhSbGNsd2lQanhjTDJrK1BGd3ZZVDVjY2x4dUlDQWdJQ0FnSUNBOFhDOXNhVDVjY2x4dUlDQWdJQ0FnSUR4Y0wzVnNQbHh5WEc0OFpHbDJJR05zWVhOelBWd2labWw0WldRdGNHOXdkWEF0WW05MGRHOXRMWFJsZUhSY0lqNWNjbHh1WEhKY2JsZGxJR0Z6YzNWeVpTQmhZbk52YkhWMFpTQndjbTkwWldOMGFXOXVJRzltSUhsdmRYSWdaR0YwWVM0Z1ZHaGxJR2x1Wm05eWJXRjBhVzl1SUhsdmRWeDFNakF4T1habElIQnliM1pwWkdWa0lIZHBiR3dnY21WdFlXbHVJR052Ym1acFpHVnVkR2xoYkNCaGJtUWdkMjl1WEhVeU1ERTVkQ0JpWlNCemFHRnlaV1FnZDJsMGFDQmhibmtnZEdocGNtUWdjR0Z5ZEdsbGN5NGdVbVZ6ZENCaGMzTjFjbVZrTENCNWIzVnlJR1Z0WVdsc0lIZHBiR3dnYm05MElHSmxJSFZ6WldRZ1ptOXlJR0Z1ZVNCMWJuTnZiR2xqYVhSbFpDQmpiMjF0ZFc1cFkyRjBhVzl1TGx4eVhHNWNjbHh1UEZ3dlpHbDJQbHh5WEc0OFhDOWthWFkrWEhKY2Jqd2hMUzBnVzJkeVlYWnBkSGxtYjNKdElHbGtQVndpT0Z3aUlHRnFZWGc5WENKMGNuVmxYQ0lnZEdsMGJHVTlYQ0owY25WbFhDSmRJQzB0UGx4eVhHNDhaR2wySUdsa1BWd2liV0YxZEdsalptOXliVjkzY21Gd2NHVnlYM2hwZEdOdmJuTjFiSFJtYjNKdFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRYM2R5WVhCd1pYSWdabTl5YlMxa1pYUmhhV3h6WENJK1BHWnZjbTBnYVdROVhDSnRZWFYwYVdObWIzSnRYM2hwZEdOdmJuTjFiSFJtYjNKdFhDSWdjbTlzWlQxY0ltWnZjbTFjSWlCaFkzUnBiMjQ5WENKb2RIUndjenBjTDF3dmJXRXVibTl3WVdOalpXeGxjbUYwWlM1amIyMWNMMlp2Y20xY0wzTjFZbTFwZEQ5bWIzSnRTV1E5TVRGY0lpQmhkWFJ2WTI5dGNHeGxkR1U5WENKbVlXeHpaVndpSUdWdVkzUjVjR1U5WENKdGRXeDBhWEJoY25SY0wyWnZjbTB0WkdGMFlWd2lJRzFsZEdodlpEMWNJbkJ2YzNSY0lpQmtZWFJoTFcxaGRYUnBZeTFtYjNKdFBWd2llR2wwWTI5dWMzVnNkR1p2Y20xY0lqNWNjbHh1UEdScGRpQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmVHbDBZMjl1YzNWc2RHWnZjbTFmWlhKeWIzSmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0WlhKeWIzSmNJajQ4WEM5a2FYWStYSEpjYmp4a2FYWWdhV1E5WENKdFlYVjBhV05tYjNKdFgzaHBkR052Ym5OMWJIUm1iM0p0WDIxbGMzTmhaMlZjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGJXVnpjMkZuWlNCemRXTmpaWE56Wm5Wc2JIa3RjM1ZpYldsMFhDSStQRnd2WkdsMlBseHlYRzQ4WkdsMklHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXBibTVsY21admNtMWNJajVjY2x4dVBHUnBkaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0Y0dGblpTMTNjbUZ3Y0dWeUlHMWhkWFJwWTJadmNtMHRjR0ZuWlMweFhDSWdaR0YwWVMxdFlYVjBhV010Wm05eWJTMXdZV2RsUFZ3aU1Wd2lQbHh5WEc0OFpHbDJJR05zWVhOelBWd2labTl5YlMxelpXTjBhVzl1WENJK1hISmNianhrYVhZZ2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDNocGRHTnZibk4xYkhSbWIzSnRYMlpwY25OMFgyNWhiV1ZjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0ZEdWNGRDQnRZWFYwYVdObWIzSnRMV1pwWld4a0xURWdiV0YxZEdsalptOXliUzF5WlhGMWFYSmxaRndpSUdSaGRHRXRkbUZzYVdSaGRHVTlYQ0ptYVhKemRGOXVZVzFsWENJZ1pHRjBZUzEyWVd4cFpHRjBhVzl1TFhSNWNHVTlYQ0owWlhoMFhDSStQR3hoWW1Wc0lHbGtQVndpYldGMWRHbGpabTl5YlY5c1lXSmxiRjk0YVhSamIyNXpkV3gwWm05eWJWOW1hWEp6ZEY5dVlXMWxYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFd4aFltVnNYQ0lnWm05eVBWd2liV0YxZEdsalptOXliVjlwYm5CMWRGOTRhWFJqYjI1emRXeDBabTl5YlY5bWFYSnpkRjl1WVcxbFhDSStSbWx5YzNRZ1RtRnRaVHhjTDJ4aFltVnNQbHh5WEc0OGFXNXdkWFFnYVdROVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR052Ym5OMWJIUm1iM0p0WDJacGNuTjBYMjVoYldWY0lpQmpiR0Z6Y3oxY0ltMWhkWFJwWTJadmNtMHRhVzV3ZFhSY0lpQnVZVzFsUFZ3aWJXRjFkR2xqWm05eWJWdG1hWEp6ZEY5dVlXMWxYVndpSUhSNWNHVTlYQ0owWlhoMFhDSWdkbUZzZFdVOVhDSmNJaUJ3YkdGalpXaHZiR1JsY2oxY0lrVnVkR1Z5SUVacGNuTjBJRTVoYldWY0lpQmNMejVjY2x4dVBITndZVzRnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFdWeWNtOXliWE5uWENJZ2MzUjViR1U5WENKa2FYTndiR0Y1T2lCdWIyNWxPMXdpUGxSb2FYTWdhWE1nY21WeGRXbHlaV1F1UEZ3dmMzQmhiajQ4WEM5a2FYWStYSEpjYmp4a2FYWWdhV1E5WENKdFlYVjBhV05tYjNKdFgzaHBkR052Ym5OMWJIUm1iM0p0WDJ4aGMzUmZibUZ0WlZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXliM2NnYldGMWRHbGpabTl5YlMxMFpYaDBJRzFoZFhScFkyWnZjbTB0Wm1sbGJHUXRNaUJ0WVhWMGFXTm1iM0p0TFhKbGNYVnBjbVZrWENJZ1pHRjBZUzEyWVd4cFpHRjBaVDFjSW14aGMzUmZibUZ0WlZ3aUlHUmhkR0V0ZG1Gc2FXUmhkR2x2YmkxMGVYQmxQVndpZEdWNGRGd2lQanhzWVdKbGJDQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmJHRmlaV3hmZUdsMFkyOXVjM1ZzZEdadmNtMWZiR0Z6ZEY5dVlXMWxYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFd4aFltVnNYQ0lnWm05eVBWd2liV0YxZEdsalptOXliVjlwYm5CMWRGOTRhWFJqYjI1emRXeDBabTl5YlY5c1lYTjBYMjVoYldWY0lqNU1ZWE4wSUU1aGJXVThYQzlzWVdKbGJENWNjbHh1UEdsdWNIVjBJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUmpiMjV6ZFd4MFptOXliVjlzWVhOMFgyNWhiV1ZjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGFXNXdkWFJjSWlCdVlXMWxQVndpYldGMWRHbGpabTl5YlZ0c1lYTjBYMjVoYldWZFhDSWdkSGx3WlQxY0luUmxlSFJjSWlCMllXeDFaVDFjSWx3aUlIQnNZV05sYUc5c1pHVnlQVndpUlc1MFpYSWdUR0Z6ZENCT1lXMWxYQ0lnWEM4K1hISmNianh6Y0dGdUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMWxjbkp2Y20xeloxd2lJSE4wZVd4bFBWd2laR2x6Y0d4aGVUb2dibTl1WlR0Y0lqNVVhR2x6SUdseklISmxjWFZwY21Wa0xqeGNMM053WVc0K1BGd3ZaR2wyUGx4eVhHNDhYQzlrYVhZK1hISmNianhrYVhZZ1kyeGhjM005WENKbWIzSnRMWE5sWTNScGIyNWNJajVjY2x4dVBHUnBkaUJwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwWTI5dWMzVnNkR1p2Y20xZlpXMWhhV3hjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0WlcxaGFXd2diV0YxZEdsalptOXliUzFtYVdWc1pDMHpJRzFoZFhScFkyWnZjbTB0Y21WeGRXbHlaV1JjSWlCa1lYUmhMWFpoYkdsa1lYUmxQVndpWlcxaGFXeGNJaUJrWVhSaExYWmhiR2xrWVhScGIyNHRkSGx3WlQxY0ltVnRZV2xzWENJK1BHeGhZbVZzSUdsa1BWd2liV0YxZEdsalptOXliVjlzWVdKbGJGOTRhWFJqYjI1emRXeDBabTl5YlY5bGJXRnBiRndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxc1lXSmxiRndpSUdadmNqMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWTI5dWMzVnNkR1p2Y20xZlpXMWhhV3hjSWo1RmJXRnBiRHhjTDJ4aFltVnNQbHh5WEc0OGFXNXdkWFFnYVdROVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR052Ym5OMWJIUm1iM0p0WDJWdFlXbHNYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFdsdWNIVjBYQ0lnYm1GdFpUMWNJbTFoZFhScFkyWnZjbTFiWlcxaGFXeGRYQ0lnZEhsd1pUMWNJbVZ0WVdsc1hDSWdkbUZzZFdVOVhDSmNJaUJ3YkdGalpXaHZiR1JsY2oxY0lrVnVkR1Z5SUVWdFlXbHNYQ0lnWEM4K1hISmNianh6Y0dGdUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMWxjbkp2Y20xeloxd2lJSE4wZVd4bFBWd2laR2x6Y0d4aGVUb2dibTl1WlR0Y0lqNVVhR2x6SUdseklISmxjWFZwY21Wa0xqeGNMM053WVc0K1BGd3ZaR2wyUGx4eVhHNDhaR2wySUdsa1BWd2liV0YxZEdsalptOXliVjk0YVhSamIyNXpkV3gwWm05eWJWOWpiMjUwWVdOMFgyNTFiV0psY2x3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXliM2NnYldGMWRHbGpabTl5YlMxMFpXd2diV0YxZEdsalptOXliUzFtYVdWc1pDMDBYQ0krUEd4aFltVnNJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXNZV0psYkY5NGFYUmpiMjV6ZFd4MFptOXliVjlqYjI1MFlXTjBYMjUxYldKbGNsd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzFzWVdKbGJGd2lJR1p2Y2oxY0ltMWhkWFJwWTJadmNtMWZhVzV3ZFhSZmVHbDBZMjl1YzNWc2RHWnZjbTFmWTI5dWRHRmpkRjl1ZFcxaVpYSmNJajVEYjI1MFlXTjBJRTUxYldKbGNqeGNMMnhoWW1Wc1BseHlYRzQ4YVc1d2RYUWdhV1E5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHTnZibk4xYkhSbWIzSnRYMk52Ym5SaFkzUmZiblZ0WW1WeVhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV2x1Y0hWMFhDSWdibUZ0WlQxY0ltMWhkWFJwWTJadmNtMWJZMjl1ZEdGamRGOXVkVzFpWlhKZFhDSWdkSGx3WlQxY0luUmxiRndpSUhaaGJIVmxQVndpWENJZ2NHeGhZMlZvYjJ4a1pYSTlYQ0pRYUc5dVpTQnVieTVjSWlCY0x6NDhYQzlrYVhZK1hISmNianhjTDJScGRqNWNjbHh1UEdScGRpQmpiR0Z6Y3oxY0ltWnZjbTB0YzJWamRHbHZibHdpUGx4eVhHNDhaR2wySUdsa1BWd2liV0YxZEdsalptOXliVjk0YVhSamIyNXpkV3gwWm05eWJWOWpiMjF3WVc1NVgyNWhiV1ZjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGNtOTNJRzFoZFhScFkyWnZjbTB0ZEdWNGRDQnRZWFYwYVdObWIzSnRMV1pwWld4a0xUVmNJajQ4YkdGaVpXd2dhV1E5WENKdFlYVjBhV05tYjNKdFgyeGhZbVZzWDNocGRHTnZibk4xYkhSbWIzSnRYMk52YlhCaGJubGZibUZ0WlZ3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMXNZV0psYkZ3aUlHWnZjajFjSW0xaGRYUnBZMlp2Y20xZmFXNXdkWFJmZUdsMFkyOXVjM1ZzZEdadmNtMWZZMjl0Y0dGdWVWOXVZVzFsWENJK1EyOXRjR0Z1ZVNCT1lXMWxQRnd2YkdGaVpXdytYSEpjYmp4cGJuQjFkQ0JwWkQxY0ltMWhkWFJwWTJadmNtMWZhVzV3ZFhSZmVHbDBZMjl1YzNWc2RHWnZjbTFmWTI5dGNHRnVlVjl1WVcxbFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV2x1Y0hWMFhDSWdibUZ0WlQxY0ltMWhkWFJwWTJadmNtMWJZMjl0Y0dGdWVWOXVZVzFsWFZ3aUlIUjVjR1U5WENKMFpYaDBYQ0lnZG1Gc2RXVTlYQ0pjSWlCd2JHRmpaV2h2YkdSbGNqMWNJa1Z1ZEdWeUlFTnZiWEJoYm5rZ1RtRnRaVndpSUZ3dlBqeGNMMlJwZGo1Y2NseHVQR1JwZGlCcFpEMWNJbTFoZFhScFkyWnZjbTFmZUdsMFkyOXVjM1ZzZEdadmNtMWZZWEJ3Y205NFgySjFaR2RsZEY5MWMyUmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0Y205M0lHMWhkWFJwWTJadmNtMHRiblZ0WW1WeUlHMWhkWFJwWTJadmNtMHRabWxsYkdRdE4xd2lQanhzWVdKbGJDQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmJHRmlaV3hmZUdsMFkyOXVjM1ZzZEdadmNtMWZZWEJ3Y205NFgySjFaR2RsZEY5MWMyUmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YkdGaVpXeGNJaUJtYjNJOVhDSnRZWFYwYVdObWIzSnRYMmx1Y0hWMFgzaHBkR052Ym5OMWJIUm1iM0p0WDJGd2NISnZlRjlpZFdSblpYUmZkWE5rWENJK1FYQndjbTk0SUVKMVpHZGxkQ0FvVlZORUtUeGNMMnhoWW1Wc1BseHlYRzQ4YVc1d2RYUWdhV1E5WENKdFlYVjBhV05tYjNKdFgybHVjSFYwWDNocGRHTnZibk4xYkhSbWIzSnRYMkZ3Y0hKdmVGOWlkV1JuWlhSZmRYTmtYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFdsdWNIVjBYQ0lnYm1GdFpUMWNJbTFoZFhScFkyWnZjbTFiWVhCd2NtOTRYMkoxWkdkbGRGOTFjMlJkWENJZ2RIbHdaVDFjSW01MWJXSmxjbHdpSUhaaGJIVmxQVndpWENJZ2NHeGhZMlZvYjJ4a1pYSTlYQ0pGYm5SbGNpQkNkV1JuWlhSY0lpQmNMejQ4WEM5a2FYWStYSEpjYmp4Y0wyUnBkajVjY2x4dVBHUnBkaUJwWkQxY0ltMWhkWFJwWTJadmNtMWZlR2wwWTI5dWMzVnNkR1p2Y20xZmNISmxabVpsY21Wa1gzUmxZMmh1YjJ4dlozbGNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0Y205M0lHMWhkWFJwWTJadmNtMHRkR1Y0ZENCdFlYVjBhV05tYjNKdExXWnBaV3hrTFRaY0lqNDhiR0ZpWld3Z2FXUTlYQ0p0WVhWMGFXTm1iM0p0WDJ4aFltVnNYM2hwZEdOdmJuTjFiSFJtYjNKdFgzQnlaV1ptWlhKbFpGOTBaV05vYm05c2IyZDVYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFd4aFltVnNYQ0lnWm05eVBWd2liV0YxZEdsalptOXliVjlwYm5CMWRGOTRhWFJqYjI1emRXeDBabTl5YlY5d2NtVm1abVZ5WldSZmRHVmphRzV2Ykc5bmVWd2lQbEJ5WldabVpYSmxaQ0JVWldOb2JtOXNiMmQ1UEZ3dmJHRmlaV3crWEhKY2JqeHBibkIxZENCcFpEMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWTI5dWMzVnNkR1p2Y20xZmNISmxabVpsY21Wa1gzUmxZMmh1YjJ4dlozbGNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0YVc1d2RYUWdabTl5YlMxcGJuQjFkRndpSUc1aGJXVTlYQ0p0WVhWMGFXTm1iM0p0VzNCeVpXWm1aWEpsWkY5MFpXTm9ibTlzYjJkNVhWd2lJSFI1Y0dVOVhDSjBaWGgwWENJZ2RtRnNkV1U5WENKY0lpQndiR0ZqWldodmJHUmxjajFjSWtWdWRHVnlJRkJ5WldabVpYSmxaQ0JVWldOb2JtOXNiMmQ1WENJZ1hDOCtQRnd2WkdsMlBseHlYRzQ4WkdsMklHbGtQVndpYldGMWRHbGpabTl5YlY5NGFYUmpiMjV6ZFd4MFptOXliVjl5WlhGMWFYSmxiV1Z1ZEY5a1pYTmpjbWx3ZEdsdmJsd2lJR05zWVhOelBWd2liV0YxZEdsalptOXliUzF5YjNjZ2JXRjFkR2xqWm05eWJTMTBaWGgwSUcxaGRYUnBZMlp2Y20wdFptbGxiR1F0T0Z3aVBqeHNZV0psYkNCcFpEMWNJbTFoZFhScFkyWnZjbTFmYkdGaVpXeGZlR2wwWTI5dWMzVnNkR1p2Y20xZmNtVnhkV2x5WlcxbGJuUmZaR1Z6WTNKcGNIUnBiMjVjSWlCamJHRnpjejFjSW0xaGRYUnBZMlp2Y20wdGJHRmlaV3hjSWlCbWIzSTlYQ0p0WVhWMGFXTm1iM0p0WDJsdWNIVjBYM2hwZEdOdmJuTjFiSFJtYjNKdFgzSmxjWFZwY21WdFpXNTBYMlJsYzJOeWFYQjBhVzl1WENJK1VtVnhkV2x5WlcxbGJuUWdSR1Z6WTNKcGNIUnBiMjQ4WEM5c1lXSmxiRDVjY2x4dVBIUmxlSFJoY21WaElHbGtQVndpYldGMWRHbGpabTl5YlY5cGJuQjFkRjk0YVhSamIyNXpkV3gwWm05eWJWOXlaWEYxYVhKbGJXVnVkRjlrWlhOamNtbHdkR2x2Ymx3aUlHTnNZWE56UFZ3aWJXRjFkR2xqWm05eWJTMTBaWGgwWVhKbFlTQm1iM0p0TFdsdWNIVjBYQ0lnYm1GdFpUMWNJbTFoZFhScFkyWnZjbTFiY21WeGRXbHlaVzFsYm5SZlpHVnpZM0pwY0hScGIyNWRYQ0lnY0d4aFkyVm9iMnhrWlhJOVhDSkZiblJsY2lCU1pYRjFhWEpsYldWdWRDQkVaWE5qY21sd2RHbHZibHdpUGp4Y0wzUmxlSFJoY21WaFBqeGNMMlJwZGo1Y2NseHVQR1JwZGlCcFpEMWNJbTFoZFhScFkyWnZjbTFmZUdsMFkyOXVjM1ZzZEdadmNtMWZjM1Z3Y0c5eWRHbHVaMTlrYjJOMWJXVnVkRndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxeWIzY2diV0YxZEdsalptOXliUzFtYVd4bElHMWhkWFJwWTJadmNtMHRabWxsYkdRdE9Wd2lQanhzWVdKbGJDQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmJHRmlaV3hmZUdsMFkyOXVjM1ZzZEdadmNtMWZjM1Z3Y0c5eWRHbHVaMTlrYjJOMWJXVnVkRndpSUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxc1lXSmxiRndpSUdadmNqMWNJbTFoZFhScFkyWnZjbTFmYVc1d2RYUmZlR2wwWTI5dWMzVnNkR1p2Y20xZmMzVndjRzl5ZEdsdVoxOWtiMk4xYldWdWRGd2lQbE4xY0hCdmNuUnBibWNnUkc5amRXMWxiblE4WEM5c1lXSmxiRDVjY2x4dVBHbHVjSFYwSUdsa1BWd2liV0YxZEdsalptOXliVjlwYm5CMWRGOTRhWFJqYjI1emRXeDBabTl5YlY5emRYQndiM0owYVc1blgyUnZZM1Z0Wlc1MFhDSWdZMnhoYzNNOVhDSnRZWFYwYVdObWIzSnRMV2x1Y0hWMElITmxiR1ZqZEMxbWFXeGxJR1p2Y20wdGFXNXdkWFJjSWlCdVlXMWxQVndpYldGMWRHbGpabTl5YlZ0emRYQndiM0owYVc1blgyUnZZM1Z0Wlc1MFhWd2lJSFI1Y0dVOVhDSm1hV3hsWENJZ2RtRnNkV1U5WENKY0lpQndiR0ZqWldodmJHUmxjajFjSWxObGJHVmpkQ0JHYVd4bFhDSWdYQzgrWEhKY2JqeHpjR0Z1SUdOc1lYTnpQVndpYldGMWRHbGpabTl5YlMxb1pXeHdiV1Z6YzJGblpWd2lQazFoZUNCVGFYcGxPaUF4TUNCTlFqeGNMM053WVc0K1hISmNianhjTDJScGRqNWNjbHh1UEdScGRpQnBaRDFjSW0xaGRYUnBZMlp2Y20xZmVHbDBZMjl1YzNWc2RHWnZjbTFmYzNWaWJXbDBYQ0lnWTJ4aGMzTTlYQ0p0WVhWMGFXTm1iM0p0TFhKdmR5QnRZWFYwYVdObWIzSnRMV0oxZEhSdmJpMTNjbUZ3Y0dWeUlHMWhkWFJwWTJadmNtMHRabWxsYkdRdE1UQmNJajQ4WW5WMGRHOXVJR2xrUFZ3aWJXRjFkR2xqWm05eWJWOXBibkIxZEY5NGFYUmpiMjV6ZFd4MFptOXliVjl6ZFdKdGFYUmNJaUJqYkdGemN6MWNJbTFoZFhScFkyWnZjbTB0WW5WMGRHOXVJR0owYmlCaWRHNHRaR1ZtWVhWc2RGd2lJRzVoYldVOVhDSnRZWFYwYVdObWIzSnRXM04xWW0xcGRGMWNJaUIwZVhCbFBWd2ljM1ZpYldsMFhDSWdkbUZzZFdVOVhDSmNJajVUZFdKdGFYUThYQzlpZFhSMGIyNCtQRnd2WkdsMlBseHlYRzQ4WEM5a2FYWStYSEpjYmp4Y0wyUnBkajVjY2x4dVBHbHVjSFYwSUdsa1BWd2liV0YxZEdsalptOXliVjk0YVhSamIyNXpkV3gwWm05eWJWOXBaRndpSUc1aGJXVTlYQ0p0WVhWMGFXTm1iM0p0VzJadmNtMUpaRjFjSWlCMGVYQmxQVndpYUdsa1pHVnVYQ0lnZG1Gc2RXVTlYQ0l4TVZ3aUlGd3ZQbHh5WEc0OGFXNXdkWFFnYVdROVhDSnRZWFYwYVdObWIzSnRYM2hwZEdOdmJuTjFiSFJtYjNKdFgzSmxkSFZ5Ymx3aUlHNWhiV1U5WENKdFlYVjBhV05tYjNKdFczSmxkSFZ5YmwxY0lpQjBlWEJsUFZ3aWFHbGtaR1Z1WENJZ2RtRnNkV1U5WENKY0lpQmNMejVjY2x4dVBHbHVjSFYwSUdsa1BWd2liV0YxZEdsalptOXliVjk0YVhSamIyNXpkV3gwWm05eWJWOXVZVzFsWENJZ2JtRnRaVDFjSW0xaGRYUnBZMlp2Y20xYlptOXliVTVoYldWZFhDSWdkSGx3WlQxY0ltaHBaR1JsYmx3aUlIWmhiSFZsUFZ3aWVHbDBZMjl1YzNWc2RHWnZjbTFjSWlCY0x6NWNjbHh1WEhKY2JqeGNMMlp2Y20wK1BGd3ZaR2wyUGx4eVhHNDhYQzlrYVhZK0lpd2liMjV2Wm1aemQybDBZMmdpT2lKUGJpSXNJbk5vYjNkZmIyNXNlVjltYjNKZllYVjBhRzl5SWpvaWIyWm1JaXdpYzJodmQxOWhiR3dpT2lKaGJHd2lMQ0prWld4aGVTSTZJakFpTENKelkzSnZiR3hmZEc5d0lqb2lNQ0lzSW1GdWFXMWhkR1ZmYVc0aU9pSm1ZV1JsU1c0aUxDSmhibWx0WVhSbFgyOTFkQ0k2SW1aaFpHVlBkWFFpTENKaFkzUnBiMjVmWW5WMGRHOXVJam9pTG1OdmJuTjFiSFF0ZUdsMExXSjBiaUJpZFhSMGIyNGlMQ0oyYVdWM1gzQnNZV05sSWpvaUlpd2lZV04wYVc5dVgySjFkSFJ2Ymw5MGVYQmxJam9pWTJ4cFkydFRaV3hsWTNSdmNpSXNJbTF2WkdGc1gyTnZiblJsYm5RaU9pSmpkWE4wYjIxZmFIUnRiQ0lzSW5acFpYZGZkSGx3WlNJNkltUmxabUYxYkhRaUxDSnZibTltWm05MlpYSnNZWGtpT2lKUGJpSXNJbTkyWlhKc1lYbGZiM0JoWTJsMGVTSTZJakF1TlRBd01EQXdJaXdpYzJodmQxOXdiM0IxY0Y5MGFYUnNaU0k2SWs5bVppSXNJbk5vYjNkZmNHOXdkWEJmWkdWell5STZJazltWmlJc0ltTnNiM05sWDJKMWRIUnZiaUk2SW05bVppSXNJbWhsWVdSbGNsOWlaMk52Ykc5eUlqb2lJMlptWm1abVppSXNJbUpuWDJsdFlXZGxJam9pSWl3aWJHOW5YM1Z6WlhJaU9pSlBiaUlzSW1kMVpYTjBJam9pVDI0aUxDSmhZM1JwZG1WZlpHRjBaVjlqYUdWamF5STZJbTltWmlJc0ltRmpkR2wyWlVsdWRHVnlkbUZzSWpvaU1qQXlOQzB3TVMweE5TQXhOVG94T0RvME5DSXNJbVJsWVdOMGFYWmxTVzUwWlhKMllXd2lPaUl5TURJMExUQXhMVEUxSURFMU9qRTRPalEwSWl3aWNHSmZjRzl6YVhScGIyNGlPaUpqWlc1MFpYSXRZMlZ1ZEdWeUlpd2ljR0pmYldGeVoybHVJam9pTUNJc0ltOXdkR2x2Ym5NaU9pSjdYQ0psYm1GaWJHVmZZbUZqYTJkeWIzVnVaRjluY21Ga2FXVnVkRndpT2x3aWIyWm1YQ0lzWENKaVlXTnJaM0p2ZFc1a1gyZHlZV1JwWlc1MFgyTnZiRzl5WHpGY0lqcGNJaU13TURCY0lpeGNJbUpoWTJ0bmNtOTFibVJmWjNKaFpHbGxiblJmWTI5c2IzSmZNbHdpT2x3aUkyWm1abHdpTEZ3aWNHSmZaM0poWkdsbGJuUmZaR2x5WldOMGFXOXVYQ0k2WENKMlpYSjBhV05oYkZ3aUxGd2laWGhqWlhCMFgzQnZjM1JmZEhsd1pYTmNJanBiWFN4Y0ltVjRZMlZ3ZEY5d2IzTjBjMXdpT2x0ZExGd2lZV3hzWDNCdmMzUnpYQ0k2WENKY0lpeGNJbU5zYjNObFgySjFkSFJ2Ymw5a1pXeGhlVndpT2pBc1hDSmpiRzl6WlY5aWRYUjBiMjVmWkdWc1lYbGZabTl5WDIxdlltbHNaVndpT2pBc1hDSmxibUZpYkdWZlkyeHZjMlZmWW5WMGRHOXVYMlJsYkdGNVgyWnZjbDl0YjJKcGJHVmNJanBjSW05bVpsd2lMRndpWlc1aFlteGxYM0JpWDNOdmRXNWtYQ0k2WENKdlptWmNJaXhjSW05MlpYSnNZWGxmWTI5c2IzSmNJanBjSWlNd01EQmNJaXhjSW1GdWFXMWhkR2x2Ymw5emNHVmxaRndpT2pFc1hDSmpiRzl6WlY5aGJtbHRZWFJwYjI1ZmMzQmxaV1JjSWpveExGd2ljR0pmYlc5aWFXeGxYQ0k2WENKdlptWmNJaXhjSW1Oc2IzTmxYMkoxZEhSdmJsOTBaWGgwWENJNlhDSmNYSFV5TnpFMVhDSXNYQ0psYm1GaWJHVmZZMnh2YzJWZlluVjBkRzl1WDNSbGVIUmZiVzlpYVd4bFhDSTZYQ0p2Ymx3aUxGd2lZMnh2YzJWZlluVjBkRzl1WDNSbGVIUmZiVzlpYVd4bFhDSTZYQ0pjWEhVeU56RTFYQ0lzWENKamJHOXpaVjlpZFhSMGIyNWZhRzkyWlhKZmRHVjRkRndpT2x3aVhDSXNYQ0p0YjJKcGJHVmZkMmxrZEdoY0lqcGNJbHdpTEZ3aWJXOWlhV3hsWDIxaGVGOTNhV1IwYUZ3aU9sd2lYQ0lzWENKdGIySnBiR1ZmYUdWcFoyaDBYQ0k2WENKY0lpeGNJbU5zYjNObFgySjFkSFJ2Ymw5d2IzTnBkR2x2Ymx3aU9sd2ljbWxuYUhRdGRHOXdYQ0lzWENKbGJtRmliR1ZmWTJ4dmMyVmZZblYwZEc5dVgzQnZjMmwwYVc5dVgyMXZZbWxzWlZ3aU9sd2liMlptWENJc1hDSmpiRzl6WlY5aWRYUjBiMjVmY0c5emFYUnBiMjVmYlc5aWFXeGxYQ0k2WENKeWFXZG9kQzEwYjNCY0lpeGNJbk5vYjNkZmIyNXNlVjl2Ym1ObFhDSTZYQ0p2Wm1aY0lpeGNJbk5vYjNkZmIyNWZhRzl0WlY5d1lXZGxYQ0k2WENKdlptWmNJaXhjSW1Oc2IzTmxYM0J2Y0hWd1gyVnpZMXdpT2x3aWIyNWNJaXhjSW5CdmNIVndYM2RwWkhSb1gySjVYM0JsY21ObGJuUmhaMlZmY0hoY0lqcGNJbkJwZUdWc2Mxd2lMRndpY0c5d2RYQmZZMjl1ZEdWdWRGOXdZV1JrYVc1blhDSTZNakFzWENKd2IzQjFjRjl3WVdSa2FXNW5YMko1WDNCbGNtTmxiblJoWjJWZmNIaGNJanBjSW5CcGVHVnNjMXdpTEZ3aWNHSmZabTl1ZEY5bVlXMXBiSGxjSWpwY0lrbHVhR1Z5YVhSY0lpeGNJbU5zYjNObFgzQnZjSFZ3WDI5MlpYSnNZWGxjSWpwY0ltOXVYQ0lzWENKamJHOXpaVjl3YjNCMWNGOXZkbVZ5YkdGNVgyMXZZbWxzWlZ3aU9sd2liMjVjSWl4Y0ltVnVZV0pzWlY5d1lsOW1kV3hzYzJOeVpXVnVYQ0k2WENKdlptWmNJaXhjSW1WdVlXSnNaVjlvYVdSbFgzUnBiV1Z5WENJNlhDSnZabVpjSWl4Y0ltVnVZV0pzWlY5aGRYUnZZMnh2YzJWZmIyNWZZMjl0Y0d4bGRHbHZibHdpT2x3aWIyWm1YQ0lzWENKbGJtRmliR1ZmYzI5amFXRnNYMnhwYm10elhDSTZYQ0p2Wm1aY0lpeGNJbk52WTJsaGJGOXNhVzVyYzF3aU9udGNJbXhwYm10bFpHbHVYMnhwYm10Y0lqcGNJbHdpTEZ3aVptRmpaV0p2YjJ0ZmJHbHVhMXdpT2x3aVhDSXNYQ0owZDJsMGRHVnlYMnhwYm10Y0lqcGNJbHdpTEZ3aWRtdHZiblJoYTNSbFgyeHBibXRjSWpwY0lsd2lMRndpZVc5MWRIVmlaVjlzYVc1clhDSTZYQ0pjSWl4Y0ltbHVjM1JoWjNKaGJWOXNhVzVyWENJNlhDSmNJaXhjSW1KbGFHRnVZMlZmYkdsdWExd2lPbHdpWENKOUxGd2ljMjlqYVdGc1gySjFkSFJ2Ym5OZmFHVmhaR2x1WjF3aU9sd2lYQ0lzWENKamJHOXpaVjlpZFhSMGIyNWZjMmw2WlZ3aU9qRXNYQ0pqYkc5elpWOWlkWFIwYjI1ZmFXMWhaMlZjSWpwY0lsd2lMRndpWW05eVpHVnlYM04wZVd4bFhDSTZYQ0pFYjNSMFpXUmNJaXhjSW1GNWMxOXdZbDlvYjNabGNsOXphRzkzWDJOc2IzTmxYMkowYmx3aU9sd2liMlptWENJc1hDSmthWE5oWW14bFgzTmpjbTlzYkZ3aU9sd2liMlptWENJc1hDSmthWE5oWW14bFgzTmpjbTlzYkY5dGIySnBiR1ZjSWpwY0ltOW1abHdpTEZ3aVpXNWhZbXhsWDI5d1pXNWZaR1ZzWVhsZmJXOWlhV3hsWENJNlhDSnZabVpjSWl4Y0ltOXdaVzVmWkdWc1lYbGZiVzlpYVd4bFhDSTZYQ0l3WENJc1hDSmxibUZpYkdWZmMyTnliMnhzWDNSdmNGOXRiMkpwYkdWY0lqcGNJbTltWmx3aUxGd2ljMk55YjJ4c1gzUnZjRjl0YjJKcGJHVmNJanBjSWpCY0lpeGNJbVZ1WVdKc1pWOXdZbDl3YjNOcGRHbHZibDl0YjJKcGJHVmNJanBjSW05bVpsd2lMRndpY0dKZmNHOXphWFJwYjI1ZmJXOWlhV3hsWENJNlhDSmpaVzUwWlhJdFkyVnVkR1Z5WENJc1hDSndZbDlpWjE5cGJXRm5aVjl3YjNOcGRHbHZibHdpT2x3aVkyVnVkR1Z5TFdObGJuUmxjbHdpTEZ3aWNHSmZZbWRmYVcxaFoyVmZjMmw2YVc1blhDSTZYQ0pqYjNabGNsd2lMRndpZG1sa1pXOWZkR2hsYldWZmRYSnNYQ0k2WENKY0lpeGNJbkJpWDIxcGJsOW9aV2xuYUhSY0lqcGNJbHdpTEZ3aWNHSmZabTl1ZEY5emFYcGxYQ0k2TVRNc1hDSndZbDltYjI1MFgzTnBlbVZmWm05eVgyMXZZbWxzWlZ3aU9qRXpMRndpY0dKZmRHbDBiR1ZmZEdWNGRGOXphR0ZrYjNkY0lqcGNJbkpuWW1Fb01qVTFMREkxTlN3eU5UVXNNQ2xjSWl4Y0ltVnVZV0pzWlY5d1lsOTBhWFJzWlY5MFpYaDBYM05vWVdSdmQxd2lPbHdpYjJabVhDSXNYQ0p3WWw5MGFYUnNaVjkwWlhoMFgzTm9ZV1J2ZDE5NFgyOW1abk5sZEZ3aU9qSXNYQ0p3WWw5MGFYUnNaVjkwWlhoMFgzTm9ZV1J2ZDE5NVgyOW1abk5sZEZ3aU9qSXNYQ0p3WWw5MGFYUnNaVjkwWlhoMFgzTm9ZV1J2ZDE5NlgyOW1abk5sZEZ3aU9qQXNYQ0pqY21WaGRHVmZaR0YwWlZ3aU9sd2lNakF5TXkweE1pMHlNeUF4TnpvMU5Eb3dOMXdpTEZ3aVkzSmxZWFJsWDJGMWRHaHZjbHdpT2pZc1hDSmhkWFJvYjNKY0lqcGNJbnRjWEZ3aWFXUmNYRndpT2x4Y1hDSTJYRnhjSWl4Y1hGd2libUZ0WlZ4Y1hDSTZYRnhjSWt0aGJXRnNJRkIxY205b2FYUmNYRndpZlZ3aUxGd2laVzVoWW14bFgyUnBjMjFwYzNOY0lqcGNJbTltWmx3aUxGd2laVzVoWW14bFgyUnBjMjFwYzNOZmRHVjRkRndpT2x3aVJHbHpiV2x6Y3lCaFpGd2lMRndpWlc1aFlteGxYMkp2ZUY5emFHRmtiM2RjSWpwY0ltOW1abHdpTEZ3aVltOTRYM05vWVdSdmQxOWpiMnh2Y2x3aU9sd2lJekF3TUZ3aUxGd2ljR0pmWW05NFgzTm9ZV1J2ZDE5NFgyOW1abk5sZEZ3aU9qQXNYQ0p3WWw5aWIzaGZjMmhoWkc5M1gzbGZiMlptYzJWMFhDSTZNQ3hjSW5CaVgySnZlRjl6YUdGa2IzZGZlbDl2Wm1aelpYUmNJam94TlN4Y0ltUnBjMkZpYkdWZmMyTnliMnhzWDI5dVgzQnZjSFZ3WENJNlhDSnZabVpjSWl4Y0ltUnBjMkZpYkdWZmMyTnliMnhzWDI5dVgzQnZjSFZ3WDIxdlltbHNaVndpT2x3aWIyWm1YQ0lzWENKemFHOTNYM05qY205c2JHSmhjbHdpT2x3aWIyWm1YQ0lzWENKb2FXUmxYMjl1WDNCalhDSTZYQ0p2Wm1aY0lpeGNJbWhwWkdWZmIyNWZkR0ZpYkdWMGMxd2lPbHdpYjJabVhDSXNYQ0p3WWw5aVoxOXBiV0ZuWlY5a2FYSmxZM1JwYjI1ZmIyNWZiVzlpYVd4bFhDSTZYQ0p2Ymx3aUxGd2lZMnh2YzJWZlluVjBkRzl1WDJOdmJHOXlYQ0k2WENJak1EQXdNREF3WENJc1hDSmpiRzl6WlY5aWRYUjBiMjVmYUc5MlpYSmZZMjlzYjNKY0lqcGNJaU13TURBd01EQmNJaXhjSW1Kc2RYSmxaRjl2ZG1WeWJHRjVYQ0k2WENKdlptWmNJaXhjSW1Kc2RYSmxaRjl2ZG1WeWJHRjVYMjF2WW1sc1pWd2lPbHdpYjJabVhDSXNYQ0p3WWw5aGRYUnZZMnh2YzJWZmJXOWlhV3hsWENJNlhDSXlNRndpTEZ3aVpXNWhZbXhsWDJGMWRHOWpiRzl6WlY5a1pXeGhlVjkwWlhoMFgyMXZZbWxzWlZ3aU9sd2liMlptWENJc1hDSmxibUZpYkdWZmIzWmxjbXhoZVY5MFpYaDBYMjF2WW1sc1pWd2lPbHdpYjJabVhDSXNYQ0p2ZG1WeWJHRjVYMjF2WW1sc1pWOXZjR0ZqYVhSNVhDSTZYQ0l3TGpWY0luMGlmWDA9IjsKICAgICAgICAgICAgICAgIA==
3 ms
js_composer.min.css
1109 ms
ays-pb-public-min.css
1108 ms
autoptimize_single_4706e3135214d1a3f6c28e98c40c0724.js
1181 ms
autoptimize_single_e318a11a341e18878bef8f164578620d.js
1178 ms
waypoints.min.js
1179 ms
jquery.counterup.min.js
1180 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgdmNEYXRhID0geyJjdXJyZW50VGhlbWUiOnsic2x1ZyI6ImNvZGV1cyJ9fTsKLyogXV0+ICovCg==
2 ms
javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgV3R3cCA9IHsiaXNfcnRsIjoiMCIsImlzX2F2YWRhIjoiMCIsImVsZW1lbnRvcl9wcmV2aWV3IjoiMCJ9OwovKiBdXT4gKi8K
1 ms
autoptimize_single_851c47fc5abcd7e2161d977751134d60.js
695 ms
autoptimize_single_2a86b19182c4835f84729e717da46e20.js
665 ms
autoptimize_single_424b17d13441eb32e3d15bc05587a55f.js
746 ms
autoptimize_single_3cc5ef14eaaca61a6ea6d88346815fb4.js
746 ms
autoptimize_single_f24cebe669e186ade92f2d45d3c6b5a9.js
743 ms
autoptimize_single_f52c49ae114a235470c85ee9d646de90.js
692 ms
autoptimize_single_a6f75e0c043a2a087837e5c113cc6f7a.js
694 ms
autoptimize_single_9ab54491c94eec9934a0c216d5da1af7.js
694 ms
autoptimize_single_8bf005dc2176ade3111d3c0580d01c6d.js
924 ms
effect.min.js
923 ms
effect-drop.min.js
923 ms
autoptimize_single_b0f7225166e217cfb64b80ae8ebbb604.js
879 ms
autoptimize_single_040bf1868af574af7fc2bae859610dab.js
829 ms
autoptimize_single_af7ed02ac7eac3e9e1cd14ae29eeea99.js
827 ms
core.min.js
845 ms
mouse.min.js
847 ms
autoptimize_single_4cc86d1003c45134d6838f13e3885db1.js
807 ms
accordion.min.js
748 ms
tabs.min.js
747 ms
autoptimize_single_33d5ff722c9b3ddb4486c133016ab472.js
746 ms
autoptimize_single_1ba5692a9fe6c99d02edd2688c0e09fc.js
992 ms
autoptimize_single_258563e00b2f3bb98409631d92a38751.js
964 ms
autoptimize_single_1ca5db7aeac7cd26af34ae43a450933b.js
900 ms
autoptimize_single_3d5064ca735e8c3d2e92e0c6d44bd483.js
896 ms
new-xcellence-it-logo-trans-white.png
595 ms
Clutch-logo-1.png
594 ms
autoptimize_single_62b52cba8536db483b929f2c56a0bbbb.js
874 ms
autoptimize_single_9181872e3845c9a1fd985b7539862a1d.js
824 ms
autoptimize_single_9b739897720739cd52667b0fd2a70bc5.js
748 ms
autoptimize_single_118a76da3eeeedc0bc87d3c0046562ad.js
746 ms
jquery.mixitup.min.js
745 ms
autoptimize_single_19586836993022fb4aff2d0c43fe8198.js
749 ms
autoptimize_single_0fa8f767d730a25c3e2cf87c45cab216.js
745 ms
autoptimize_single_fbddb6fd0a844b1f6c0dd31b86bef22e.js
741 ms
memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4n.ttf
30 ms
JxQ71MksYHo
110 ms
autoptimize_single_500aec971194d4f8020bd73d66e9f221.js
725 ms
autoptimize_single_b3135d733183ca619834e041b50fece4.js
725 ms
js_composer_front.min.js
730 ms
slick.min.js
732 ms
autoptimize_single_b34a65c604b6bc51b7919bb05e0a79ae.js
731 ms
Inter-Regular.woff
1006 ms
www-player.css
30 ms
www-embed-player.js
65 ms
base.js
91 ms
Inter-Medium.woff
912 ms
Inter-Light.woff
912 ms
Inter-ExtraLight.woff
912 ms
Inter-Thin.woff
899 ms
Inter-SemiBold.woff
875 ms
ad_status.js
182 ms
Inter-Bold.woff
925 ms
PCB6LhBCgIpAtjPehFvJcG4Uia83bFWOnyKq98phr4c.js
338 ms
embed.js
43 ms
Clutch-logo-1.png
301 ms
new-xcellence-it-logo-trans-white.png
557 ms
Inter-ExtraBold.woff
995 ms
Inter-Black.woff
995 ms
fontawesome-webfont.woff
806 ms
fontawesome-webfont.woff
792 ms
aileron-ultralight-webfont.woff
784 ms
Codeus.ttf
973 ms
Codeus-Icons.ttf
975 ms
logo.png
973 ms
slider_background_1.jpg
974 ms
stars-parallax-2.png
974 ms
KFOmCnqEu92Fr1Mu4mxP.ttf
240 ms
KFOlCnqEu92Fr1MmEU9fBBc9.ttf
255 ms
id
236 ms
mautic-form.js
503 ms
default
342 ms
wp-emoji-release.min.js
721 ms
star-big-parallax1-2.png
722 ms
globe-1348777_1920.png
810 ms
slider_background_6-2.jpg
723 ms
screen_shadow-2.png
717 ms
Create
335 ms
screen_1-2.png
799 ms
screen_2-2.png
798 ms
corner_dark-2.png
798 ms
corner_dark_2-2.png
797 ms
slider_background_2.jpg
797 ms
nopAcce-plus-pro.png
835 ms
cursor-2.png
825 ms
slider_background_3.jpg
790 ms
Slide5_El2-2.png
780 ms
Slide5_El1-2.png
779 ms
Slide5_El4-2.png
823 ms
Slide5_El5-2.png
727 ms
Slide5_El3-2.png
717 ms
Slide5_El6-2.png
673 ms
Slide5_El7-2.png
602 ms
Slide5_El8-2.png
600 ms
Slide5_El9-2.png
645 ms
Slide5_El10-2.png
701 ms
slider_background_7-2.jpg
701 ms
tablet_mockup-2.png
630 ms
phone_shadow-2.png
518 ms
phone_mockup-2.png
521 ms
corner_light_2-2.png
559 ms
corner_light_1-2.png
617 ms
web-development.jpg
434 ms
ecommerce-development.jpg
436 ms
solr-search.jpg
435 ms
software-development.jpg
433 ms
1507894459-allo-370x210.png
467 ms
1512456917-blood-370x210.png
528 ms
1507893974-brazil-play-370x210.png
530 ms
1507888885-callhipoo-1-370x210.png
532 ms
1507899206-clock24-370x210.png
531 ms
1507900250-ecd-370x210.png
530 ms
1507898419-music-player-370x210.png
529 ms
GenerateIT
33 ms
1507897888-i-vocab-370x210.png
541 ms
1507978279-mos-370x210.png
543 ms
1507899489-KC-370x210.png
546 ms
1507891882-navigato-370x210.png
547 ms
1512456982-p-editor-370x210.png
544 ms
1507898716-skychain-370x210.png
568 ms
1507897697-snappy-pic-370x210.png
607 ms
1507896273-zoo-voice-370x210.png
604 ms
www.leadshine-america.com-2-370x210.png
607 ms
debonairs-370x210.jpg
605 ms
furniture_mart-370x210.jpg
605 ms
herry-370x210.jpg
584 ms
tierarzt-370x210.jpg
609 ms
giskaa-370x210.jpg
607 ms
lumi_vision-370x210.jpg
608 ms
house_labels-370x210.jpg
611 ms
bins_n_pallets-370x210.jpg
608 ms
quilled_creations-370x210.jpg
583 ms
fill2ship-370x210.jpg
611 ms
the_jewels_of_happiness-370x210.jpg
609 ms
wordpress-development-dynamic-real-estate-website-1-370x210.jpg
610 ms
online-hotel-portal-development-in-asp-net-1-370x210.jpg
610 ms
apnishakti-full-featured-cms-news-portal-1-370x210.jpg
610 ms
qln-web-design-company-2-370x210.jpg
584 ms
main-370x210.jpg
609 ms
main-1-370x210.jpg
606 ms
main-2-370x210.jpg
607 ms
main-3-370x210.jpg
606 ms
main-4-370x210.jpg
608 ms
main-5-370x210.jpg
582 ms
main-6-370x210.jpg
610 ms
main-7-370x210.jpg
607 ms
main-8-370x210.jpg
606 ms
main-9-370x210.jpg
607 ms
main-10-370x210.jpg
605 ms
main-11-370x210.jpg
580 ms
main-12-370x210.jpg
610 ms
web-development-asp-dot-net-shopping-cart-e-commerce-1-370x210.jpg
611 ms
loyal-rewards-72x72.jpg
610 ms
computer-mistakes-72x72.jpg
607 ms
preloader.gif
608 ms
0061113-145x54.png
583 ms
logo-170x26.jpg
607 ms
logo-1-179x59.png
610 ms
0002139-200x62.png
603 ms
logo-1-1-147x72.png
607 ms
logo-2-200x47.png
608 ms
logo-3-200x27.png
588 ms
logo-4-155x107.png
606 ms
fill2ship-logo-200x59.png
603 ms
trapletshop-150x50.png
611 ms
biw_worldwide-150x50.png
607 ms
bukayadan-150x50.png
607 ms
magnetize-150x50.png
591 ms
aquelascoisas-150x50.png
597 ms
duvivier.lu_-150x50.png
614 ms
cardandpockect-150x50.png
613 ms
orthosynetics-150x50.png
614 ms
craftattitude-150x50.png
613 ms
atma_it-150x50.png
600 ms
dermake.com_.br_-150x50.png
594 ms
gun-world-150x50.png
604 ms
genelec-150x50.png
606 ms
gerdmans-200x65.png
608 ms
iscream-logo-150x50.png
606 ms
monster-threads-logo-150x50.png
621 ms
orthocanada-150x50.png
597 ms
shopdemo.ap-logic-150x50.png
603 ms
xdalys-150x50.png
605 ms
ZFI-Bullet-150x50.png
605 ms
location.svg
606 ms
call.svg
606 ms
email.svg
591 ms
fb-icon.svg
599 ms
insta-icon.svg
613 ms
linkedin-icon.svg
614 ms
twitter-icon.svg
613 ms
background-boxes.svg
615 ms
footer-btn-cartoon.svg
629 ms
footer-btn-arrow.svg
602 ms
contact-phone.svg
604 ms
contact-mail.svg
606 ms
arrow-left.png
607 ms
ajax-loader.gif
607 ms
arrow-right.png
604 ms
log_event
23 ms
twk-arr-find-polyfill.js
132 ms
twk-object-values-polyfill.js
176 ms
twk-event-polyfill.js
174 ms
twk-entries-polyfill.js
160 ms
twk-iterator-polyfill.js
173 ms
twk-promise-polyfill.js
86 ms
twk-main.js
100 ms
twk-vendor.js
118 ms
twk-chunk-vendors.js
132 ms
twk-chunk-common.js
158 ms
twk-runtime.js
147 ms
twk-app.js
170 ms
old.xcellence-it.com accessibility score
ARIA
These are opportunities to improve the usage of ARIA in your application which may enhance the experience for users of assistive technology, like a screen reader.
Impact
Issue
[aria-*] attributes do not match their roles
[aria-hidden="true"] elements contain focusable descendents
ARIA input fields do not have accessible names
Elements with an ARIA [role] that require children to contain a specific [role] are missing some or all of those required children.
Contrast
These are opportunities to improve the legibility of your content.
Impact
Issue
Background and foreground colors do not have a sufficient contrast ratio.
Navigation
These are opportunities to improve keyboard navigation in your application.
Impact
Issue
Heading elements are not in a sequentially-descending order
Names and labels
These are opportunities to improve the semantics of the controls in your application. This may enhance the experience for users of assistive technology, like a screen reader.
Impact
Issue
Links do not have a discernible name
old.xcellence-it.com best practices score
Trust and Safety
Impact
Issue
Does not use HTTPS
Ensure CSP is effective against XSS attacks
User Experience
Impact
Issue
Displays images with incorrect aspect ratio
General
Impact
Issue
Detected JavaScript libraries
Browser errors were logged to the console
Page has valid source maps
old.xcellence-it.com SEO score
Crawling and Indexing
To appear in search results, crawlers need access to your app.
Impact
Issue
Links are not crawlable
Mobile Friendly
Make sure your pages are mobile friendly so users don’t have to pinch or zoom in order to read the content pages. [Learn more](https://developers.google.com/search/mobile-sites/).
Impact
Issue
Document uses legible font sizes
Tap targets are not sized appropriately
EN
EN
UTF-8
Language claimed in HTML meta tag should match the language actually used on the web page. Otherwise Old.xcellence-it.com can be misinterpreted by Google and other search engines. Our service has detected that English is used on the page, and it matches the claimed language. Our system also found out that Old.xcellence-it.com main page’s claimed encoding is utf-8. Use of this encoding format is the best practice as the main page visitors from all over the world won’t have any issues with symbol transcription.
old.xcellence-it.com
Open Graph data is detected on the main page of Old Xcellence It. This is the best way to make the web page social media friendly. Here is how it looks like on Facebook: