{"report_id":"e9494231-95b8-46bb-b82e-3bc48852b222","version":0,"status":"done","tags":[],"date":"2026-07-27T14:05:32Z","url":{"schema":"http","addr":"conversemy.today","fqdn":"conversemy.today","domain":"conversemy.today","tld":"today"},"ip":{"addr":"104.21.59.254","port":0,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"final":{"url":{"schema":"https","addr":"conversemy.today/h5/","fqdn":"conversemy.today","domain":"conversemy.today","tld":"today"},"title":"TikTok Shop","dom":{"size":742,"mime_type":"text/html; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (466)","md5":"c407975dc581cd2c6374220d24fec96a","sha1":"cbc51271253cbef7ca3114eb17dc500f5de8c0a5","sha256":"d97847c2489da9df1e8c70ee605a6f2b078d84aec492ed7b5cb58808d253e6ae","sha512":"d5a018e21ccdd094204e6826a0612db58bbb11debf64f02ae7077f791a19c1e36761c4bfde963ae5504b6dbe9402f662c3ebb42773a8630a942c8574bca31756","ssdeep":"","tlshash":"78019cc390b1691c0210856560dad10f5ba91879aec29c717cdc67adceb9f8ac9af854","dom_hash":"domhash3a3a2eeb0a96c8bcbd49fa338af214c9","first_seen":"","last_seen":"","times_seen":0,"resource_available":false,"data":null}},"submit":{"url":{"schema":"http","addr":"conversemy.today","fqdn":"conversemy.today","domain":"conversemy.today","tld":"today"},"ip":{"addr":"104.21.59.254","port":0,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-31T14:05:32Z","useragent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0","referer":"","cookies":null,"exit_node":"qguvgzjxzsgb3vs"},"stats":{"alert_count":{"ids":0,"urlquery":0,"analyzer":5}},"detection":{"ids":null,"analyzer":[{"sensor_name":"ultradns","sensor_type":"DNS","title":"DigiCert UltraDNS","description":"DigiCert UltraDNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://vercara.digicert.com/ultra-dns-public","meta":null},{"sensor_name":"cira_dns","sensor_type":"DNS","title":"CIRA Canadian Shield DNS","description":"CIRA Canadian Shield DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cira.ca/en/canadian-shield/","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2026-07-27","alert":"Phishing Block","trigger":"conversemy.today","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null}],"urlquery":null},"summary":[{"fqdn":"conversemy.today","ip":{"addr":"172.67.186.159","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2025-09-27","domain_rank":0,"first_seen":"2026-07-27T12:53:48.608649Z","last_seen":"2026-07-27T12:53:48.60865Z","alert_count":30,"request_count":6,"received_data":1142439,"sent_data":3205,"comment":"","tags":null,"fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}]},{"fqdn":"unpkg.byted-static.com","ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"domain_registered":"2021-01-11","domain_rank":826022,"first_seen":"2021-06-02T20:55:34Z","last_seen":"2026-07-27T09:40:29.276549Z","alert_count":0,"request_count":1,"received_data":0,"sent_data":501,"comment":"","tags":null,"fingerprints":null}],"files":null,"artifacts":{"windows_shortcuts":null,"files":null,"telegram":null,"pdfs":null,"clipboard":null},"sensors":{"ids":null,"analyzer":null,"urlquery":null},"javascript":{"script":[{"url":{"schema":"https","addr":"conversemy.today/h5/","fqdn":"conversemy.today","domain":"conversemy.today","tld":"today"},"ip":{"addr":"172.67.186.159","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"93368157fb131b56a45d6f60f8b40342","sha1":"ea2a25edb7b00c3e0a06650f02fded5bd87dfa20","sha256":"c48d4859bc082aa591168f7d7230bef438ecc2b3074e707c83864e11ec1a891f","sha512":"366c90d022f7fd6718d76460de51a154cf6cf8bf8e3aefa2e0e736cbba24ec53506485331abd3c3c2a7e6ae00c9a3b957a9aa675ecdd389afca7863ad8365908","ssdeep":"","tlshash":"c8e068c260a6294c02208016304ac1031bb608729ec149613c4c67a58fb9f4bc46e859","size":352,"data":"","first_seen":"2023-03-07T01:10:06Z","last_seen":"2026-07-27T15:43:28.651916Z","times_seen":4633,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":null},"http":[{"url":{"schema":"https","addr":"conversemy.today/h5/js/index.d318dcb07cf938391b1b.js","fqdn":"conversemy.today","domain":"conversemy.today","tld":"today"},"ip":{"addr":"172.67.186.159","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://conversemy.today/h5/","date":"2026-07-27T14:04:58.129Z","timestamp":1785161098129,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"conversemy.today","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Wed, 03 Jun 2026 13:05:53 GMT","end":"Tue, 01 Sep 2026 14:04:34 GMT"},"fingerprint":{"sha1":"DA:07:CF:C0:8B:27:11:C8:01:8C:18:C7:9A:48:45:36:4D:57:CB:22","sha256":"60:34:7C:18:C1:93:C0:94:5E:DB:6D:FA:42:1F:5A:C2:1B:A1:BB:ED:FF:58:B3:04:61:FB:A1:74:11:43:EB:02"}}},"request":{"raw":"GET /h5/js/index.d318dcb07cf938391b1b.js HTTP/1.1\r\nHost: conversemy.today\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://conversemy.today/h5/\r\nCookie: think_lang=en-us; PHPSESSID=471a1719effa18edc02fec5b29d1e4e3\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\nserver: cloudflare\r\ndate: Mon, 27 Jul 2026 14:04:58 GMT\r\ncontent-type: application/javascript\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding, Accept-Encoding\r\nlast-modified: Sat, 31 Jan 2026 19:17:17 GMT\r\netag: W/\"697e553d-2e2ca\"\r\nstrict-transport-security: max-age=31536000\r\ncache-control: no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0\r\npragma: no-cache\r\nexpires: 0\r\ncontent-encoding: gzip\r\ncf-cache-status: BYPASS\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=A5i7bfkS23Wd9VLUmt2HbqLkgdnm%2F8u%2FxWt9xKuC1UFSfA3Gjtep%2F9LkOx541WXNPfcaklcBH7gdSxccmVeAWxi0raLPw94xF%2FZ75jNusz%2FDv01fnWKIlp5g146Aw1p5ChZx\"}]}\r\ncf-ray: a21c323f5eba723c-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":189130,"size_decoded":48092,"mime_type":"application/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (63366), with no line terminators","md5":"d5d98fdb08b915b3477641c35010a7ef","sha1":"e04b70a04b210cd9e89e2aa5f067773783f1dd67","sha256":"c6ffec45531a664e0c873739d13840e432c9a1e200de78a2cb6bddfd82d4379c","sha512":"d4df71645e6c585fde48aae955aa6c3ea17011226d40efafe17615ad3498b61bb31b3a548b4768cc6ac722a08e08208a2fcae4d482907a648c85fb0159f30367","ssdeep":"3072:TTHpSiF8cXtEYPB17lMDyFDTWDNJUI8hnIk:ciF8cXtthK85Z","tlshash":"8204d482fac5206e8a865f85d06f3bfcf67b1c724246e8c3d590bf795f8a883521561c","first_seen":"2025-11-29T15:08:30.885204Z","last_seen":"2026-07-27T14:05:33.336092Z","times_seen":8,"resource_available":true,"data":"KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciBhLG8scz1lWzBdLHA9ZVsxXSx1PWVbMl0sZD0wLGc9W107ZDxzLmxlbmd0aDtkKyspbz1zW2RdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLG8pJiZpW29dJiZnLnB1c2goaVtvXVswXSksaVtvXT0wO2ZvcihhIGluIHApT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHAsYSkmJih0W2FdPXBbYV0pO20mJm0oZSk7d2hpbGUoZy5sZW5ndGgpZy5zaGlmdCgpKCk7cmV0dXJuIHIucHVzaC5hcHBseShyLHV8fFtdKSxuKCl9ZnVuY3Rpb24gbigpe2Zvcih2YXIgdCxlPTA7ZTxyLmxlbmd0aDtlKyspe2Zvcih2YXIgbj1yW2VdLGE9ITAsbz0xO288bi5sZW5ndGg7bysrKXt2YXIgcD1uW29dOzAhPT1pW3BdJiYoYT0hMSl9YSYmKHIuc3BsaWNlKGUtLSwxKSx0PXMocy5zPW5bMF0pKX1yZXR1cm4gdH12YXIgYT17fSxpPXtpbmRleDowfSxyPVtdO2Z1bmN0aW9uIG8odCl7cmV0dXJuIHMucCsianMvIisoeyJwYWdlcy1hY2NvdW50LWFib3V0IjoicGFnZXMtYWNjb3VudC1hYm91dCIsInBhZ2VzLWFjY291bnQtYmlsbHN+cGFnZXMtYWNjb3VudC1pbmRleH5wYWdlcy1hY2NvdW50LW1lc3NhZ2V+cGFnZXMtYWNjb3VudC1wYXNzd29yZH5wYWdlcy1hY2NvdW50LXB+ZGQ2NzBlNjAiOiJwYWdlcy1hY2NvdW50LWJpbGxzfnBhZ2VzLWFjY291bnQtaW5kZXh+cGFnZXMtYWNjb3VudC1tZXNzYWdlfnBhZ2VzLWFjY291bnQtcGFzc3dvcmR+cGFnZXMtYWNjb3VudC1wfmRkNjcwZTYwIiwicGFnZXMtYWNjb3VudC1iaWxsc35wYWdlcy1yZWNvcmRzLWluZGV4IjoicGFnZXMtYWNjb3VudC1iaWxsc35wYWdlcy1yZWNvcmRzLWluZGV4IiwicGFnZXMtYWNjb3VudC1iaWxscyI6InBhZ2VzLWFjY291bnQtYmlsbHMiLCJwYWdlcy1yZWNvcmRzLWluZGV4fnBhZ2VzLXN0YXJ0aW5nLWluZGV4IjoicGFnZXMtcmVjb3Jkcy1pbmRleH5wYWdlcy1zdGFydGluZy1pbmRleCIsInBhZ2VzLXJlY29yZHMtaW5kZXgiOiJwYWdlcy1yZWNvcmRzLWluZGV4IiwicGFnZXMtYWNjb3VudC1pbmRleCI6InBhZ2VzLWFjY291bnQtaW5kZXgiLCJwYWdlcy1hY2NvdW50LW1lc3NhZ2UiOiJwYWdlcy1hY2NvdW50LW1lc3NhZ2UiLCJwYWdlcy1hY2NvdW50LXBhc3N3b3JkfnBhZ2VzLWFjY291bnQtcGF5bWVudH5wYWdlcy1hY2NvdW50LXJlY2hhcmdlfnBhZ2VzLWFjY291bnQtd2FsbGV0fnBhZ2VzLWFjY291fjc0MWQ3ZjY5IjoicGFnZXMtYWNjb3VudC1wYXNzd29yZH5wYWdlcy1hY2NvdW50LXBheW1lbnR+cGFnZXMtYWNjb3VudC1yZWNoYXJnZX5wYWdlcy1hY2NvdW50LXdhbGxldH5wYWdlcy1hY2NvdX43NDFkN2Y2OSIsInBhZ2VzLWFjY291bnQtcGFzc3dvcmQiOiJwYWdlcy1hY2NvdW50LXBhc3N3b3JkIiwicGFnZXMtYWNjb3VudC1wYXltZW50IjoicGFnZXMtYWNjb3VudC1wYXltZW50IiwicGFnZXMtYWNjb3VudC1yZWNoYXJnZSI6InBhZ2VzLWFjY291bnQtcmVjaGFyZ2UiLCJwYWdlcy1hY2NvdW50LXdhbGxldCI6InBhZ2VzLWFjY291bnQtd2FsbGV0IiwicGFnZXMtYWNjb3VudC13aXRoZHJhdyI6InBhZ2VzLWFjY291bnQtd2l0aGRyYXciLCJwYWdlcy1kZXRhaWxzWS1pbmRleH5wYWdlcy1ob21lLWluZGV4fnBhZ2VzLXBlcmtoaWRtYXRhLXBlcmtoaWRtYXRhfnBhZ2VzLXN0YXJ0LXN0YXJ0fnBhZ2VzLXVzZXItdXNlciI6InBhZ2VzLWRldGFpbHNZLWluZGV4fnBhZ2VzLWhvbWUtaW5kZXh+cGFnZXMtcGVya2hpZG1hdGEtcGVya2hpZG1hdGF+cGFnZXMtc3RhcnQtc3RhcnR+cGFnZXMtdXNlci11c2VyIiwicGFnZXMtZGV0YWlsc1ktaW5kZXgiOiJwYWdlcy1kZXRhaWxzWS1pbmRleCIsInBhZ2VzLXN0YXJ0aW5nLWluZGV4IjoicGFnZXMtc3RhcnRpbmctaW5kZXgiLCJwYWdlcy1hY2NvdW50LXJ1bGUiOiJwYWdlcy1hY2NvdW50LXJ1bGUiLCJwYWdlcy1ob21lLWluZGV4IjoicGFnZXMtaG9tZS1pbmRleCIsInBhZ2VzLXBlcmtoaWRtYXRhLXBlcmtoaWRtYXRhIjoicGFnZXMtcGVya2hpZG1hdGEtcGVya2hpZG1hdGEiLCJwYWdlcy1zdGFydC1zdGFydCI6InBhZ2VzLXN0YXJ0LXN0YXJ0IiwicGFnZXMtdXNlci11c2VyIjoicGFnZXMtdXNlci11c2VyIiwicGFnZXMtZXhjaGFuZ2UtZXhjaGFuZ2UiOiJwYWdlcy1leGNoYW5nZS1leGNoYW5nZSIsInBhZ2VzLWxvZ2luLWluZGV4IjoicGFnZXMtbG9naW4taW5kZXgiLCJwYWdlcy1sb2dpbi1yZWdpc3RlciI6InBhZ2VzLWxvZ2luLXJlZ2lzdGVyIiwicGFnZXMtcGFzc3dvcmQtbG9naW4iOiJwYWdlcy1wYXNzd29yZC1sb2dpbiIsInBhZ2VzLXBhc3N3b3JkLXBheW1lbnQiOiJwYWdlcy1wYXNzd29yZC1wYXltZW50IiwicGFnZXMtcGxhdGZvcm0tcGxhdGZvcm0iOiJwYWdlcy1wbGF0Zm9ybS1wbGF0Zm9ybSIsInBhZ2VzLXJlY29yZC1yZWNvcmQiOiJwYWdlcy1yZWNvcmQtcmVjb3JkIiwicGFnZXMtcnVsZXMtcnVsZXMiOiJwYWdlcy1ydWxlcy1ydWxlcyIsInBhZ2VzLXNlcnZpY2UtaW5kZXgiOiJwYWdlcy1zZXJ2aWNlLWluZGV4IiwicGFnZXMtc2V0dGluZ3Mtc2V0dGluZ3MiOiJwYWdlcy1zZXR0aW5ncy1zZXR0aW5ncyIsInBhZ2VzLXNldHRsZW1lbnQtc2V0dGxlbWVudCI6InBhZ2VzLXNldHRsZW1lbnQtc2V0dGxlbWVudCJ9W3RdfHx0KSsiLmQzMThkY2IwN2NmOTM4MzkxYjFiLmpzIn1mdW5jdGlvbiBzKGUpe2lmKGFbZV0pcmV0dXJuIGFbZV0uZXhwb3J0czt2YXIgbj1hW2VdPXtpOmUsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gdFtlXS5jYWxsKG4uZXhwb3J0cyxuLG4uZXhwb3J0cyxzKSxuLmw9ITAsbi5leHBvcnRzfXMuZT1mdW5jdGlvbih0KXt2YXIgZT1bXSxuPWlbdF07aWYoMCE9PW4paWYobillLnB1c2goblsyXSk7ZWxzZXt2YXIgYT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxhKXtuPWlbdF09W2UsYV19KSk7ZS5wdXNoKG5bMl09YSk7dmFyIHIscD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtwLmNoYXJzZXQ9InV0Zi04IixwLnRpbWVvdXQ9MTIwLHMubmMmJnAuc2V0QXR0cmlidXRlKCJub25jZSIscy5uYykscC5zcmM9byh0KTt2YXIgdT1uZXcgRXJyb3I7cj1mdW5jdGlvbihlKXtwLm9uZXJyb3I9cC5vbmxvYWQ9bnVsbCxjbGVhclRpbWVvdXQoZCk7dmFyIG49aVt0XTtpZigwIT09bil7aWYobil7dmFyIGE9ZSYmKCJsb2FkIj09PWUudHlwZT8ibWlzc2luZyI6ZS50eXBlKSxyPWUmJmUudGFyZ2V0JiZlLnRhcmdldC5zcmM7dS5tZXNzYWdlPSJMb2FkaW5nIGNodW5rICIrdCsiIGZhaWxlZC5cbigiK2ErIjogIityKyIpIix1Lm5hbWU9IkNodW5rTG9hZEVycm9yIix1LnR5cGU9YSx1LnJlcXVlc3Q9cixuWzFdKHUpfWlbdF09dm9pZCAwfX07dmFyIGQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyKHt0eXBlOiJ0aW1lb3V0Iix0YXJnZXQ6cH0pfSksMTJlNCk7cC5vbmVycm9yPXAub25sb2FkPXIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChwKX1yZXR1cm4gUHJvbWlzZS5hbGwoZSl9LHMubT10LHMuYz1hLHMuZD1mdW5jdGlvbih0LGUsbil7cy5vKHQsZSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse2VudW1lcmFibGU6ITAsZ2V0Om59KX0scy5yPWZ1bmN0aW9uKHQpeyJ1bmRlZmluZWQiIT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxzLnQ9ZnVuY3Rpb24odCxlKXtpZigxJmUmJih0PXModCkpLDgmZSlyZXR1cm4gdDtpZig0JmUmJiJvYmplY3QiPT09dHlwZW9mIHQmJnQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHMucihuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pLDImZSYmInN0cmluZyIhPXR5cGVvZiB0KWZvcih2YXIgYSBpbiB0KXMuZChuLGEsZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19LmJpbmQobnVsbCxhKSk7cmV0dXJuIG59LHMubj1mdW5jdGlvbih0KXt2YXIgZT10JiZ0Ll9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gdFsiZGVmYXVsdCJdfTpmdW5jdGlvbigpe3JldHVybiB0fTtyZXR1cm4gcy5kKGUsImEiLGUpLGV9LHMubz1mdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKX0scy5wPSIvaDUvIixzLm9lPWZ1bmN0aW9uKHQpe3Rocm93IGNvbnNvbGUuZXJyb3IodCksdH07dmFyIHA9d2luZG93WyJ3ZWJwYWNrSnNvbnAiXT13aW5kb3dbIndlYnBhY2tKc29ucCJdfHxbXSx1PXAucHVzaC5iaW5kKHApO3AucHVzaD1lLHA9cC5zbGljZSgpO2Zvcih2YXIgZD0wO2Q8cC5sZW5ndGg7ZCsrKWUocFtkXSk7dmFyIG09dTtyLnB1c2goWzAsImNodW5rLXZlbmRvcnMiXSksbigpfSkoezA6ZnVuY3Rpb24odCxlLG4pe3QuZXhwb3J0cz1uKCI1NmQ3Iil9LCIxZTdlIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oIjdhODIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXZvaWQgMDtlLmRlZmF1bHQ9e25hdjpbIkFjY3VlaWwiLCJFbnJlZ2lzdHJlbWVudHMiLCJEw6ltYXJyYWdlIiwiU2VydmljZSIsIkNvbXB0ZSJdLHJlY29yZHNfbmF2OlsiVG91cyIsIlNvdW1pc3Npb24iLCJUZXJtaW7DqSIsIkZyb3plbiJdLGJpbGxzX25hdjpbIlRvdXMiLCJSZXZlbnVzIiwiRMOpcGVuc2VzIl0sIkJhbmsuYWNjb3VudCI6IkNvbXB0ZSIsIkJhbmsuZW50ZXIuYWNjb3VudCI6IlZldWlsbGV6IHNhaXNpciBsZSBjb21wdGUiLCJCYW5rLnVzZXJuYW1lIjoiTm9tIGQndXRpbGlzYXRldXIiLCJCYW5rLmVudGVyLnVzZXJuYW1lIjoiVmV1aWxsZXogc2Fpc2lyIGxlIG5vbSBkJ3V0aWxpc2F0ZXVyIiwiQmFuay50eXBlIjoiVHlwZSBkZSBwaG90byIsIkJhbmsuZW50ZXIudHlwZSI6IlZldWlsbGV6IHPDqWxlY3Rpb25uZXIgbGUgdHlwZSBkZSBwaG90byIsIkJhbmsuY3BmIjoiQ3BmIiwiQmFuay5lbnRlci5jcGYiOiJWZXVpbGxleiBzYWlzaXIgbGUgY3BmIiwiQmFuay5zdWJtaXQiOiJDb25maXJtZXIiLCJCYW5rLmJpbmQuYmFuayI6IlZldWlsbGV6IGxpZXIgdm90cmUgYmFucXVlIiwiQ29tbW9uLmxvYWRpbmciOiJDaGFyZ2VtZW50Li4uIiwiQ29tbW9uLm5vX2RhdGEiOiJBdWN1biBlbnJlZ2lzdHJlbWVudCIsIkNvbW1vbi5jb3B5IjoiQ29waWUiLCJDb21tb24uc2lnbiI6IlNpZ25lIiwiQ29tbW9uLmNyZWRpdF9zY29yZSI6IlNjb3JlIGRlIGNyw6lkaXQiLCJJbmRleC5jb21tb2RpdGllcyI6Ik1hdGnDqHJlcyBwcmVtacOocmVzIiwiSW5kZXguYWJvdXQiOiLDgCBwcm9wb3MgZGUgbm91cyIsIkluZGV4LmNvbXBhbnkiOiJFbnRyZXByaXNlIGRlIG1hcmtldGluZyBkZSBjcm9pc3NhbmNlIiwiSW5kZXguaW50cm9kdWN0aW9uIjoiQ2xpcXVleiBwb3VyIHZvaXIgbCdpbnRyb2R1Y3Rpb24iLCJJbmRleC5jb21taXNzaW9uIjoiQ29tbWlzc2lvbiIsIkluZGV4LmdldCI6Ik9idGVuZXogdW5lIGNvbW1pc3Npb24iLCJPcmRlci50b3RhbF92YWx1ZSI6IlZhbGV1ciB0b3RhbGUiLCJPcmRlci5jb21taXNzaW9uIjoiQ29tbWlzc2lvbiIsIk9yZGVyLnN1Ym1pdCI6IlNvdW1ldHRyZSIsIk9yZGVyLnRpbWUiOiJUZW1wcyBkZSBjb21tYW5kZSIsIk9yZGVyLm51bWJlciI6Ik51bcOpcm8gZGUgY29tbWFuZGUiLCJPcmRlci50b3RhbCI6IlRvdGFsIGRlIGxhIGNvbW1hbmRlIiwiT3JkZXIuZXhwZWN0ZWQiOiJSZXRvdXIgYXR0ZW5kdSIsIlJlY2hhcmdlLmJhbGFuY2UiOiLDiXF1aWxpYnJlIiwiUmVjaGFyZ2UuYWRkcmVzcyI6IkFkcmVzc2UgZGUgcmVjaGFyZ2UiLCJSZWNoYXJnZS5hbW91bnQiOiJNb250YW50IGRlIGxhIHJlY2hhcmdlIiwiUmVjaGFyZ2UuZW50ZXIuYW1vdW50IjoiVmV1aWxsZXogc2Fpc2lyIGxlIG1vbnRhbnQgZGUgbGEgcmVjaGFyZ2UiLCJSZWNoYXJnZS51cGxvYWQiOiJUw6lsw6ljaGFyZ2VyIGxhIGNhcHR1cmUgZCfDqWNyYW4gZHUgcGFpZW1lbnQiLCJSZWNoYXJnZS5wbGVhc2UiOiJWZXVpbGxleiB0w6lsw6ljaGFyZ2VyIHVuZSBjYXB0dXJlIGQnw6ljcmFuIGR1IHBhaWVtZW50IiwiUmVjaGFyZ2UudXBsb2FkMSI6IlTDqWzDqWNoYXJnZXIiLCJSZWNoYXJnZS5zdWJtaXQiOiJKJ2FpIHRlcm1pbsOpIGxhIHJlY2hhcmdlIiwiUmVjaGFyZ2UudGlwcyI6IkNvbnNlaWxzIiwiUmVjaGFyZ2UudGlwczEiOiIxLiBWZXVpbGxleiBjb3BpZXIgbCdhZHJlc3NlIGR1IHBvcnRlZmV1aWxsZSBUUkMtMjAgcG91ciBsZSBwYWllbWVudCBkYW5zIGNlIGNlbnRyZSBjb21tZXJjaWFsLiIsIlJlY2hhcmdlLnRpcHMyIjoiMi4gRWZmZWN0dWV6IGxlIHRyYW5zZmVydCBhcHLDqHMgdsOpcmlmaWNhdGlvbi4gU2kgamUgZmFpcyB1bmUgZXJyZXVyLCBjZSBjZW50cmUgY29tbWVyY2lhbCBuZSBzdXBwb3J0ZXJhIHBhcyB2b3RyZSBwZXJ0ZS4iLCJSZWNoYXJnZS50aXBzMyI6IjMuIFVuZSBmb2lzIHZvdHJlIHBhaWVtZW50IHLDqXVzc2ksIHZldWlsbGV6IHTDqWzDqWNoYXJnZXIgbGUgYm9uIGRlIHBhaWVtZW50LiIsIlJlY2hhcmdlLnRpcHM0IjoiNC4gTG9yc3F1ZSB2b3VzIGF2ZXogdGVybWluw6ksIGNsaXF1ZXogc3VyIDogSidhaSBlZmZlY3R1w6kgbGUgcGFpZW1lbnQuIiwiUmVjaGFyZ2UudGlwczUiOiI1LiBMb3JzcXVlIHZvdXMgcmVuY29udHJleiBkZXMgcHJvYmzDqG1lcywgYXNzdXJlei12b3VzIGRlIGNvbnRhY3RlciBub3RyZSBzZXJ2aWNlIGNsaWVudCBlbiBsaWduZSDDoCB0ZW1wcyBwb3VyIHZvdXMgYWlkZXIgw6AgbGVzIHLDqXNvdWRyZS4iLCJSZWNoYXJnZS5zZWxlY3QiOiJTw6lsZWN0aW9uIGRlIGxhIG3DqXRob2RlIGRlIHJlY2hhcmdlIiwiV2l0aGRyYXcuYmluZC5hZGRyZXNzIjoiVmV1aWxsZXogbGllciBsJ2FkcmVzc2UgZGUgdm90cmUgcG9ydGVmZXVpbGxlIiwiV2l0aGRyYXcuYmFsYW5jZSI6IsOJcXVpbGlicmUiLCJXaXRoZHJhdy5hbW91bnQiOiJNb250YW50IGRlIHJldHJhaXQiLCJXaXRoZHJhdy5lbnRlci5hbW91bnQiOiJWZXVpbGxleiBzYWlzaXIgbGUgbW9udGFudCBkdSByZXRyYWl0IiwiV2l0aGRyYXcubWluLmFtb3VudCI6Ik1vbnRhbnQgbWluaW11bSBkZSByZXRyYWl0IiwiV2l0aGRyYXcucGF5LnBhc3N3b3JkIjoiTW90IGRlIHBhc3NlIGRlIHBhaWVtZW50IiwiV2l0aGRyYXcuZW50ZXIucGF5LnBhc3N3b3JkIjoiVmV1aWxsZXogc2Fpc2lyIGxlIG1vdCBkZSBwYXNzZSBkZSBwYWllbWVudCIsIldpdGhkcmF3LnN1Ym1pdCI6IkNvbmZpcm1lciIsIldhbGxldC5uZXR3b3JrIjoiUsOpc2VhdSIsIldhbGxldC53YWxsZXQiOiJQb3J0ZWZldWlsbGUiLCJXYWxsZXQuZW50ZXIud2FsbGV0IjoiVmV1aWxsZXogZW50cmVyIGxlIHBvcnRlZmV1aWxsZSIsIldhbGxldC5wYXltZW50IjoiUGFpZW1lbnQiLCJXYWxsZXQuZW50ZXIucGF5bWVudCI6IlZldWlsbGV6IHNhaXNpciBsZSBwYWllbWVudCIsIldhbGxldC5zdWJtaXQiOiJDb25maXJtZXIiLCJQYXNzd29yZC5vbGQiOiJBbmNpZW4gbW90IGRlIHBhc3NlIiwiUGFzc3dvcmQub2xkLmVudGVyIjoiVmV1aWxsZXogc2Fpc2lyIGwnYW5jaWVuIG1vdCBkZSBwYXNzZSIsIlBhc3N3b3JkLm5ldyI6Ik5vdXZlYXUgbW90IGRlIHBhc3NlIiwiUGFzc3dvcmQubmV3LmVudGVyIjoiVmV1aWxsZXogZW50cmVyIHVuIG5vdXZlYXUgbW90IGRlIHBhc3NlIiwiUGFzc3dvcmQuc3VibWl0IjoiQ29uZmlybWVyIiwiUGF5bWVudC5vbGQiOiJBbmNpZW4gbW90IGRlIHBhc3NlIiwiUGF5bWVudC5vbGQuZW50ZXIiOiJWZXVpbGxleiBzYWlzaXIgbCdhbmNpZW4gbW90IGRlIHBhc3NlIiwiUGF5bWVudC5uZXciOiJub3V2ZWF1IG1vdCBkZSBwYXNzZSIsIlBheW1lbnQubmV3LmVudGVyIjoiVmV1aWxsZXogZW50cmVyIHVuIG5vdXZlYXUgbW90IGRlIHBhc3NlIiwiUGF5bWVudC5zdWJtaXQiOiJDb25maXJtZXIiLCJSdWxlLnRpdGxlIjoiUsOoZ2xlIiwiUnVsZS50ZXh0MSI6IkxlIHNlcnZldXIgbWFyY2hhbmQgZGUgbGEgYm91dGlxdWUgVGlrVG9rIGVzdCBjb27Dp3UgcG91ciBhaWRlciBsZXMgY29tbWVyw6dhbnRzIMOgIGFjY3Jvw650cmUgbGEgdmlzaWJpbGl0w6kgZGUgbGV1cnMgcHJvZHVpdHMsIGF1Z21lbnRhbnQgYWluc2kgbGVzIHZlbnRlcyBlbiBtYWdhc2luLiIsIlJ1bGUudGV4dDIiOiJOb3VzIHV0aWxpc29ucyB1biBzeXN0w6htZSBhdXRvbWF0aXPDqSBiYXPDqSBzdXIgbGUgY2xvdWQgcG91ciBhaWRlciBjaGFxdWUgbWFnYXNpbiDDoCBkaXN0cmlidWVyIGxlcyBjb21tYW5kZXMgZGUgcHJvZHVpdHMgZXQgZ2FyYW50aXIgdW4gdHJhaXRlbWVudCBqdXN0ZSBldCDDqXF1aXRhYmxlIGRlIGNoYXF1ZSBjb21tZXLDp2FudC4iLCJSdWxlLnRleHQzIjoiTGVzIGFnZW50cyBtYXJjaGFuZHMgcGV1dmVudCBlZmZlY3R1ZXIgMSDDoCAzIGFjdGl2aXTDqXMgZGUgc2Fpc2llIGRlIGNvbW1hbmRlcyBjaGFxdWUgam91ci4iLCJSdWxlLnRleHQ0IjoiQ2hhcXVlIGNhbXBhZ25lIGNpYmxlIDQwIGNvbW1hbmRlcyBkZSBwcm9kdWl0cy4iLCJSdWxlLnRleHQ1IjoiVW5lIGZvaXMgdGVybWluw6ksIGlscyBzZXJvbnQgcsOpY29tcGVuc8OpcyBwYXIgZGVzIGNvbW1pc3Npb25zIGZvdXJuaWVzIHBhciBsZSBjb21tZXLDp2FudC4iLCJSdWxlLnRleHQ2IjoiTGVzIGVtcGxvecOpcyBzb250IHRlbnVzIGQnZXjDqWN1dGVyIGxlcyBhY3Rpdml0w6lzIGRlIGNvbW1hbmRlIGVuIHRlbXBzIG9wcG9ydHVuLiIsIlJ1bGUudGV4dDciOiJTaSB2b3VzIG4nZWZmZWN0dWV6IHBhcyBsZXMgdMOiY2hlcyBkZSBjb21tYW5kZSBkZSBwcm9kdWl0cyBzcMOpY2lmacOpZXMsIHZvdXMgbmUgcG91cnJleiBwYXMgcmV0aXJlciBkJ2FyZ2VudCBldCB2b3VzIG5lIHBvdXJyZXogcGFzIHJlY2V2b2lyIGRlIGNvbW1pc3Npb25zLiIsIlJ1bGUudGV4dDgiOiJOb3VzIHNvbW1lcyBhdSBzZXJ2aWNlIGRlcyBjb21tZXLDp2FudHMgZGVwdWlzIGRldXggYW5zLiIsIlJ1bGUudGV4dDkiOiJJbCBzJ2FnaXQgZCd1biBlbnZpcm9ubmVtZW50IGRlIHRyYXZhaWwgc8O7ciBldCBzdGFibGUuIiwiUnVsZS50ZXh0MTAiOiJMZSBwZXJzb25uZWwgcGV1dCB2ZW5pciBpY2kgdG91cyBsZXMgam91cnMgdHJhdmFpbGxlciBwb3VyIGxlcyBjb21tZXLDp2FudHMgcGVuZGFudCBsZXVycyBwYXVzZXMuIiwiUnVsZS50ZXh0MTEiOiJUYW50IHF1ZSB2b3VzIHJlc3BlY3RleiBsZXMgcsOoZ2xlcyBkZSBjb21tYW5kZSBkZSBwcm9kdWl0cywgY2VsYSBjb25zdGl0dWVyYSB1biByZXZlbnUgc3RhYmxlIHBvdXIgdm91cy4iLCJBYm91dC50aXRsZSI6IsOAIHByb3BvcyBkZSBub3VzIiwiQWJvdXQudGV4dDEiOiLDgCBwcm9wb3MgZGUgbm91cyBUaWsgVG9rIFNob3AgZXN0IHVuZSBzb2Npw6l0w6kgZGUgbWFya2V0aW5nIGRlIGNyb2lzc2FuY2UuIiwiQWJvdXQudGV4dDIiOiJFbmdhZ8OpIMOgIGF1Z21lbnRlciBsZXMgcmV2ZW51cyBkZXMgZW50cmVwcmlzZXMgY2xpZW50ZXMsIGxlIG1hcmtldGluZyBkZSBjcm9pc3NhbmNlIHV0aWxpc2UgZGVzIGRvbm7DqWVzIGV0IGRlcyBtw6l0aG9kZXMgbnVtw6lyaXF1ZXMgcG91ciByZW5kcmUgbGVzIHLDqXN1bHRhdHMgbWFya2V0aW5nIHByw6l2aXNpYmxlcyBldCBtYXhpbWlzw6lzLiIsIkFib3V0LnRleHQzIjoiTmUgbGFpc3NleiBwbHVzIHZvcyBkw6lwZW5zZXMgbWFya2V0aW5nIMOqdHJlIGTDqXBlbnPDqWVzIHN1ciB1biBwbGFuIGltcHLDqXZpc2libGUgZXQgYXVnbWVudGV6IGxlIHJldG91ciBzdXIgaW52ZXN0aXNzZW1lbnQgYXZlYyBkZXMgZMOpcGVuc2VzIG1pbmltZXMuIExhIG5vdXZlbGxlIG3DqXRob2RlIGRlIG1hcmtldGluZyBwZXJtZXQgw6Agdm90cmUgZW50cmVwcmlzZSBkZSBicmlzZXIgbGUgc2nDqGdlIGV0IGRlIHNlIGTDqXZlbG9wcGVyIGZhY2UgYXUgbWFyY2jDqS4iLCJBYm91dC50ZXh0NCI6IlByb2Jsw6htZXMgcXVlIGxhIGJvdXRpcXVlIFRpayBUb2sgcGV1dCByw6lzb3VkcmUgOiBMJ0FQUCBuJ2EgYXVjdW4gZWZmZXQgYXByw6hzIHNvbiBsYW5jZW1lbnQgZXQgaWwgeSBhIHRyw6hzIHBldSBkJ3V0aWxpc2F0ZXVycyBuYXR1cmVscy4iLCJBYm91dC50ZXh0NSI6IkZhaWJsZSBjbGFzc2VtZW50IDogSWwgbid5IGEgcGFzIGRlIHRyb2lzIHByZW1pZXJzIG1vdHMtY2zDqXMgZGFucyBsZSBjbGFzc2VtZW50IGV0IGxlcyBjbGllbnRzIHBvdGVudGllbHMgbmUgcGV1dmVudCBwYXMgdHJvdXZlciBsJ0FQUC4gRmFpYmxlIGNvdXZlcnR1cmUgOiBMZSBwb2lkcyBnbG9iYWwgZGUgbCdBUFAgZXN0IGZhaWJsZSwgY2UgcXVpIGVudHJhw65uZSB1bmUgbWF1dmFpc2UgY291dmVydHVyZSBkZXMgbW90cyBjbMOpcy4iLCJBYm91dC50ZXh0NiI6IkNvw7t0IMOpbGV2w6kgOiBMZSBjb8O7dCBkdSBwbGFjZW1lbnQgZGUgbW90cy1jbMOpcyBkJ2VuY2jDqHJlcyBlc3Qgw6lsZXbDqS4iLCJTdGFydGluZy5iYWxhbmNlIjoiU29sZGUgYWN0dWVsIiwiU3RhcnRpbmcuaW5jb21lIjoiUmV2ZW51IHRvdGFsIiwiU3RhcnRpbmcub3JkZXIudGl0bGUiOiJSw6lzZXJ2YXRpb24gdGVybWluw6llICEiLCJTdGFydGluZy5zdWJtaXQuYnV0dG9uIjoiQ29ycmVzcG9uZGFuY2UgYXV0b21hdGlxdWUiLCJTdGFydGluZy5zdGVwcyI6IkxlcyBtYXJjaGVzIiwiU3RhcnRpbmcuc3RlcHMxIjoiMS4gQ2xpcXVleiBzdXIgbGUgYm91dG9uIENvcnJlc3BvbmRhbmNlIGF1dG9tYXRpcXVlIGV0IHN1aXZleiBsZXMgaW5zdHJ1Y3Rpb25zIHBvdXIgdGVybWluZXIgbGEgdMOiY2hlLiIsIlN0YXJ0aW5nLnN0ZXBzMiI6IjIuIEFwcsOocyBhdm9pciB0ZXJtaW7DqSBsYSB0w6JjaGUsIHZvdXMgcG91dmV6IHLDqWdsZXIgbGEgY29tbWlzc2lvbiBzdXIgbGUgc29sZGUuIiwiQWNjb3VudC5pbmRleC5waG9uZSI6IlTDqWzDqXBob25lIiwiQWNjb3VudC5pbmRleC5pbnZpdGVfY29kZSI6IkNvZGUgZCdpbnZpdGF0aW9uIiwiQWNjb3VudC5pbmRleC5iYWxhbmNlIjoiw4lxdWlsaWJyZSIsIkFjY291bnQuaW5kZXgucmVjaGFyZ2UiOiJSZWNoYXJnZXIiLCJBY2NvdW50LmluZGV4LndpdGhkcmF3YWwiOiJSZXRyYWl0IiwiQWNjb3VudC5pbmRleC5zZXJ2aWNlcyI6IlByZXN0YXRpb25zIGRlIHNlcnZpY2UiLCJBY2NvdW50LmluZGV4LmRldGFpbGVkIjoiRMOpdGFpbGzDqSIsIkFjY291bnQuaW5kZXgud2FsbGV0IjoiUG9ydGVmZXVpbGxlIiwiQWNjb3VudC5pbmRleC5wYXNzd29yZCI6Ik1vdCBkZSBwYXNzZSIsIkFjY291bnQuaW5kZXgucGF5bWVudCI6IlBhaWVtZW50IiwiQWNjb3VudC5pbmRleC5ydWxlIjoiUsOoZ2xlIiwiQWNjb3VudC5pbmRleC5hYm91dCI6IsOAIHByb3BvcyBkZSBub3VzIiwiQWNjb3VudC5pbmRleC5sb2dvdXQiOiJTZSBkw6ljb25uZWN0ZXIiLCJBY2NvdW50LmluZGV4Lm1lc3NhZ2UiOiJNZXNzYWdlIiwiTG9naW4udGl0bGUiOiJTZSBjb25uZWN0ZXIiLCJMb2dpbi50aXBzIjoiVmV1aWxsZXogdm91cyBjb25uZWN0ZXIgw6Agdm90cmUgY29tcHRlIiwiTG9naW4uZW50ZXIucGhvbmUiOiJWZXVpbGxleiBlbnRyZXIgbGUgdMOpbMOpcGhvbmUiLCJMb2dpbi5lbnRlci5wYXNzd29yZCI6IlZldWlsbGV6IGVudHJlciBsZSBtb3QgZGUgcGFzc2UiLCJMb2dpbi5mb3JnZXQiOiJWb3VzIGF2ZXogb3VibGnDqSBsZSBtb3QgZGUgcGFzc2UgPyIsIkxvZ2luLnJlZ2lzdGVyIjoiUydpbnNjcmlyZSBtYWludGVuYW50IiwiUmVnaXN0ZXIudGl0bGUiOiJSZWdpc3RyZSIsIlJlZ2lzdGVyLnRpcHMiOiJWb3VzIGF2ZXogZMOpasOgIHVuIGNvbXB0ZT8iLCJSZWdpc3Rlci5lbnRlci5waG9uZSI6IlZldWlsbGV6IGVudHJlciBsZSB0w6lsw6lwaG9uZSIsIlJlZ2lzdGVyLmVudGVyLnBhc3N3b3JkIjoiVmV1aWxsZXogZW50cmVyIGxlIG1vdCBkZSBwYXNzZSIsIlJlZ2lzdGVyLmVudGVyLnBheS5wYXNzd29yZCI6IlZldWlsbGV6IHNhaXNpciBsZSBtb3QgZGUgcGFzc2UgZGUgcGFpZW1lbnQgw6AgNiBjaGlmZnJlcyIsIlJlZ2lzdGVyLmVudGVyLmludml0ZV9jb2RlIjoiVmV1aWxsZXogc2Fpc2lyIGxlIGNvZGUgZCdpbnZpdGF0aW9uIiwiUmVnaXN0ZXIucmVhZCI6IkxpcmUgZXQgYWNjZXB0ZXIiLCJSZWdpc3Rlci5wcml2YWN5IjoiYWNjb3JkIGRlIGNvbmZpZGVudGlhbGl0w6kiLCJSZWdpc3Rlci5hZ3JlZSI6IlZldWlsbGV6IGxpcmUgZXQgYWNjZXB0ZXIgbCdhY2NvcmQgZGUgY29uZmlkZW50aWFsaXTDqSJ9fSwiMjNiZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIGE9bigiM2I0ZSIpLGk9bi5uKGEpO2Zvcih2YXIgciBpbiBhKVsiZGVmYXVsdCJdLmluZGV4T2Yocik8MCYmZnVuY3Rpb24odCl7bi5kKGUsdCwoZnVuY3Rpb24oKXtyZXR1cm4gYVt0XX0pKX0ocik7ZVsiZGVmYXVsdCJdPWkuYX0sIjNiNGUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bigiN2E4MiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmRlZmF1bHQ9dm9pZCAwLG4oImQzYjciKSxuKCIzY2EzIiksbigiZGRiMCIpLG4oIjk4NjEiKSxuKCI4OGE3IiksbigiMjcxYSIpLG4oIjU0OTQiKTtlLmRlZmF1bHQ9e29uTGF1bmNoOmZ1bmN0aW9uKCl7Y29uc29sZS5sb2coIkFwcCBMYXVuY2giKSx0aGlzLmhhbmRsZUdsb2JhbFBhcmFtcygpfSxvblNob3c6ZnVuY3Rpb24oKXtjb25zb2xlLmxvZygiQXBwIFNob3ciKSx0aGlzLmhhbmRsZUdsb2JhbFBhcmFtcygpfSxvbkhpZGU6ZnVuY3Rpb24oKXtjb25zb2xlLmxvZygiQXBwIEhpZGUiKX0sbWV0aG9kczp7aGFuZGxlR2xvYmFsUGFyYW1zOmZ1bmN0aW9uKCl7dHJ5e2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdyl7dmFyIHQ9d2luZG93LmxvY2F0aW9uLmhyZWY7Y29uc29sZS5sb2coIkN1cnJlbnQgVVJMOiIsdCk7dmFyIGU9dC5zcGxpdCgiPyIpWzFdO2lmKGUpe3ZhciBuPW5ldyBVUkxTZWFyY2hQYXJhbXMoZSksYT1uLmdldCgiaW52aXRlIik7YSYmKGNvbnNvbGUubG9nKCJGb3VuZCBpbnZpdGUgY29kZSBpbiBVUkw6IixhKSx1bmkuc2V0U3RvcmFnZVN5bmMoImdsb2JhbF9pbnZpdGVfY29kZSIsYSkpfX19Y2F0Y2gocyl7Y29uc29sZS5lcnJvcigiRXJyb3IgaGFuZGxpbmcgZ2xvYmFsIHBhcmFtczoiLHMpfXZhciBpPWdldEN1cnJlbnRQYWdlcygpO2lmKGkubGVuZ3RoPjApe3ZhciByPWlbMF0sbz1yLm9wdGlvbnN8fHt9O28uaW52aXRlJiYicGFnZXMvbG9naW4vcmVnaXN0ZXIiIT09ci5yb3V0ZSYmdW5pLm5hdmlnYXRlVG8oe3VybDoiL3BhZ2VzL2xvZ2luL3JlZ2lzdGVyP2ludml0ZT0iK28uaW52aXRlfSl9fX19fSwiM2RmZCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIGE9bigiZjA5NiIpLGk9bigiMjNiZSIpO2Zvcih2YXIgciBpbiBpKVsiZGVmYXVsdCJdLmluZGV4T2Yocik8MCYmZnVuY3Rpb24odCl7bi5kKGUsdCwoZnVuY3Rpb24oKXtyZXR1cm4gaVt0XX0pKX0ocik7bigiNWMwYiIpO3ZhciBvLHM9bigiZjBjNSIpLHA9T2JqZWN0KHNbImEiXSkoaVsiZGVmYXVsdCJdLGFbImIiXSxhWyJjIl0sITEsbnVsbCxudWxsLG51bGwsITEsYVsiYSJdLG8pO2VbImRlZmF1bHQiXT1wLmV4cG9ydHN9LDQxNTI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDA7ZS5kZWZhdWx0PXtuYXY6WyJIb21lIiwiUmVnaXN0cmkiLCJBdnZpbyIsIlNlcnZpemlvIiwiQWNjb3VudCJdLHJlY29yZHNfbmF2OlsiVHV0dGkiLCJJbnZpbyIsIkNvbXBsZXRhdG8iLCJGcm96ZW4iXSxiaWxsc19uYXY6WyJUdXR0byIsIkVudHJhdGUiLCJTcGVzZSJdLCJCYW5rLmFjY291bnQiOiJBY2NvdW50IiwiQmFuay5lbnRlci5hY2NvdW50IjoiSW5zZXJpc2NpIGFjY291bnQiLCJCYW5rLnVzZXJuYW1lIjoiTm9tZSB1dGVudGUiLCJCYW5rLmVudGVyLnVzZXJuYW1lIjoiSW5zZXJpc2NpIG5vbWUgdXRlbnRlIiwiQmFuay50eXBlIjoiVGlwbyBkaSBwaXgiLCJCYW5rLmVudGVyLnR5cGUiOiJTZWxlemlvbmEgaWwgdGlwbyBkaSBwaXgiLCJCYW5rLmNwZiI6IkNwZiIsIkJhbmsuZW50ZXIuY3BmIjoiSW5zZXJpc2NpIGNwZiIsIkJhbmsuc3VibWl0IjoiQ29uZmVybWEiLCJCYW5rLmJpbmQuYmFuayI6IkNvbGxlZ2EgbGEgdHVhIGJhbmNhIiwiQ29tbW9uLmxvYWRpbmciOiJDYXJpY2FtZW50by4uLiIsIkNvbW1vbi5ub19kYXRhIjoiTmVzc3VuYSByZWdpc3RyYXppb25lIiwiQ29tbW9uLmNvcHkiOiJjb3BpYSIsIkNvbW1vbi5zaWduIjoiU2Vnbm8iLCJDb21tb24uY3JlZGl0X3Njb3JlIjoiUHVudGVnZ2lvIGRpIGNyZWRpdG8iLCJJbmRleC5jb21tb2RpdGllcyI6Ik1lcmNpIiwiSW5kZXguYWJvdXQiOiJDaGkgc2lhbW8iLCJJbmRleC5jb21wYW55IjoiU29jaWV0w6AgZGkgbWFya2V0aW5nIGluIGNyZXNjaXRhIiwiSW5kZXguaW50cm9kdWN0aW9uIjoiRmFyZSBjbGljIHBlciB2aXN1YWxpenphcmUgbCdpbnRyb2R1emlvbmUiLCJJbmRleC5jb21taXNzaW9uIjoiQ29tbWlzc2lvbmUiLCJJbmRleC5nZXQiOiJPdHRpZW5pIHVuYSBjb21taXNzaW9uZSIsIk9yZGVyLnRvdGFsX3ZhbHVlIjoiVmFsb3JlIGNvbXBsZXNzaXZvIiwiT3JkZXIuY29tbWlzc2lvbiI6IkNvbW1pc3Npb25lIiwiT3JkZXIuc3VibWl0IjoiSW52aWEiLCJPcmRlci50aW1lIjoiT3JhIGRlbGwnb3JkaW5lIiwiT3JkZXIubnVtYmVyIjoiTnVtZXJvIGQnb3JkaW5lIiwiT3JkZXIudG90YWwiOiJPcmRpbmUgdG90YWxlIiwiT3JkZXIuZXhwZWN0ZWQiOiJSaXRvcm5vIHByZXZpc3RvIiwiUmVjaGFyZ2UuYmFsYW5jZSI6IkJpbGFuY2lhIiwiUmVjaGFyZ2UuYWRkcmVzcyI6IkluZGlyaXp6byBkaSByaWNhcmljYSIsIlJlY2hhcmdlLmFtb3VudCI6IkltcG9ydG8gZGVsbGEgcmljYXJpY2EiLCJSZWNoYXJnZS5lbnRlci5hbW91bnQiOiJJbnNlcmlzY2kgbCdpbXBvcnRvIGRlbGxhIHJpY2FyaWNhIiwiUmVjaGFyZ2UudXBsb2FkIjoiQ2FyaWNhIHNjcmVlbnNob3QgZGVsIHBhZ2FtZW50byIsIlJlY2hhcmdlLnBsZWFzZSI6IkNhcmljYSBsbyBzY3JlZW5zaG90IGRlbCBwYWdhbWVudG8iLCJSZWNoYXJnZS51cGxvYWQxIjoiQ2FyaWNhbWVudG8iLCJSZWNoYXJnZS5zdWJtaXQiOiJIbyBjb21wbGV0YXRvIGxhIHJpY2FyaWNhIiwiUmVjaGFyZ2UudGlwcyI6IlN1Z2dlcmltZW50aSIsIlJlY2hhcmdlLnRpcHMxIjoiMS4gQ29waWEgbCdpbmRpcml6em8gZGVsIHBvcnRhZm9nbGlvIFRSQy0yMCBwZXIgaWwgcGFnYW1lbnRvIGluIHF1ZXN0byBjZW50cm8gY29tbWVyY2lhbGUuIiwiUmVjaGFyZ2UudGlwczIiOiIyLiBFZmZldHR1YSBpbCB0cmFzZmVyaW1lbnRvIGRvcG8gbGEgdmVyaWZpY2EuIFNlIGNvbW1ldHRvIHVuIGVycm9yZSwgcXVlc3RvIGNlbnRybyBjb21tZXJjaWFsZSBub24gc29wcG9ydGVyw6AgbGEgdHVhIHBlcmRpdGEuIiwiUmVjaGFyZ2UudGlwczMiOiIzLiBVbmEgdm9sdGEgY29tcGxldGF0byBpbCBwYWdhbWVudG8sIGNhcmljYSBpbCB2b3VjaGVyIGRpIHBhZ2FtZW50by4iLCJSZWNoYXJnZS50aXBzNCI6IjQuIFVuYSB2b2x0YSB0ZXJtaW5hdG8sIGZhaSBjbGljIHN1IDogSG8gY29tcGxldGF0byBpbCBwYWdhbWVudG8uIiwiUmVjaGFyZ2UudGlwczUiOiI1LiBJbiBjYXNvIGRpIHByb2JsZW1pLCBhc3NpY3VyYXRpIGRpIGNvbnRhdHRhcmUgaWwgbm9zdHJvIHNlcnZpemlvIGNsaWVudGkgb25saW5lIGluIHRlbXBvIHBlciBhaXV0YXJ0aSBhIHJpc29sdmVybGkuIiwiUmVjaGFyZ2Uuc2VsZWN0IjoiU2VsZXppb25lIGRlbCBtZXRvZG8gZGkgcmljYXJpY2EiLCJXaXRoZHJhdy5iaW5kLmFkZHJlc3MiOiJBc3NvY2lhIGwnaW5kaXJpenpvIGRlbCB0dW8gcG9ydGFmb2dsaW8iLCJXaXRoZHJhdy5iYWxhbmNlIjoiQmlsYW5jaWEiLCJXaXRoZHJhdy5hbW91bnQiOiJJbXBvcnRvIGRlbCBwcmVsaWV2byIsIldpdGhkcmF3LmVudGVyLmFtb3VudCI6Ikluc2VyaXNjaSBsJ2ltcG9ydG8gZGVsIHByZWxpZXZvIiwiV2l0aGRyYXcubWluLmFtb3VudCI6IkltcG9ydG8gbWluaW1vIGRpIHByZWxpZXZvIiwiV2l0aGRyYXcucGF5LnBhc3N3b3JkIjoiUGFzc3dvcmQgZGkgcGFnYW1lbnRvIiwiV2l0aGRyYXcuZW50ZXIucGF5LnBhc3N3b3JkIjoiSW5zZXJpc2NpIGxhIHBhc3N3b3JkIGRpIHBhZ2FtZW50byIsIldpdGhkcmF3LnN1Ym1pdCI6IkNvbmZlcm1hcmUiLCJXYWxsZXQubmV0d29yayI6IlJldGUiLCJXYWxsZXQud2FsbGV0IjoiUG9ydGFmb2dsaW8iLCJXYWxsZXQuZW50ZXIud2FsbGV0IjoiSW5zZXJpc2NpIGlsIHBvcnRhZm9nbGlvIiwiV2FsbGV0LnBheW1lbnQiOiJQYWdhbWVudG8iLCJXYWxsZXQuZW50ZXIucGF5bWVudCI6Ikluc2VyaXNjaSBpbCBwYWdhbWVudG8iLCJXYWxsZXQuc3VibWl0IjoiQ29uZmVybWFyZSIsIlBhc3N3b3JkLm9sZCI6IlZlY2NoaWEgcGFzc3dvcmQiLCJQYXNzd29yZC5vbGQuZW50ZXIiOiJJbnNlcmlzY2kgbGEgdmVjY2hpYSBwYXNzd29yZCIsIlBhc3N3b3JkLm5ldyI6Ik51b3ZhIHBhc3N3b3JkIiwiUGFzc3dvcmQubmV3LmVudGVyIjoiSW5zZXJpc2NpIGxhIG51b3ZhIHBhc3N3b3JkIiwiUGFzc3dvcmQuc3VibWl0IjoiQ29uZmVybWFyZSIsIlBheW1lbnQub2xkIjoiVmVjY2hpYSBwYXNzd29yZCIsIlBheW1lbnQub2xkLmVudGVyIjoiSW5zZXJpc2NpIGxhIHZlY2NoaWEgcGFzc3dvcmQiLCJQYXltZW50Lm5ldyI6Im51b3ZhIHBhc3N3b3JkIiwiUGF5bWVudC5uZXcuZW50ZXIiOiJJbnNlcmlzY2kgbGEgbnVvdmEgcGFzc3dvcmQiLCJQYXltZW50LnN1Ym1pdCI6IkNvbmZlcm1hcmUiLCJSdWxlLnRpdGxlIjoiUmVnb2xhIiwiUnVsZS50ZXh0MSI6IklsIHNlcnZlciBjb21tZXJjaWFsZSBkZWwgbmVnb3ppbyBUaWtUb2sgw6ggcHJvZ2V0dGF0byBwZXIgYWl1dGFyZSBpIGNvbW1lcmNpYW50aSBhZCBhdW1lbnRhcmUgbGEgdmlzaWJpbGl0w6AgZGVpIGxvcm8gcHJvZG90dGksIGF1bWVudGFuZG8gY29zw6wgbGUgdmVuZGl0ZSBpbiBuZWdvemlvLiIsIlJ1bGUudGV4dDIiOiJVdGlsaXp6aWFtbyB1biBzaXN0ZW1hIGF1dG9tYXRpenphdG8gYmFzYXRvIHN1IGNsb3VkIHBlciBhaXV0YXJlIG9nbmkgbmVnb3ppbyBhIGRpc3RyaWJ1aXJlIGdsaSBvcmRpbmkgZGkgcHJvZG90dGkgZSBnYXJhbnRpcmUgdW4gdHJhdHRhbWVudG8gZ2l1c3RvIGVkIGVxdW8gYSBjaWFzY3VuIGNvbW1lcmNpYW50ZS4iLCJSdWxlLnRleHQzIjoiR2xpIGFnZW50aSBjb21tZXJjaWFsaSBwb3Nzb25vIGNvbXBsZXRhcmUgMS0zIGF0dGl2aXTDoCBkaSByYWNjb2x0YSBkZWdsaSBvcmRpbmkgb2duaSBnaW9ybm8uIiwiUnVsZS50ZXh0NCI6Ik9nbmkgY2FtcGFnbmEgaGEgY29tZSB0YXJnZXQgNDAgb3JkaW5pIGRpIHByb2RvdHRpLiIsIlJ1bGUudGV4dDUiOiJBbCB0ZXJtaW5lLCB2ZXJyYW5ubyByaWNvbXBlbnNhdGkgY29uIGxlIGNvbW1pc3Npb25pIGZvcm5pdGUgZGFsIGNvbW1lcmNpYW50ZS4iLCJSdWxlLnRleHQ2IjoiSSBkaXBlbmRlbnRpIHNvbm8gdGVudXRpIGEgY29tcGxldGFyZSBsZSBhdHRpdml0w6AgcmVsYXRpdmUgYWdsaSBvcmRpbmkgaW4gbW9kbyB0ZW1wZXN0aXZvLiIsIlJ1bGUudGV4dDciOiJTZSBub24gY29tcGxldGkgbGUgYXR0aXZpdMOgIGRpIG9yZGluZSBkZWwgcHJvZG90dG8gc3BlY2lmaWNhdGUsIG5vbiBzYXJhaSBpbiBncmFkbyBkaSBwcmVsZXZhcmUgZGVuYXJvIGUgbm9uIHNhcmFpIGluIGdyYWRvIGRpIHJpY2V2ZXJlIHByZW1pIGluIGNvbW1pc3Npb25lLiIsIlJ1bGUudGV4dDgiOiJTZXJ2aWFtbyBpIGNvbW1lcmNpYW50aSBkYSBkdWUgYW5uaS4iLCJSdWxlLnRleHQ5IjoiUXVlc3RvIMOoIHVuIGFtYmllbnRlIGRpIGxhdm9ybyBzaWN1cm8gZSBzdGFiaWxlLiIsIlJ1bGUudGV4dDEwIjoiSWwgcGVyc29uYWxlIHB1w7IgdmVuaXJlIHF1aSBvZ25pIGdpb3JubyBwZXIgbGF2b3JhcmUgcGVyIGkgY29tbWVyY2lhbnRpIGR1cmFudGUgbGUgcGF1c2UuIiwiUnVsZS50ZXh0MTEiOiJGaW5jaMOpIHNlZ3VpIGxlIHJlZ29sZSBkZWxsJ29yZGluZSBkZWwgcHJvZG90dG8sIHF1ZXN0byBzYXLDoCB1biByZWRkaXRvIGNvc3RhbnRlIHBlciB0ZS4iLCJBYm91dC50aXRsZSI6IkNoaSBzaWFtbyIsIkFib3V0LnRleHQxIjoiQ2hpIHNpYW1vIElsIG5lZ296aW8gVGlrIFRvayDDqCB1bmEgc29jaWV0w6AgZGkgbWFya2V0aW5nIGluIGNyZXNjaXRhLiIsIkFib3V0LnRleHQyIjoiSW1wZWduYXRvIGFkIGVzcGFuZGVyZSBsZSBlbnRyYXRlIGRlbGxlIGF6aWVuZGUgY2xpZW50aSwgaWwgZ3Jvd3RoIG1hcmtldGluZyB1dGlsaXp6YSBkYXRpIGUgbWV0b2RpIGRpZ2l0YWxpIHBlciByZW5kZXJlIGkgcmlzdWx0YXRpIGRpIG1hcmtldGluZyBwcmV2ZWRpYmlsaSBlIG1hc3NpbWl6emF0aS4iLCJBYm91dC50ZXh0MyI6Ikxhc2NpYSBjaGUgbGUgdHVlIHNwZXNlIGRpIG1hcmtldGluZyBub24gdmVuZ2FubyBwacO5IHNwZXNlIHNlY29uZG8gdW4gcGlhbm8gaW1wcmV2ZWRpYmlsZSBlZCBlc3BhbmRpIGlsIHJpdG9ybm8gc3VsbCdpbnZlc3RpbWVudG8gY29uIHNwZXNlIG1pbmltZS4gSWwgbnVvdm8gbWV0b2RvIGRpIG1hcmtldGluZyBjb25zZW50ZSBhbGxhIHR1YSBhemllbmRhIGRpIHNmb25kYXJlIGwnYXNzZWRpbyBlIGNyZXNjZXJlIGNvbnRybyBpbCBtZXJjYXRvLiIsIkFib3V0LnRleHQ0IjoiUHJvYmxlbWkgY2hlIFRpayBUb2sgU2hvcCBwdcOyIHJpc29sdmVyZSA6IEwnQVBQIG5vbiBoYSBhbGN1biBlZmZldHRvIGRvcG8gZXNzZXJlIHN0YXRhIGxhbmNpYXRhIGUgY2kgc29ubyBwb2NoaXNzaW1pIHV0ZW50aSBuYXR1cmFsaS4iLCJBYm91dC50ZXh0NSI6IkNsYXNzaWZpY2EgYmFzc2E6IE5vbiBjaSBzb25vIGxlIHByaW1lIHRyZSBwYXJvbGUgY2hpYXZlIG5lbGxhIGNsYXNzaWZpY2EgZSBpIHBvdGVuemlhbGkgY2xpZW50aSBub24gcmllc2Nvbm8gYSB0cm92YXJlIGwnQVBQLiBDb3BlcnR1cmEgYmFzc2EgOiBJbCBwZXNvIGNvbXBsZXNzaXZvIGRlbGwnQVBQIMOoIGJhc3NvLCBjb24gY29uc2VndWVudGUgc2NhcnNhIGNvcGVydHVyYSBkZWxsZSBwYXJvbGUgY2hpYXZlLiIsIkFib3V0LnRleHQ2IjoiQ29zdG8gZWxldmF0bzogSWwgY29zdG8gcGVyIGwnaW5zZXJpbWVudG8gZGVsbGUgcGFyb2xlIGNoaWF2ZSBuZWxsJ29mZmVydGEgw6ggZWxldmF0by4iLCJTdGFydGluZy5iYWxhbmNlIjoiQmlsYW5jaW8gY29ycmVudGUiLCJTdGFydGluZy5pbmNvbWUiOiJSZWRkaXRvIHRvdGFsZSIsIlN0YXJ0aW5nLm9yZGVyLnRpdGxlIjoiUHJlbm90YXppb25lIGNvbXBsZXRhdGEhIiwiU3RhcnRpbmcuc3VibWl0LmJ1dHRvbiI6IkFiYmluYW1lbnRvIGF1dG9tYXRpY28iLCJTdGFydGluZy5zdGVwcyI6IkkgcGFzc2kiLCJTdGFydGluZy5zdGVwczEiOiIxLiBGYXJlIGNsaWMgc3VsIHB1bHNhbnRlIEFiYmluYW1lbnRvIGF1dG9tYXRpY28gZSBzZWd1aXJlIGxlIGlzdHJ1emlvbmkgcGVyIGNvbXBsZXRhcmUgbCdhdHRpdml0w6AuIiwiU3RhcnRpbmcuc3RlcHMyIjoiMi4gRG9wbyBhdmVyIGNvbXBsZXRhdG8gbCdhdHRpdml0w6AsIHB1b2kgc2FsZGFyZSBsYSBjb21taXNzaW9uZSBhbCBzYWxkby4iLCJBY2NvdW50LmluZGV4LnBob25lIjoiVGVsZWZvbm8iLCJBY2NvdW50LmluZGV4Lmludml0ZV9jb2RlIjoiQ29kaWNlIGludml0byIsIkFjY291bnQuaW5kZXguYmFsYW5jZSI6IkJpbGFuY2lhIiwiQWNjb3VudC5pbmRleC5yZWNoYXJnZSI6IlJpY2FyaWNhcmUiLCJBY2NvdW50LmluZGV4LndpdGhkcmF3YWwiOiJSaXRpcm8iLCJBY2NvdW50LmluZGV4LnNlcnZpY2VzIjoiU2Vydml6aSIsIkFjY291bnQuaW5kZXguZGV0YWlsZWQiOiJEZXR0YWdsaWF0byIsIkFjY291bnQuaW5kZXgud2FsbGV0IjoiUG9ydGFmb2dsaW8iLCJBY2NvdW50LmluZGV4LnBhc3N3b3JkIjoiUGFyb2xhIGQnb3JkaW5lIiwiQWNjb3VudC5pbmRleC5wYXltZW50IjoiUGFnYW1lbnRvIiwiQWNjb3VudC5pbmRleC5ydWxlIjoiUmVnb2xhIiwiQWNjb3VudC5pbmRleC5hYm91dCI6IkNoaSBzaWFtbyIsIkFjY291bnQuaW5kZXgubG9nb3V0IjoiRGlzY29ubmV0dGVyc2kiLCJBY2NvdW50LmluZGV4Lm1lc3NhZ2UiOiJNZXNzYWdnaW8iLCJMb2dpbi50aXRsZSI6IkxvZ2luIiwiTG9naW4udGlwcyI6IkVmZmV0dHVhIGlsIGxvZ2luIGFsIHR1byBhY2NvdW50IiwiTG9naW4uZW50ZXIucGhvbmUiOiJQZXIgZmF2b3JlIGluc2VyaXNjaSBpbCB0ZWxlZm9ubyIsIkxvZ2luLmVudGVyLnBhc3N3b3JkIjoiUGVyIGZhdm9yZSwgaW5zZXJpc2NpIGxhIHBhc3N3b3JkIiwiTG9naW4uZm9yZ2V0IjoiSGFpIGRpbWVudGljYXRvIGxhIHBhc3N3b3JkPyIsIkxvZ2luLnJlZ2lzdGVyIjoiSXNjcml2aXRpIG9yYSIsIlJlZ2lzdGVyLnRpdGxlIjoiUmVnaXN0cmF0aSIsIlJlZ2lzdGVyLnRpcHMiOiJIYWkgZ2nDoCB1biBhY2NvdW50PyIsIlJlZ2lzdGVyLmVudGVyLnBob25lIjoiUGVyIGZhdm9yZSBpbnNlcmlzY2kgaWwgdGVsZWZvbm8iLCJSZWdpc3Rlci5lbnRlci5wYXNzd29yZCI6IlBlciBmYXZvcmUsIGluc2VyaXNjaSBsYSBwYXNzd29yZCIsIlJlZ2lzdGVyLmVudGVyLnBheS5wYXNzd29yZCI6Ikluc2VyaXNjaSBsYSBwYXNzd29yZCBkaSBwYWdhbWVudG8gZGkgNiBjaWZyZSIsIlJlZ2lzdGVyLmVudGVyLmludml0ZV9jb2RlIjoiSW5zZXJpc2NpIGlsIGNvZGljZSBkaSBpbnZpdG8iLCJSZWdpc3Rlci5yZWFkIjoiTGVnZ2kgZSBhY2NldHRhIiwiUmVnaXN0ZXIucHJpdmFjeSI6ImFjY29yZG8gc3VsbGEgcHJpdmFjeSIsIlJlZ2lzdGVyLmFncmVlIjoiU2kgcHJlZ2EgZGkgbGVnZ2VyZSBlIGFjY2V0dGFyZSBsJ2FjY29yZG8gc3VsbGEgcHJpdmFjeSJ9fSw0MzYwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bigiN2E4MiIpO3ZhciBhPW4oIjRlYTQiKS5kZWZhdWx0O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmRlZmF1bHQ9dm9pZCAwO3ZhciBpPWEobigiZTE0MyIpKSxyPWEobigiMjZjYiIpKSxvPWEobigiMGU0NCIpKTtpLmRlZmF1bHQudXNlKHIuZGVmYXVsdCk7ZS5kZWZhdWx0PW5ldyByLmRlZmF1bHQuU3RvcmUoe3BsdWdpbnM6WygwLG8uZGVmYXVsdCkoe3BhdGg6WyJ0b2tlbiIsInVpZCJdLHN0b3JhZ2U6e2dldEl0ZW06ZnVuY3Rpb24odCl7cmV0dXJuIHVuaS5nZXRTdG9yYWdlU3luYyh0KX0sc2V0SXRlbTpmdW5jdGlvbih0LGUpe3JldHVybiB1bmkuc2V0U3RvcmFnZVN5bmModCxlKX0scmVtb3ZlSXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gdW5pLnJlbW92ZVN0b3JhZ2VTeW5jKHQpfX19KV0sc3RhdGU6e3Rva2VuOiIiLHVpZDoiIn0sbXV0YXRpb25zOntzZXRUb2tlbjpmdW5jdGlvbih0LGUpe3QudG9rZW49ZX0sc2V0VWlkOmZ1bmN0aW9uKHQsZSl7dC51aWQ9ZX19LGFjdGlvbnM6e319KX0sIjU2ZDciOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGE9bigiNGVhNCIpLmRlZmF1bHQsaT1hKG4oIjU1MzAiKSk7bigiZTI2MCIpLG4oImU2Y2YiKSxuKCJjY2E2IiksbigiYTc5ZCIpLG4oIjZjZGMiKSxuKCIxYzMxIik7dmFyIHI9YShuKCJlMTQzIikpLG89YShuKCIzZGZkIikpO24oImJlOGYiKTt2YXIgcz1hKG4oIjQzNjAiKSkscD1hKG4oImQwN2MiKSksdT1hKG4oIjZiNTIiKSksZD1hKG4oImJhZjYiKSk7ci5kZWZhdWx0LnByb3RvdHlwZS5faTE4bj1kLmRlZmF1bHQsci5kZWZhdWx0LmNvbmZpZy5wcm9kdWN0aW9uVGlwPSExLHIuZGVmYXVsdC5wcm90b3R5cGUuJHN0b3JlPXMuZGVmYXVsdCxyLmRlZmF1bHQucHJvdG90eXBlLiRodHRwPXAuZGVmYXVsdCxyLmRlZmF1bHQudXNlKHUuZGVmYXVsdCksby5kZWZhdWx0Lm1wVHlwZT0iYXBwIjt2YXIgbT1uZXcgci5kZWZhdWx0O3IuZGVmYXVsdC5wcm90b3R5cGUuYnVzPW07dmFyIGc9bmV3IHIuZGVmYXVsdCgoMCxpLmRlZmF1bHQpKCgwLGkuZGVmYXVsdCkoe2kxOG46ZC5kZWZhdWx0fSxvLmRlZmF1bHQpLHt9LHtzdG9yZTpzLmRlZmF1bHR9KSk7Zy4kbW91bnQoKX0sIjU4YWMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bigiN2E4MiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmRlZmF1bHQ9dm9pZCAwO2UuZGVmYXVsdD17bmF2OlsiSW5pY2lvIiwiUmVnaXN0cm9zIiwiSW5pY2lhbmRvIiwiU2VydmljaW8iLCJDdWVudGEiXSxyZWNvcmRzX25hdjpbIlRvZG8iLCJFbnbDrW8iLCJDb21wbGV0YWRvIiwiQ29uZ2VsYWRvIl0sYmlsbHNfbmF2OlsiVG9kb3MiLCJJbmdyZXNvcyIsIkdhc3RvcyJdLCJCYW5rLmFjY291bnQiOiJDdWVudGEiLCJCYW5rLmVudGVyLmFjY291bnQiOiJQb3IgZmF2b3IsIGludHJvZHV6Y2EgbGEgY3VlbnRhIiwiQmFuay51c2VybmFtZSI6Ik5vbWJyZSBkZSB1c3VhcmlvIiwiQmFuay5lbnRlci51c2VybmFtZSI6IlBvciBmYXZvciwgaW50cm9kdXpjYSBlbCBub21icmUgZGUgdXN1YXJpbyIsIkJhbmsudHlwZSI6IlRpcG8gZGUgZm90byIsIkJhbmsuZW50ZXIudHlwZSI6IlBvciBmYXZvciwgc2VsZWNjaW9uZSBlbCB0aXBvIGRlIGZvdG8iLCJCYW5rLmNwZiI6IkNwZiIsIkJhbmsuZW50ZXIuY3BmIjoiUG9yIGZhdm9yLCBpbnRyb2R1emNhIGVsIGNwZiIsIkJhbmsuc3VibWl0IjoiQ29uZmlybWFyIiwiQmFuay5iaW5kLmJhbmsiOiJQb3IgZmF2b3IsIHZpbmN1bGUgc3UgYmFuY28iLCJDb21tb24ubG9hZGluZyI6IkNhcmdhbmRvLi4uIiwiQ29tbW9uLm5vX2RhdGEiOiJTaW4gcmVnaXN0cm8iLCJDb21tb24uY29weSI6IkNvcGlhciIsIkNvbW1vbi5zaWduIjoiU2lnbm8iLCJDb21tb24uY3JlZGl0X3Njb3JlIjoiUHVudGFqZSBjcmVkaXRpY2lvIiwiSW5kZXguY29tbW9kaXRpZXMiOiJNYXRlcmlhcyBwcmltYXMiLCJJbmRleC5hYm91dCI6IlNvYnJlIG5vc290cm9zIiwiSW5kZXguY29tcGFueSI6IkVtcHJlc2EgZGUgbWFya2V0aW5nIGRlIGNyZWNpbWllbnRvIiwiSW5kZXguaW50cm9kdWN0aW9uIjoiSGFnYSBjbGljIHBhcmEgdmVyIGxhIGludHJvZHVjY2nDs24iLCJJbmRleC5jb21taXNzaW9uIjoiQ29taXNpw7NuIiwiSW5kZXguZ2V0IjoiT2J0ZW5lciB1bmEgY29taXNpw7NuIiwiT3JkZXIudG90YWxfdmFsdWUiOiJWYWxvciB0b3RhbCIsIk9yZGVyLmNvbW1pc3Npb24iOiJDb21pc2nDs24iLCJPcmRlci5zdWJtaXQiOiJFbnRyZWdhciIsIk9yZGVyLnRpbWUiOiJUaWVtcG8gZGUgbGEgb3JkZW4iLCJPcmRlci5udW1iZXIiOiJOw7ptZXJvIGRlIG9yZGVuIiwiT3JkZXIudG90YWwiOiJUb3RhbCBkZWwgcGVkaWRvIiwiT3JkZXIuZXhwZWN0ZWQiOiJSZW5kaW1pZW50byBlc3BlcmFkbyIsIlJlY2hhcmdlLmJhbGFuY2UiOiJCYWxhbmNlIiwiUmVjaGFyZ2UuYWRkcmVzcyI6IkRpcmVjY2nDs24gZGUgcmVjYXJnYSIsIlJlY2hhcmdlLmFtb3VudCI6Ik1vbnRvIGRlIHJlY2FyZ2EiLCJSZWNoYXJnZS5lbnRlci5hbW91bnQiOiJQb3IgZmF2b3IgaW5ncmVzZSBlbCBtb250byBkZSBsYSByZWNhcmdhIiwiUmVjaGFyZ2UudXBsb2FkIjoiU3ViaXIgY2FwdHVyYSBkZSBwYW50YWxsYSBkZSBwYWdvIiwiUmVjaGFyZ2UucGxlYXNlIjoiUG9yIGZhdm9yIHN1YmUgbGEgY2FwdHVyYSBkZSBwYW50YWxsYSBkZWwgcGFnbyIsIlJlY2hhcmdlLnVwbG9hZDEiOiJTdWJpciIsIlJlY2hhcmdlLnN1Ym1pdCI6IkhlIGNvbXBsZXRhZG8gbGEgcmVjYXJnYSIsIlJlY2hhcmdlLnRpcHMiOiJDb25zZWpvcyIsIlJlY2hhcmdlLnRpcHMxIjoiMS4gQ29waWUgbGEgZGlyZWNjacOzbiBkZSBsYSBiaWxsZXRlcmEgVFJDLTIwIHBhcmEgcmVhbGl6YXIgZWwgcGFnbyBlbiBlc3RlIGNlbnRybyBjb21lcmNpYWwuIiwiUmVjaGFyZ2UudGlwczIiOiIyLiBSZWFsaXphciBsYSB0cmFuc2ZlcmVuY2lhIGRlc3B1w6lzIGRlIGxhIHZlcmlmaWNhY2nDs24uIFNpIGNvbWV0byB1biBlcnJvciwgZXN0ZSBjZW50cm8gY29tZXJjaWFsIG5vIGFzdW1pcsOhIHN1IHDDqXJkaWRhLiIsIlJlY2hhcmdlLnRpcHMzIjoiMy4gQ3VhbmRvIHN1IHBhZ28gc2VhIGV4aXRvc28sIGNhcmd1ZSBlbCBjb21wcm9iYW50ZSBkZSBwYWdvLiIsIlJlY2hhcmdlLnRpcHM0IjoiNC4gQ3VhbmRvIGhheWEgdGVybWluYWRvIGNvbiBlc3RvLCBoYWdhIGNsaWMgZW4gOiBIZSBjb21wbGV0YWRvIGVsIHBhZ28uIiwiUmVjaGFyZ2UudGlwczUiOiI1LiBDdWFuZG8gZW5jdWVudHJlIGFsZ8O6biBwcm9ibGVtYSwgYXNlZ8O6cmVzZSBkZSBjb211bmljYXJzZSBjb24gbnVlc3RybyBzZXJ2aWNpbyBkZSBhdGVuY2nDs24gYWwgY2xpZW50ZSBlbiBsw61uZWEgYSB0aWVtcG8gcGFyYSBheXVkYXJsbyBhIHJlc29sdmVybG8uIiwiUmVjaGFyZ2Uuc2VsZWN0IjoiU2VsZWNjacOzbiBkZWwgbcOpdG9kbyBkZSByZWNhcmdhIiwiV2l0aGRyYXcuYmluZC5hZGRyZXNzIjoiUG9yIGZhdm9yIHZpbmN1bGUgbGEgZGlyZWNjacOzbiBkZSBzdSBiaWxsZXRlcmEiLCJXaXRoZHJhdy5iYWxhbmNlIjoiQmFsYW5jZSIsIldpdGhkcmF3LmFtb3VudCI6IkNhbnRpZGFkIGRlIHJldGlybyIsIldpdGhkcmF3LmVudGVyLmFtb3VudCI6IlBvciBmYXZvciBpbmdyZXNlIGVsIG1vbnRvIGRlbCByZXRpcm8iLCJXaXRoZHJhdy5taW4uYW1vdW50IjoiTW9udG8gbcOtbmltbyBkZSByZXRpcm8iLCJXaXRoZHJhdy5wYXkucGFzc3dvcmQiOiJDb250cmFzZcOxYSBkZSBwYWdvIiwiV2l0aGRyYXcuZW50ZXIucGF5LnBhc3N3b3JkIjoiUG9yIGZhdm9yIGluZ3Jlc2UgbGEgY29udHJhc2XDsWEgZGUgcGFnbyIsIldpdGhkcmF3LnN1Ym1pdCI6IkNvbmZpcm1hciIsIldhbGxldC5uZXR3b3JrIjoiUmVkIiwiV2FsbGV0LndhbGxldCI6IkJpbGxldGVyYSIsIldhbGxldC5lbnRlci53YWxsZXQiOiJQb3IgZmF2b3IgaW5ncmVzYSBsYSBiaWxsZXRlcmEiLCJXYWxsZXQucGF5bWVudCI6IlBhZ28iLCJXYWxsZXQuZW50ZXIucGF5bWVudCI6IlBvciBmYXZvciBpbmdyZXNlIGVsIHBhZ28iLCJXYWxsZXQuc3VibWl0IjoiQ29uZmlybWFyIiwiUGFzc3dvcmQub2xkIjoiQ29udHJhc2XDsWEgYW50ZXJpb3IiLCJQYXNzd29yZC5vbGQuZW50ZXIiOiJQb3IgZmF2b3IgaW5ncmVzZSBsYSBjb250cmFzZcOxYSBhbnRlcmlvciIsIlBhc3N3b3JkLm5ldyI6Ik51ZXZhIGNvbnRyYXNlw7FhIiwiUGFzc3dvcmQubmV3LmVudGVyIjoiUG9yIGZhdm9yIGluZ3Jlc2UgdW5hIG51ZXZhIGNvbnRyYXNlw7FhIiwiUGFzc3dvcmQuc3VibWl0IjoiQ29uZmlybWFyIiwiUGF5bWVudC5vbGQiOiJDb250cmFzZcOxYSBhbnRlcmlvciIsIlBheW1lbnQub2xkLmVudGVyIjoiUG9yIGZhdm9yIGluZ3Jlc2UgbGEgY29udHJhc2XDsWEgYW50ZXJpb3IiLCJQYXltZW50Lm5ldyI6Ik51ZXZhIGNvbnRyYXNlw7FhIiwiUGF5bWVudC5uZXcuZW50ZXIiOiJQb3IgZmF2b3IgaW5ncmVzZSB1bmEgbnVldmEgY29udHJhc2XDsWEiLCJQYXltZW50LnN1Ym1pdCI6IkNvbmZpcm1hciIsIlJ1bGUudGl0bGUiOiJSZWdsYSIsIlJ1bGUudGV4dDEiOiJFbCBzZXJ2aWRvciBjb21lcmNpYWwgZGUgbGEgdGllbmRhIFRpa1RvayBlc3TDoSBkaXNlw7FhZG8gcGFyYSBheXVkYXIgYSBsb3MgY29tZXJjaWFudGVzIGEgYXVtZW50YXIgbGEgdmlzaWJpbGlkYWQgZGUgc3VzIHByb2R1Y3RvcywgYXVtZW50YW5kbyBhc8OtIGxhcyB2ZW50YXMgZW4gbGEgdGllbmRhLiIsIlJ1bGUudGV4dDIiOiJVdGlsaXphbW9zIHVuIHNpc3RlbWEgYXV0b21hdGl6YWRvIGJhc2FkbyBlbiBsYSBudWJlIHBhcmEgYXl1ZGFyIGEgY2FkYSB0aWVuZGEgYSBkaXN0cmlidWlyIGxvcyBwZWRpZG9zIGRlIHByb2R1Y3RvcyB5IGdhcmFudGl6YXIgdW4gdHJhdG8ganVzdG8geSBlcXVpdGF0aXZvIGEgY2FkYSBjb21lcmNpYW50ZS4iLCJSdWxlLnRleHQzIjoiTG9zIGFnZW50ZXMgY29tZXJjaWFsZXMgcHVlZGVuIGNvbXBsZXRhciBkZSAxIGEgMyBhY3RpdmlkYWRlcyBkZSBvYnRlbmNpw7NuIGRlIHBlZGlkb3MgdG9kb3MgbG9zIGTDrWFzLiIsIlJ1bGUudGV4dDQiOiJDYWRhIGNhbXBhw7FhIGFwdW50YSBhIDQwIHBlZGlkb3MgZGUgcHJvZHVjdG9zLiIsIlJ1bGUudGV4dDUiOiJBbCBmaW5hbGl6YXIsIHNlcsOhbiByZWNvbXBlbnNhZG9zIOKAi+KAi2NvbiBjb21pc2lvbmVzIHByb3BvcmNpb25hZGFzIHBvciBlbCBjb21lcmNpYW50ZS4iLCJSdWxlLnRleHQ2IjoiU2UgcmVxdWllcmUgcXVlIGxvcyBlbXBsZWFkb3MgY29tcGxldGVuIGxhcyBhY3RpdmlkYWRlcyBkZWwgcGVkaWRvIGRlIG1hbmVyYSBvcG9ydHVuYS4iLCJSdWxlLnRleHQ3IjoiU2kgbm8gY29tcGxldGEgbGFzIHRhcmVhcyBkZSBwZWRpZG8gZGUgcHJvZHVjdG9zIGVzcGVjaWZpY2FkYXMsIG5vIHBvZHLDoSByZXRpcmFyIGRpbmVybyB5IG5vIHBvZHLDoSByZWNpYmlyIHJlY29tcGVuc2FzIGRlIGNvbWlzaW9uZXMuIiwiUnVsZS50ZXh0OCI6IkxsZXZhbW9zIGRvcyBhw7FvcyBhdGVuZGllbmRvIGEgbG9zIGNvbWVyY2lhbnRlcy4iLCJSdWxlLnRleHQ5IjoiRXN0ZSBlcyB1biBhbWJpZW50ZSBkZSB0cmFiYWpvIHNlZ3VybyB5IGVzdGFibGUuIiwiUnVsZS50ZXh0MTAiOiJFbCBwZXJzb25hbCBwdWVkZSB2ZW5pciBhcXXDrSB0b2RvcyBsb3MgZMOtYXMgcGFyYSB0cmFiYWphciBwYXJhIGxvcyBjb21lcmNpYW50ZXMgZHVyYW50ZSBzdXMgZGVzY2Fuc29zLiIsIlJ1bGUudGV4dDExIjoiU2llbXByZSBxdWUgc2lnYSBsYXMgcmVnbGFzIGRlIHBlZGlkbyBkZSBwcm9kdWN0b3MsIGVzdGUgc2Vyw6EgdW4gaW5ncmVzbyBlc3RhYmxlIHBhcmEgdXN0ZWQuIiwiQWJvdXQudGl0bGUiOiJTb2JyZSBub3NvdHJvcyIsIkFib3V0LnRleHQxIjoiQWNlcmNhIGRlIG5vc290cm9zIFRpayBUb2sgc2hvcCBlcyB1bmEgZW1wcmVzYSBkZSBtYXJrZXRpbmcgZW4gY3JlY2ltaWVudG8uIiwiQWJvdXQudGV4dDIiOiJDb21wcm9tZXRpZG8gY29uIGFtcGxpYXIgbG9zIGluZ3Jlc29zIGRlIGxhcyBlbXByZXNhcyBjbGllbnRlcywgZWwgbWFya2V0aW5nIGRlIGNyZWNpbWllbnRvIHV0aWxpemEgZGF0b3MgeSBtw6l0b2RvcyBkaWdpdGFsZXMgcGFyYSBoYWNlciBxdWUgbG9zIHJlc3VsdGFkb3MgZGUgbWFya2V0aW5nIHNlYW4gcHJlZGVjaWJsZXMgeSBtYXhpbWl6YWRvcy4iLCJBYm91dC50ZXh0MyI6IkRlamUgcXVlIHN1cyBnYXN0b3MgZGUgbWFya2V0aW5nIHlhIG5vIHNlIGdhc3RlbiBlbiB1biBwbGFuIGltcHJlZGVjaWJsZSB5IGFtcGzDrWUgZWwgcmV0b3JubyBkZSBsYSBpbnZlcnNpw7NuIGNvbiBnYXN0b3MgbcOtbmltb3MuIEVsIG51ZXZvIG3DqXRvZG8gZGUgbWFya2V0aW5nIHBlcm1pdGUgYSBzdSBlbXByZXNhIHJvbXBlciBlbCBhc2VkaW8geSBjcmVjZXIgZnJlbnRlIGFsIG1lcmNhZG8uIiwiQWJvdXQudGV4dDQiOiJQcm9ibGVtYXMgcXVlIGxhIHRpZW5kYSBUaWsgVG9rIHB1ZWRlIHJlc29sdmVyIDogTGEgYXBsaWNhY2nDs24gbm8gdGllbmUgbmluZ8O6biBlZmVjdG8gZGVzcHXDqXMgZGUgaW5pY2lhcnNlIHkgaGF5IG11eSBwb2NvcyB1c3VhcmlvcyBuYXR1cmFsZXMuIiwiQWJvdXQudGV4dDUiOiJDbGFzaWZpY2FjacOzbiBiYWphIDogTm8gaGF5IHRyZXMgcGFsYWJyYXMgY2xhdmUgcHJpbmNpcGFsZXMgZW4gbGEgY2xhc2lmaWNhY2nDs24geSBsb3MgY2xpZW50ZXMgcG90ZW5jaWFsZXMgbm8gcHVlZGVuIGVuY29udHJhciBsYSBBUExJQ0FDScOTTi4gQ29iZXJ0dXJhIGJhamEgOiBFbCBwZXNvIGdlbmVyYWwgZGUgbGEgYXBsaWNhY2nDs24gZXMgYmFqbywgbG8gcXVlIGRhIGNvbW8gcmVzdWx0YWRvIHVuYSBjb2JlcnR1cmEgZGVmaWNpZW50ZSBkZSBsYXMgcGFsYWJyYXMgY2xhdmUuIiwiQWJvdXQudGV4dDYiOiJDb3N0byBhbHRvIDogRWwgY29zdG8gZGUgY29sb2NhciBwYWxhYnJhcyBjbGF2ZSBkZSBvZmVydGEgZXMgYWx0by4iLCJTdGFydGluZy5iYWxhbmNlIjoiU2FsZG8gYWN0dWFsIiwiU3RhcnRpbmcuaW5jb21lIjoiSW5ncmVzb3MgdG90YWxlcyIsIlN0YXJ0aW5nLm9yZGVyLnRpdGxlIjoiwqFSZXNlcnZhIGNvbXBsZXRhZGEhIiwiU3RhcnRpbmcuc3VibWl0LmJ1dHRvbiI6IkNvaW5jaWRlbmNpYSBhdXRvbcOhdGljYSIsIlN0YXJ0aW5nLnN0ZXBzIjoiTG9zIHBhc29zIiwiU3RhcnRpbmcuc3RlcHMxIjoiMS4gSGFnYSBjbGljIGVuIGVsIGJvdMOzbiBDb2luY2lkZW5jaWEgYXV0b23DoXRpY2EgeSBzaWdhIGxhcyBpbnN0cnVjY2lvbmVzIHBhcmEgY29tcGxldGFyIGxhIHRhcmVhLiIsIlN0YXJ0aW5nLnN0ZXBzMiI6IjIuIERlc3B1w6lzIGRlIGNvbXBsZXRhciBsYSB0YXJlYSwgcHVlZGVzIGxpcXVpZGFyIGxhIGNvbWlzacOzbiBhbCBzYWxkby4iLCJBY2NvdW50LmluZGV4LnBob25lIjoiVGVsw6lmb25vIiwiQWNjb3VudC5pbmRleC5pbnZpdGVfY29kZSI6IkPDs2RpZ28gZGUgaW52aXRhY2nDs24iLCJBY2NvdW50LmluZGV4LmJhbGFuY2UiOiJCYWxhbmNlIiwiQWNjb3VudC5pbmRleC5yZWNoYXJnZSI6IlJlY2FyZ2FyIiwiQWNjb3VudC5pbmRleC53aXRoZHJhd2FsIjoiUmV0aXJvIiwiQWNjb3VudC5pbmRleC5zZXJ2aWNlcyI6IlNlcnZpY2lvcyIsIkFjY291bnQuaW5kZXguZGV0YWlsZWQiOiJEZXRhbGxhZG8iLCJBY2NvdW50LmluZGV4LndhbGxldCI6IkJpbGxldGVyYSIsIkFjY291bnQuaW5kZXgucGFzc3dvcmQiOiJDb250cmFzZcOxYSIsIkFjY291bnQuaW5kZXgucGF5bWVudCI6IlBhZ28iLCJBY2NvdW50LmluZGV4LnJ1bGUiOiJSZWdsYSIsIkFjY291bnQuaW5kZXguYWJvdXQiOiJTb2JyZSBub3NvdHJvcyIsIkFjY291bnQuaW5kZXgubG9nb3V0IjoiQ2VycmFyIHNlc2nDs24iLCJBY2NvdW50LmluZGV4Lm1lc3NhZ2UiOiJNZW5zYWplIiwiTG9naW4udGl0bGUiOiJBY2Nlc28iLCJMb2dpbi50aXBzIjoiUG9yIGZhdm9yLCBpbmdyZXNlIGEgc3UgY3VlbnRhIiwiTG9naW4uZW50ZXIucGhvbmUiOiJQb3IgZmF2b3IgaW50cm9kdWNlIGVsIHRlbMOpZm9ubyIsIkxvZ2luLmVudGVyLnBhc3N3b3JkIjoiUG9yIGZhdm9yLCBpbmdyZXNlIGNvbnRyYXNlw7FhIiwiTG9naW4uZm9yZ2V0Ijoiwr9PbHZpZGFzdGUgbGEgY29udHJhc2XDsWE/IiwiTG9naW4ucmVnaXN0ZXIiOiJSZWfDrXN0cmF0ZSBhaG9yYSIsIlJlZ2lzdGVyLnRpdGxlIjoiUmVnaXN0cm8iLCJSZWdpc3Rlci50aXBzIjoiwr9ZYSB0aWVuZXMgdW5hIGN1ZW50YT8iLCJSZWdpc3Rlci5lbnRlci5waG9uZSI6IlBvciBmYXZvciBpbnRyb2R1Y2UgZWwgdGVsw6lmb25vIiwiUmVnaXN0ZXIuZW50ZXIucGFzc3dvcmQiOiJQb3IgZmF2b3IsIGluZ3Jlc2UgY29udHJhc2XDsWEiLCJSZWdpc3Rlci5lbnRlci5wYXkucGFzc3dvcmQiOiJQb3IgZmF2b3IgaW5ncmVzZSBsYSBjb250cmFzZcOxYSBkZSBwYWdvIGRlIDYgZMOtZ2l0b3MiLCJSZWdpc3Rlci5lbnRlci5pbnZpdGVfY29kZSI6IlBvciBmYXZvciBpbmdyZXNhIGVsIGPDs2RpZ28gZGUgaW52aXRhY2nDs24iLCJSZWdpc3Rlci5yZWFkIjoiTGVlciB5IGFjZXB0YXIiLCJSZWdpc3Rlci5wcml2YWN5IjoiYWN1ZXJkbyBkZSBwcml2YWNpZGFkIiwiUmVnaXN0ZXIuYWdyZWUiOiJQb3IgZmF2b3IgbGVhIHkgYWNlcHRlIGVsIGFjdWVyZG8gZGUgcHJpdmFjaWRhZC4ifX0sIjVjMGIiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGE9bigiYWQzMCIpLGk9bi5uKGEpO2kuYX0sNjg4ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oIjdhODIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXZvaWQgMDtlLmRlZmF1bHQ9e25hdjpbIuS4u+mhtSIsIuiusOW9lSIsIuW8gOWniyIsIuacjeWKoSIsIui0puaItyJdLHJlY29yZHNfbmF2Olsi5YWo6YOoIiwi5o+Q5LqkIiwi5bey5a6M5oiQIiwi5Ya757uTIl0sYmlsbHNfbmF2Olsi5YWo6YOoIiwi5pS25YWlIiwi5pSv5Ye6Il0sIkJhbmsuYWNjb3VudCI6Iui0puaItyIsIkJhbmsuZW50ZXIuYWNjb3VudCI6Iuivt+i+k+WFpei0puaItyIsIkJhbmsudXNlcm5hbWUiOiLnlKjmiLflkI0iLCJCYW5rLmVudGVyLnVzZXJuYW1lIjoi6K+36L6T5YWl55So5oi35ZCNIiwiQmFuay50eXBlIjoi5Zu+54mH57G75Z6LIiwiQmFuay5lbnRlci50eXBlIjoi6K+36YCJ5oup5Zu+54mH57G75Z6LIiwiQmFuay5jcGYiOiJDcGYiLCJCYW5rLmVudGVyLmNwZiI6Iuivt+i+k+WFpSBjcGYiLCJCYW5rLnN1Ym1pdCI6IuehruiupCIsIkJhbmsuYmluZC5iYW5rIjoi6K+357uR5a6a5oKo55qE6ZO26KGMIiwiQ29tbW9uLmxvYWRpbmciOiLliqDovb3kuK0uLi4iLCJDb21tb24ubm9fZGF0YSI6IuaaguaXoOiusOW9lSIsIkNvbW1vbi5jb3B5Ijoi5aSN5Yi2IiwiQ29tbW9uLnNpZ24iOiLnrb7liLAiLCJDb21tb24uY3JlZGl0X3Njb3JlIjoi5L+h55So5YiGIiwiSW5kZXguY29tbW9kaXRpZXMiOiLllYblk4EiLCJJbmRleC5hYm91dCI6IuWFs+S6juaIkeS7rCIsIkluZGV4LmNvbXBhbnkiOiLmiJDplb/okKXplIDlhazlj7giLCJJbmRleC5pbnRyb2R1Y3Rpb24iOiLngrnlh7vmn6XnnIvku4vnu40iLCJJbmRleC5jb21taXNzaW9uIjoi5L2j6YeRIiwiSW5kZXguZ2V0Ijoi6I635b6X5L2j6YeRIiwiT3JkZXIudG90YWxfdmFsdWUiOiLmgLvku7flgLwiLCJPcmRlci5jb21taXNzaW9uIjoi5L2j6YeRIiwiT3JkZXIuc3VibWl0Ijoi5o+Q5LqkIiwiT3JkZXIudGltZSI6IuiuouWNleaXtumXtCIsIk9yZGVyLm51bWJlciI6IuiuouWNleWPtyIsIk9yZGVyLnRvdGFsIjoi6K6i5Y2V5oC76aKdIiwiT3JkZXIuZXhwZWN0ZWQiOiLpooTmnJ/mlLbnm4oiLCJSZWNoYXJnZS5iYWxhbmNlIjoi5L2Z6aKdIiwiUmVjaGFyZ2UuYWRkcmVzcyI6IuWFheWAvOWcsOWdgCIsIlJlY2hhcmdlLmFtb3VudCI6IuWFheWAvOmHkeminSIsIlJlY2hhcmdlLmVudGVyLmFtb3VudCI6Iuivt+i+k+WFpeWFheWAvOmHkeminSIsIlJlY2hhcmdlLnVwbG9hZCI6IuS4iuS8oOS7mOasvuaIquWbviIsIlJlY2hhcmdlLnBsZWFzZSI6Iuivt+S4iuS8oOS7mOasvuaIquWbviIsIlJlY2hhcmdlLnVwbG9hZDEiOiLkuIrkvKAiLCJSZWNoYXJnZS5zdWJtaXQiOiLmiJHlt7LlrozmiJDlhYXlgLwiLCJSZWNoYXJnZS50aXBzIjoi5rip6aao5o+Q56S6IiwiUmVjaGFyZ2UudGlwczEiOiIxLuivt+WkjeWItuacrOWVhuWfjuaUr+S7mOeUqOeahFRSQy0yMOmSseWMheWcsOWdgOOAgiIsIlJlY2hhcmdlLnRpcHMyIjoiMi7moLjlrp7ml6Dor6/lkI7ov5vooYzovazotKbvvIzlpoLmiJHmlrnmk43kvZzlpLHor6/vvIzmnKzllYbln47kuI3mib/mi4XmgqjnmoTmjZ/lpLHjgIIiLCJSZWNoYXJnZS50aXBzMyI6IjMu5b2T5oKo5pSv5LuY5oiQ5Yqf5ZCO77yM6K+35LiK5Lyg5pSv5LuY5Yet6K+B44CCIiwiUmVjaGFyZ2UudGlwczQiOiI0LuW9k+aCqOWujOaIkOS4iui/sOaTjeS9nOWQju+8jOeCueWHuzrmiJHlt7LlrozmiJDmlK/ku5jjgIIiLCJSZWNoYXJnZS50aXBzNSI6IjUu5b2T5oKo6YGH5Yiw5Lu75L2V6Zeu6aKY5pe277yM6K+35Yqh5b+F5Y+K5pe26IGU57O75oiR5Lus55qE5Zyo57q/5a6i5pyN77yM5oiR5Lus5bCG5biu5Yqp5oKo6Kej5Yaz44CCIiwiUmVjaGFyZ2Uuc2VsZWN0Ijoi6K+36YCJ5oup5YWF5YC85pa55byPIiwiV2l0aGRyYXcuYmluZC5hZGRyZXNzIjoi6K+357uR5a6a5oKo55qE6ZKx5YyF5Zyw5Z2AIiwiV2l0aGRyYXcuYmFsYW5jZSI6IuS9meminSIsIldpdGhkcmF3LmFtb3VudCI6IuaPkOeOsOmHkeminSIsIldpdGhkcmF3LmVudGVyLmFtb3VudCI6Iuivt+i+k+WFpeaPkOeOsOmHkeminSIsIldpdGhkcmF3Lm1pbi5hbW91bnQiOiLmnIDkvY7mj5DnjrDph5Hpop0iLCJXaXRoZHJhdy5wYXkucGFzc3dvcmQiOiLmlK/ku5jlr4bnoIEiLCJXaXRoZHJhdy5lbnRlci5wYXkucGFzc3dvcmQiOiLor7fovpPlhaXmlK/ku5jlr4bnoIEiLCJXaXRoZHJhdy5zdWJtaXQiOiLnoa7orqQiLCJXYWxsZXQubmV0d29yayI6Iue9kee7nCIsIldhbGxldC53YWxsZXQiOiLpkrHljIUiLCJXYWxsZXQuZW50ZXIud2FsbGV0Ijoi6K+36L6T5YWl6ZKx5YyFIiwiV2FsbGV0LnBheW1lbnQiOiLku5jmrL4iLCJXYWxsZXQuZW50ZXIucGF5bWVudCI6Iuivt+i+k+WFpeS7mOasviIsIldhbGxldC5zdWJtaXQiOiLnoa7orqQiLCJQYXNzd29yZC5vbGQiOiLml6flr4bnoIEiLCJQYXNzd29yZC5vbGQuZW50ZXIiOiLor7fovpPlhaXml6flr4bnoIEiLCJQYXNzd29yZC5uZXciOiLmlrDlr4bnoIEiLCJQYXNzd29yZC5uZXcuZW50ZXIiOiLor7fovpPlhaXmlrDlr4bnoIEiLCJQYXNzd29yZC5zdWJtaXQiOiLnoa7orqQiLCJQYXltZW50Lm9sZCI6IuaXp+WvhueggSIsIlBheW1lbnQub2xkLmVudGVyIjoi6K+36L6T5YWl5pen5a+G56CBIiwiUGF5bWVudC5uZXciOiLmlrDlr4bnoIEiLCJQYXltZW50Lm5ldy5lbnRlciI6Iuivt+i+k+WFpeaWsOWvhueggSIsIlBheW1lbnQuc3VibWl0Ijoi56Gu6K6kIiwiUnVsZS50aXRsZSI6IuinhOWImSIsIlJ1bGUudGV4dDEiOiLmipbpn7PlsI/lupfllYblrrbmnI3liqHlmajml6jlnKjluK7liqnllYblrrbmj5Dpq5jkuqflk4Hmm53lhYnluqbvvIzku47ogIzmj5Dpq5jlupfpk7rplIDph4/jgIIiLCJSdWxlLnRleHQyIjoi5oiR5Lus6YeH55So6Ieq5Yqo5YyW5LqR56uv57O757uf5biu5Yqp5ZCE5bqX6ZO65YiG5Y+R5Lqn5ZOB6K6i5Y2V77yM56Gu5L+d5YWs5bmz5YWs5q2j5a+55b6F5q+P5L2N5ZWG5a6244CCIiwiUnVsZS50ZXh0MyI6IuWVhuWutuS7o+eQhuavj+WkqeWPr+WujOaIkDEtM+asoeaKouWNlea0u+WKqOOAgiIsIlJ1bGUudGV4dDQiOiLmr4/mrKHmtLvliqjku6U0MOS4quS6p+WTgeiuouWNleS4uuebruagh+OAgiIsIlJ1bGUudGV4dDUiOiLlrozmiJDlkI7lsIbojrflvpfllYblrrbmj5DkvpvnmoTkvaPph5HlpZblirHjgIIiLCJSdWxlLnRleHQ2Ijoi5ZGY5bel6ZyA5oyJ5pe25a6M5oiQ6K6i5Y2V5rS75Yqo44CCIiwiUnVsZS50ZXh0NyI6IuWmguacquWujOaIkOinhOWumueahOS6p+WTgeiuouWNleS7u+WKoe+8jOWwhuaXoOazleaPkOeOsO+8jOS5n+aXoOazleiOt+W+l+S9o+mHkeWlluWKseOAgiIsIlJ1bGUudGV4dDgiOiLmiJHku6zmnI3liqHllYblrrblt7Lnu4/kuKTlubTkuobvvIwiLCJSdWxlLnRleHQ5Ijoi6L+Z5piv5LiA5Liq5a6J5YWo56iz5a6a55qE5bel5L2c546v5aKD77yMIiwiUnVsZS50ZXh0MTAiOiLlkZjlt6XkvJHmga/ml7bpl7Tlj6/ku6Xmr4/lpKnov4fmnaXkuLrllYblrrblt6XkvZzvvIwiLCJSdWxlLnRleHQxMSI6IuWPquimgeS9oOmBteWuiOS6p+WTgeS4i+WNleinhOWIme+8jOi/meWwhuaYr+S9oOeos+WumueahOaUtuWFpeOAgiIsIkFib3V0LnRpdGxlIjoi5YWz5LqO5oiR5LusIiwiQWJvdXQudGV4dDEiOiLlhbPkuo7miJHku6zmipbpn7PlsI/lupfmmK/kuIDlrrblop7plb/okKXplIDlhazlj7jvvIwiLCJBYm91dC50ZXh0MiI6IuiHtOWKm+S6juaJqeWkp+WuouaIt+S8geS4muaUtuebiu+8jOWinumVv+iQpemUgOeUqOaVsOaNruWSjOaVsOWtl+WMlueahOaWueW8j+iuqeiQpemUgOaViOaenOWPr+mihOa1i+OAgeacgOWkp+WMluOAgiIsIkFib3V0LnRleHQzIjoi6K6p5L2g55qE6JCl6ZSA6LS555So5LiN5YaN6Iqx5Zyo5LiN5Y+v6aKE5rWL55qE5pa55qGI5LiK77yM55So5pyA5bCP55qE5byA5pSv5omp5aSn5oqV6LWE5Zue5oql546H77yM5paw55qE6JCl6ZSA5pa55byP6K6p5L2g55qE5LyB5Lia56qB5Zu06ICM5Ye677yM6YCG5biC5aKe6ZW/44CCIiwiQWJvdXQudGV4dDQiOiLmipbpn7PlsI/lupfog73op6PlhrPnmoTpl67popg6QVBQ5LiK57q/5ZCO5rKh5pWI5p6c77yM6Ieq54S255So5oi35p6B5bCR44CCIiwiQWJvdXQudGV4dDUiOiLmjpLlkI3kvY465o6S5ZCN5rKh5pyJ5YmN5LiJ55qE5YWz6ZSu6K+N77yM5r2c5Zyo5a6i5oi35om+5LiN5YiwQVBQ44CC6KaG55uW546H5L2OOkFQUOaVtOS9k+adg+mHjeS9ju+8jOWvvOiHtOWFs+mUruivjeimhueblueOh+W3ruOAgiIsIkFib3V0LnRleHQ2Ijoi5oiQ5pys6auYOuaKleaUvuernuS7t+WFs+mUruivjeaIkOacrOmrmOOAgiIsIlN0YXJ0aW5nLmJhbGFuY2UiOiLlvZPliY3kvZnpop0iLCJTdGFydGluZy5pbmNvbWUiOiLmgLvmlLbnm4oiLCJTdGFydGluZy5vcmRlci50aXRsZSI6IumihOiuouWujOaIkO+8gSIsIlN0YXJ0aW5nLnN1Ym1pdC5idXR0b24iOiLoh6rliqjljLnphY0iLCJTdGFydGluZy5zdGVwcyI6IuaTjeS9nOatpemqpCIsIlN0YXJ0aW5nLnN0ZXBzMSI6IjEu54K55Ye7IOiHquWKqOWMuemFjSDmjInpkq7vvIzmjInnhafmj5DnpLrlrozmiJDku7vliqHjgIIiLCJTdGFydGluZy5zdGVwczIiOiIyLuWujOaIkOS7u+WKoeWQjuWNs+WPr+WwhuS9o+mHkee7k+eul+iHs+S9meminSIsIkFjY291bnQuaW5kZXgucGhvbmUiOiLnlLXor50iLCJBY2NvdW50LmluZGV4Lmludml0ZV9jb2RlIjoi6YKA6K+356CBIiwiQWNjb3VudC5pbmRleC5iYWxhbmNlIjoi5L2Z6aKdIiwiQWNjb3VudC5pbmRleC5yZWNoYXJnZSI6IuWFheWAvCIsIkFjY291bnQuaW5kZXgud2l0aGRyYXdhbCI6IuaPkOeOsCIsIkFjY291bnQuaW5kZXguc2VydmljZXMiOiLmnI3liqEiLCJBY2NvdW50LmluZGV4LmRldGFpbGVkIjoi6K+m5oOFIiwiQWNjb3VudC5pbmRleC53YWxsZXQiOiLpkrHljIUiLCJBY2NvdW50LmluZGV4LnBhc3N3b3JkIjoi5a+G56CBIiwiQWNjb3VudC5pbmRleC5wYXltZW50Ijoi5pSv5LuYIiwiQWNjb3VudC5pbmRleC5ydWxlIjoi6KeE5YiZIiwiQWNjb3VudC5pbmRleC5hYm91dCI6IuWFs+S6juaIkeS7rCIsIkFjY291bnQuaW5kZXgubG9nb3V0Ijoi6YCA5Ye6IiwiQWNjb3VudC5pbmRleC5tZXNzYWdlIjoi5raI5oGvIiwiTG9naW4udGl0bGUiOiLnmbvlvZUiLCJMb2dpbi50aXBzIjoi6K+355m75b2V5oKo55qE6LSm5oi3IiwiTG9naW4uZW50ZXIucGhvbmUiOiLor7fovpPlhaXnlLXor50iLCJMb2dpbi5lbnRlci5wYXNzd29yZCI6Iuivt+i+k+WFpeWvhueggSIsIkxvZ2luLmZvcmdldCI6IuW/mOiusOWvhuegge+8nyIsIkxvZ2luLnJlZ2lzdGVyIjoi56uL5Y2z5rOo5YaMIiwiUmVnaXN0ZXIudGl0bGUiOiLms6jlhowiLCJSZWdpc3Rlci50aXBzIjoi5bey5pyJ6LSm5oi377yfIiwiUmVnaXN0ZXIuZW50ZXIucGhvbmUiOiLor7fovpPlhaXnlLXor50iLCJSZWdpc3Rlci5lbnRlci5wYXNzd29yZCI6Iuivt+i+k+WFpeWvhueggSIsIlJlZ2lzdGVyLmVudGVyLnBheS5wYXNzd29yZCI6Iuivt+i+k+WFpTbkvY3mlK/ku5jlr4bnoIEiLCJSZWdpc3Rlci5lbnRlci5pbnZpdGVfY29kZSI6Iuivt+i+k+WFpemCgOivt+eggSIsIlJlZ2lzdGVyLnJlYWQiOiLlt7LpmIXor7vlubblkIzmhI8iLCJSZWdpc3Rlci5wcml2YWN5Ijoi6ZqQ56eB5Y2P6K6uIiwiUmVnaXN0ZXIuYWdyZWUiOiLor7fpmIXor7vlubblkIzmhI/pmpDnp4HljY/orq4ifX0sIjZjZGMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe3ZhciBlPW4oIjRlYTQiKS5kZWZhdWx0O24oIjEzZDUiKSxuKCJlOWY1IiksbigiOTQ4NSIpLG4oImQzYjciKSxuKCJhYzFmIiksbigiNTMxOSIpO3ZhciBhPWUobigiZTE0MyIpKSxpPXtrZXlzOmZ1bmN0aW9uKCl7cmV0dXJuW119fTt0WyJfX19fRTZGRTczN19fX18iXT0hMCxkZWxldGUgdFsiX19fX0U2RkU3MzdfX19fIl0sdC5fX3VuaUNvbmZpZz17dGFiQmFyOntjb2xvcjoiI2ZmZmZmZiIsc2VsZWN0ZWRDb2xvcjoiIzVjYWRmZiIsYmFja2dyb3VuZENvbG9yOiIjMDAwMDAwIixjdXN0b206ITAsbGlzdDpbXX0sZWFzeWNvbTp7Il51LSguKikiOiJ1dmlldy11aS9jb21wb25lbnRzL3UtJDEvdS0kMS52dWUiLCJedW5pY2xvdWQtZGIkIjoiQGRjbG91ZGlvL3VuaS1jbGktc2hhcmVkL2NvbXBvbmVudHMvdW5pY2xvdWQtZGIudnVlIiwiXnVuaWFkJCI6IkBkY2xvdWRpby91bmktY2xpLXNoYXJlZC9jb21wb25lbnRzL3VuaWFkLnZ1ZSIsIl5hZC1yZXdhcmRlZC12aWRlbyQiOiJAZGNsb3VkaW8vdW5pLWNsaS1zaGFyZWQvY29tcG9uZW50cy9hZC1yZXdhcmRlZC12aWRlby52dWUiLCJeYWQtZnVsbHNjcmVlbi12aWRlbyQiOiJAZGNsb3VkaW8vdW5pLWNsaS1zaGFyZWQvY29tcG9uZW50cy9hZC1mdWxsc2NyZWVuLXZpZGVvLnZ1ZSIsIl5hZC1pbnRlcnN0aXRpYWwkIjoiQGRjbG91ZGlvL3VuaS1jbGktc2hhcmVkL2NvbXBvbmVudHMvYWQtaW50ZXJzdGl0aWFsLnZ1ZSIsIl5hZC1pbnRlcmFjdGl2ZSQiOiJAZGNsb3VkaW8vdW5pLWNsaS1zaGFyZWQvY29tcG9uZW50cy9hZC1pbnRlcmFjdGl2ZS52dWUiLCJecGFnZS1tZXRhJCI6IkBkY2xvdWRpby91bmktY2xpLXNoYXJlZC9jb21wb25lbnRzL3BhZ2UtbWV0YS52dWUiLCJebmF2aWdhdGlvbi1iYXIkIjoiQGRjbG91ZGlvL3VuaS1jbGktc2hhcmVkL2NvbXBvbmVudHMvbmF2aWdhdGlvbi1iYXIudnVlIiwiXnVuaS1tYXRjaC1tZWRpYSQiOiJAZGNsb3VkaW8vdW5pLWNsaS1zaGFyZWQvY29tcG9uZW50cy91bmktbWF0Y2gtbWVkaWEudnVlIn0sZ2xvYmFsU3R5bGU6e25hdmlnYXRpb25CYXJUZXh0U3R5bGU6ImJsYWNrIixuYXZpZ2F0aW9uQmFyVGl0bGVUZXh0OiJNYWxsIixuYXZpZ2F0aW9uQmFyQmFja2dyb3VuZENvbG9yOiIjRjhGOEY4IixiYWNrZ3JvdW5kQ29sb3I6IiNGOEY4RjgifX0sdC5fX3VuaUNvbmZpZy5jb21waWxlclZlcnNpb249IjQuNzYiLHQuX191bmlDb25maWcuZGFya21vZGU9ITEsdC5fX3VuaUNvbmZpZy50aGVtZUNvbmZpZz17fSx0Ll9fdW5pQ29uZmlnLnVuaVBsYXRmb3JtPSJoNSIsdC5fX3VuaUNvbmZpZy5hcHBJZD0iX19VTklfX0U2RkU3MzciLHQuX191bmlDb25maWcuYXBwTmFtZT0iVGlrVG9rIFNob3AiLHQuX191bmlDb25maWcuYXBwVmVyc2lvbj0iMS4wLjAiLHQuX191bmlDb25maWcuYXBwVmVyc2lvbkNvZGU9IjEwMCIsdC5fX3VuaUNvbmZpZy5yb3V0ZXI9e21vZGU6Imhhc2giLGJhc2U6Ii9oNS8ifSx0Ll9fdW5pQ29uZmlnLnB1YmxpY1BhdGg9Ii9oNS8iLHQuX191bmlDb25maWdbImFzeW5jIl09e2xvYWRpbmc6IkFzeW5jTG9hZGluZyIsZXJyb3I6IkFzeW5jRXJyb3IiLGRlbGF5OjIwMCx0aW1lb3V0OjZlNH0sdC5fX3VuaUNvbmZpZy5kZWJ1Zz0hMSx0Ll9fdW5pQ29uZmlnLm5ldHdvcmtUaW1lb3V0PXtyZXF1ZXN0OjZlNCxjb25uZWN0U29ja2V0OjZlNCx1cGxvYWRGaWxlOjZlNCxkb3dubG9hZEZpbGU6NmU0fSx0Ll9fdW5pQ29uZmlnLnNka0NvbmZpZ3M9e30sdC5fX3VuaUNvbmZpZy5xcU1hcEtleT12b2lkIDAsdC5fX3VuaUNvbmZpZy5nb29nbGVNYXBLZXk9dm9pZCAwLHQuX191bmlDb25maWcuYU1hcEtleT12b2lkIDAsdC5fX3VuaUNvbmZpZy5hTWFwU2VjdXJpdHlKc0NvZGU9dm9pZCAwLHQuX191bmlDb25maWcuYU1hcFNlcnZpY2VIb3N0PXZvaWQgMCx0Ll9fdW5pQ29uZmlnLmxvY2FsZT0iIix0Ll9fdW5pQ29uZmlnLmZhbGxiYWNrTG9jYWxlPXZvaWQgMCx0Ll9fdW5pQ29uZmlnLmxvY2FsZXM9aS5rZXlzKCkucmVkdWNlKChmdW5jdGlvbih0LGUpe3ZhciBuPWUucmVwbGFjZSgvXC5cLyh1bmktYXBwLik/KC4qKS5qc29uLywiJDIiKSxhPWkoZSk7cmV0dXJuIE9iamVjdC5hc3NpZ24odFtuXXx8KHRbbl09e30pLGEuY29tbW9ufHxhKSx0fSkse30pLHQuX191bmlDb25maWcubnZ1ZT17ImZsZXgtZGlyZWN0aW9uIjoiY29sdW1uIn0sdC5fX3VuaUNvbmZpZy5fX3dlYnBhY2tfY2h1bmtfbG9hZF9fPW4uZSxhLmRlZmF1bHQuY29tcG9uZW50KCJwYWdlcy1ob21lLWluZGV4IiwoZnVuY3Rpb24odCl7dmFyIGU9e2NvbXBvbmVudDpQcm9taXNlLmFsbChbbi5lKCJwYWdlcy1kZXRhaWxzWS1pbmRleH5wYWdlcy1ob21lLWluZGV4fnBhZ2VzLXBlcmtoaWRtYXRhLXBlcmtoaWRtYXRhfnBhZ2VzLXN0YXJ0LXN0YXJ0fnBhZ2VzLXVzZXItdXNlciIpLG4uZSgicGFnZXMtaG9tZS1pbmRleCIpXSkudGhlbihmdW5jdGlvbigpe3JldHVybiB0KG4oImY1YjgiKSl9LmJpbmQobnVsbCxuKSkuY2F0Y2gobi5vZSksZGVsYXk6X191bmlDb25maWdbImFzeW5jIl0uZGVsYXksdGltZW91dDpfX3VuaUNvbmZpZ1siYXN5bmMiXS50aW1lb3V0fTtyZXR1cm4gX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSYmKGUubG9hZGluZz17bmFtZToiU3lzdGVtQXN5bmNMb2FkaW5nIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSl9fSksX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0mJihlLmVycm9yPXtuYW1lOiJTeXN0ZW1Bc3luY0Vycm9yIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0pfX0pLGV9KSksYS5kZWZhdWx0LmNvbXBvbmVudCgicGFnZXMtZGV0YWlsc1ktaW5kZXgiLChmdW5jdGlvbih0KXt2YXIgZT17Y29tcG9uZW50OlByb21pc2UuYWxsKFtuLmUoInBhZ2VzLWFjY291bnQtYmlsbHN+cGFnZXMtYWNjb3VudC1pbmRleH5wYWdlcy1hY2NvdW50LW1lc3NhZ2V+cGFnZXMtYWNjb3VudC1wYXNzd29yZH5wYWdlcy1hY2NvdW50LXB+ZGQ2NzBlNjAiKSxuLmUoInBhZ2VzLWRldGFpbHNZLWluZGV4fnBhZ2VzLWhvbWUtaW5kZXh+cGFnZXMtcGVya2hpZG1hdGEtcGVya2hpZG1hdGF+cGFnZXMtc3RhcnQtc3RhcnR+cGFnZXMtdXNlci11c2VyIiksbi5lKCJwYWdlcy1kZXRhaWxzWS1pbmRleCIpXSkudGhlbihmdW5jdGlvbigpe3JldHVybiB0KG4oIjg4NWIiKSl9LmJpbmQobnVsbCxuKSkuY2F0Y2gobi5vZSksZGVsYXk6X191bmlDb25maWdbImFzeW5jIl0uZGVsYXksdGltZW91dDpfX3VuaUNvbmZpZ1siYXN5bmMiXS50aW1lb3V0fTtyZXR1cm4gX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSYmKGUubG9hZGluZz17bmFtZToiU3lzdGVtQXN5bmNMb2FkaW5nIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSl9fSksX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0mJihlLmVycm9yPXtuYW1lOiJTeXN0ZW1Bc3luY0Vycm9yIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0pfX0pLGV9KSksYS5kZWZhdWx0LmNvbXBvbmVudCgicGFnZXMtcGVya2hpZG1hdGEtcGVya2hpZG1hdGEiLChmdW5jdGlvbih0KXt2YXIgZT17Y29tcG9uZW50OlByb21pc2UuYWxsKFtuLmUoInBhZ2VzLWRldGFpbHNZLWluZGV4fnBhZ2VzLWhvbWUtaW5kZXh+cGFnZXMtcGVya2hpZG1hdGEtcGVya2hpZG1hdGF+cGFnZXMtc3RhcnQtc3RhcnR+cGFnZXMtdXNlci11c2VyIiksbi5lKCJwYWdlcy1wZXJraGlkbWF0YS1wZXJraGlkbWF0YSIpXSkudGhlbihmdW5jdGlvbigpe3JldHVybiB0KG4oIjI1MjgiKSl9LmJpbmQobnVsbCxuKSkuY2F0Y2gobi5vZSksZGVsYXk6X191bmlDb25maWdbImFzeW5jIl0uZGVsYXksdGltZW91dDpfX3VuaUNvbmZpZ1siYXN5bmMiXS50aW1lb3V0fTtyZXR1cm4gX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSYmKGUubG9hZGluZz17bmFtZToiU3lzdGVtQXN5bmNMb2FkaW5nIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSl9fSksX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0mJihlLmVycm9yPXtuYW1lOiJTeXN0ZW1Bc3luY0Vycm9yIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0pfX0pLGV9KSksYS5kZWZhdWx0LmNvbXBvbmVudCgicGFnZXMtc3RhcnQtc3RhcnQiLChmdW5jdGlvbih0KXt2YXIgZT17Y29tcG9uZW50OlByb21pc2UuYWxsKFtuLmUoInBhZ2VzLWRldGFpbHNZLWluZGV4fnBhZ2VzLWhvbWUtaW5kZXh+cGFnZXMtcGVya2hpZG1hdGEtcGVya2hpZG1hdGF+cGFnZXMtc3RhcnQtc3RhcnR+cGFnZXMtdXNlci11c2VyIiksbi5lKCJwYWdlcy1zdGFydC1zdGFydCIpXSkudGhlbihmdW5jdGlvbigpe3JldHVybiB0KG4oIjEwY2QiKSl9LmJpbmQobnVsbCxuKSkuY2F0Y2gobi5vZSksZGVsYXk6X191bmlDb25maWdbImFzeW5jIl0uZGVsYXksdGltZW91dDpfX3VuaUNvbmZpZ1siYXN5bmMiXS50aW1lb3V0fTtyZXR1cm4gX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSYmKGUubG9hZGluZz17bmFtZToiU3lzdGVtQXN5bmNMb2FkaW5nIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSl9fSksX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0mJihlLmVycm9yPXtuYW1lOiJTeXN0ZW1Bc3luY0Vycm9yIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0pfX0pLGV9KSksYS5kZWZhdWx0LmNvbXBvbmVudCgicGFnZXMtdXNlci11c2VyIiwoZnVuY3Rpb24odCl7dmFyIGU9e2NvbXBvbmVudDpQcm9taXNlLmFsbChbbi5lKCJwYWdlcy1kZXRhaWxzWS1pbmRleH5wYWdlcy1ob21lLWluZGV4fnBhZ2VzLXBlcmtoaWRtYXRhLXBlcmtoaWRtYXRhfnBhZ2VzLXN0YXJ0LXN0YXJ0fnBhZ2VzLXVzZXItdXNlciIpLG4uZSgicGFnZXMtdXNlci11c2VyIildKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQobigiMzNhOSIpKX0uYmluZChudWxsLG4pKS5jYXRjaChuLm9lKSxkZWxheTpfX3VuaUNvbmZpZ1siYXN5bmMiXS5kZWxheSx0aW1lb3V0Ol9fdW5pQ29uZmlnWyJhc3luYyJdLnRpbWVvdXR9O3JldHVybiBfX3VuaUNvbmZpZ1siYXN5bmMiXVsibG9hZGluZyJdJiYoZS5sb2FkaW5nPXtuYW1lOiJTeXN0ZW1Bc3luY0xvYWRpbmciLHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChfX3VuaUNvbmZpZ1siYXN5bmMiXVsibG9hZGluZyJdKX19KSxfX3VuaUNvbmZpZ1siYXN5bmMiXVsiZXJyb3IiXSYmKGUuZXJyb3I9e25hbWU6IlN5c3RlbUFzeW5jRXJyb3IiLHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChfX3VuaUNvbmZpZ1siYXN5bmMiXVsiZXJyb3IiXSl9fSksZX0pKSxhLmRlZmF1bHQuY29tcG9uZW50KCJwYWdlcy1leGNoYW5nZS1leGNoYW5nZSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXtjb21wb25lbnQ6bi5lKCJwYWdlcy1leGNoYW5nZS1leGNoYW5nZSIpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdChuKCJlMzI1IikpfS5iaW5kKG51bGwsbikpLmNhdGNoKG4ub2UpLGRlbGF5Ol9fdW5pQ29uZmlnWyJhc3luYyJdLmRlbGF5LHRpbWVvdXQ6X191bmlDb25maWdbImFzeW5jIl0udGltZW91dH07cmV0dXJuIF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0mJihlLmxvYWRpbmc9e25hbWU6IlN5c3RlbUFzeW5jTG9hZGluZyIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0pfX0pLF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdJiYoZS5lcnJvcj17bmFtZToiU3lzdGVtQXN5bmNFcnJvciIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdKX19KSxlfSkpLGEuZGVmYXVsdC5jb21wb25lbnQoInBhZ2VzLXBsYXRmb3JtLXBsYXRmb3JtIiwoZnVuY3Rpb24odCl7dmFyIGU9e2NvbXBvbmVudDpuLmUoInBhZ2VzLXBsYXRmb3JtLXBsYXRmb3JtIikudGhlbihmdW5jdGlvbigpe3JldHVybiB0KG4oIjhiOTQiKSl9LmJpbmQobnVsbCxuKSkuY2F0Y2gobi5vZSksZGVsYXk6X191bmlDb25maWdbImFzeW5jIl0uZGVsYXksdGltZW91dDpfX3VuaUNvbmZpZ1siYXN5bmMiXS50aW1lb3V0fTtyZXR1cm4gX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSYmKGUubG9hZGluZz17bmFtZToiU3lzdGVtQXN5bmNMb2FkaW5nIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSl9fSksX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0mJihlLmVycm9yPXtuYW1lOiJTeXN0ZW1Bc3luY0Vycm9yIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0pfX0pLGV9KSksYS5kZWZhdWx0LmNvbXBvbmVudCgicGFnZXMtc2V0dGluZ3Mtc2V0dGluZ3MiLChmdW5jdGlvbih0KXt2YXIgZT17Y29tcG9uZW50Om4uZSgicGFnZXMtc2V0dGluZ3Mtc2V0dGluZ3MiKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQobigiYjY1MyIpKX0uYmluZChudWxsLG4pKS5jYXRjaChuLm9lKSxkZWxheTpfX3VuaUNvbmZpZ1siYXN5bmMiXS5kZWxheSx0aW1lb3V0Ol9fdW5pQ29uZmlnWyJhc3luYyJdLnRpbWVvdXR9O3JldHVybiBfX3VuaUNvbmZpZ1siYXN5bmMiXVsibG9hZGluZyJdJiYoZS5sb2FkaW5nPXtuYW1lOiJTeXN0ZW1Bc3luY0xvYWRpbmciLHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChfX3VuaUNvbmZpZ1siYXN5bmMiXVsibG9hZGluZyJdKX19KSxfX3VuaUNvbmZpZ1siYXN5bmMiXVsiZXJyb3IiXSYmKGUuZXJyb3I9e25hbWU6IlN5c3RlbUFzeW5jRXJyb3IiLHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChfX3VuaUNvbmZpZ1siYXN5bmMiXVsiZXJyb3IiXSl9fSksZX0pKSxhLmRlZmF1bHQuY29tcG9uZW50KCJwYWdlcy1yZWNvcmQtcmVjb3JkIiwoZnVuY3Rpb24odCl7dmFyIGU9e2NvbXBvbmVudDpuLmUoInBhZ2VzLXJlY29yZC1yZWNvcmQiKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQobigiNDJmNCIpKX0uYmluZChudWxsLG4pKS5jYXRjaChuLm9lKSxkZWxheTpfX3VuaUNvbmZpZ1siYXN5bmMiXS5kZWxheSx0aW1lb3V0Ol9fdW5pQ29uZmlnWyJhc3luYyJdLnRpbWVvdXR9O3JldHVybiBfX3VuaUNvbmZpZ1siYXN5bmMiXVsibG9hZGluZyJdJiYoZS5sb2FkaW5nPXtuYW1lOiJTeXN0ZW1Bc3luY0xvYWRpbmciLHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChfX3VuaUNvbmZpZ1siYXN5bmMiXVsibG9hZGluZyJdKX19KSxfX3VuaUNvbmZpZ1siYXN5bmMiXVsiZXJyb3IiXSYmKGUuZXJyb3I9e25hbWU6IlN5c3RlbUFzeW5jRXJyb3IiLHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChfX3VuaUNvbmZpZ1siYXN5bmMiXVsiZXJyb3IiXSl9fSksZX0pKSxhLmRlZmF1bHQuY29tcG9uZW50KCJwYWdlcy1ydWxlcy1ydWxlcyIsKGZ1bmN0aW9uKHQpe3ZhciBlPXtjb21wb25lbnQ6bi5lKCJwYWdlcy1ydWxlcy1ydWxlcyIpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdChuKCJlMTNhIikpfS5iaW5kKG51bGwsbikpLmNhdGNoKG4ub2UpLGRlbGF5Ol9fdW5pQ29uZmlnWyJhc3luYyJdLmRlbGF5LHRpbWVvdXQ6X191bmlDb25maWdbImFzeW5jIl0udGltZW91dH07cmV0dXJuIF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0mJihlLmxvYWRpbmc9e25hbWU6IlN5c3RlbUFzeW5jTG9hZGluZyIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0pfX0pLF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdJiYoZS5lcnJvcj17bmFtZToiU3lzdGVtQXN5bmNFcnJvciIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdKX19KSxlfSkpLGEuZGVmYXVsdC5jb21wb25lbnQoInBhZ2VzLXBhc3N3b3JkLWxvZ2luIiwoZnVuY3Rpb24odCl7dmFyIGU9e2NvbXBvbmVudDpuLmUoInBhZ2VzLXBhc3N3b3JkLWxvZ2luIikudGhlbihmdW5jdGlvbigpe3JldHVybiB0KG4oIjM2YWMiKSl9LmJpbmQobnVsbCxuKSkuY2F0Y2gobi5vZSksZGVsYXk6X191bmlDb25maWdbImFzeW5jIl0uZGVsYXksdGltZW91dDpfX3VuaUNvbmZpZ1siYXN5bmMiXS50aW1lb3V0fTtyZXR1cm4gX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSYmKGUubG9hZGluZz17bmFtZToiU3lzdGVtQXN5bmNMb2FkaW5nIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSl9fSksX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0mJihlLmVycm9yPXtuYW1lOiJTeXN0ZW1Bc3luY0Vycm9yIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0pfX0pLGV9KSksYS5kZWZhdWx0LmNvbXBvbmVudCgicGFnZXMtcGFzc3dvcmQtcGF5bWVudCIsKGZ1bmN0aW9uKHQpe3ZhciBlPXtjb21wb25lbnQ6bi5lKCJwYWdlcy1wYXNzd29yZC1wYXltZW50IikudGhlbihmdW5jdGlvbigpe3JldHVybiB0KG4oIjU5ZDkiKSl9LmJpbmQobnVsbCxuKSkuY2F0Y2gobi5vZSksZGVsYXk6X191bmlDb25maWdbImFzeW5jIl0uZGVsYXksdGltZW91dDpfX3VuaUNvbmZpZ1siYXN5bmMiXS50aW1lb3V0fTtyZXR1cm4gX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSYmKGUubG9hZGluZz17bmFtZToiU3lzdGVtQXN5bmNMb2FkaW5nIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSl9fSksX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0mJihlLmVycm9yPXtuYW1lOiJTeXN0ZW1Bc3luY0Vycm9yIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0pfX0pLGV9KSksYS5kZWZhdWx0LmNvbXBvbmVudCgicGFnZXMtc2V0dGxlbWVudC1zZXR0bGVtZW50IiwoZnVuY3Rpb24odCl7dmFyIGU9e2NvbXBvbmVudDpuLmUoInBhZ2VzLXNldHRsZW1lbnQtc2V0dGxlbWVudCIpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdChuKCJmNTk1IikpfS5iaW5kKG51bGwsbikpLmNhdGNoKG4ub2UpLGRlbGF5Ol9fdW5pQ29uZmlnWyJhc3luYyJdLmRlbGF5LHRpbWVvdXQ6X191bmlDb25maWdbImFzeW5jIl0udGltZW91dH07cmV0dXJuIF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0mJihlLmxvYWRpbmc9e25hbWU6IlN5c3RlbUFzeW5jTG9hZGluZyIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0pfX0pLF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdJiYoZS5lcnJvcj17bmFtZToiU3lzdGVtQXN5bmNFcnJvciIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdKX19KSxlfSkpLGEuZGVmYXVsdC5jb21wb25lbnQoInBhZ2VzLWxvZ2luLWluZGV4IiwoZnVuY3Rpb24odCl7dmFyIGU9e2NvbXBvbmVudDpuLmUoInBhZ2VzLWxvZ2luLWluZGV4IikudGhlbihmdW5jdGlvbigpe3JldHVybiB0KG4oImVmY2YiKSl9LmJpbmQobnVsbCxuKSkuY2F0Y2gobi5vZSksZGVsYXk6X191bmlDb25maWdbImFzeW5jIl0uZGVsYXksdGltZW91dDpfX3VuaUNvbmZpZ1siYXN5bmMiXS50aW1lb3V0fTtyZXR1cm4gX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSYmKGUubG9hZGluZz17bmFtZToiU3lzdGVtQXN5bmNMb2FkaW5nIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSl9fSksX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0mJihlLmVycm9yPXtuYW1lOiJTeXN0ZW1Bc3luY0Vycm9yIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0pfX0pLGV9KSksYS5kZWZhdWx0LmNvbXBvbmVudCgicGFnZXMtYWNjb3VudC1tZXNzYWdlIiwoZnVuY3Rpb24odCl7dmFyIGU9e2NvbXBvbmVudDpQcm9taXNlLmFsbChbbi5lKCJwYWdlcy1hY2NvdW50LWJpbGxzfnBhZ2VzLWFjY291bnQtaW5kZXh+cGFnZXMtYWNjb3VudC1tZXNzYWdlfnBhZ2VzLWFjY291bnQtcGFzc3dvcmR+cGFnZXMtYWNjb3VudC1wfmRkNjcwZTYwIiksbi5lKCJwYWdlcy1hY2NvdW50LW1lc3NhZ2UiKV0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdChuKCJlMmZiIikpfS5iaW5kKG51bGwsbikpLmNhdGNoKG4ub2UpLGRlbGF5Ol9fdW5pQ29uZmlnWyJhc3luYyJdLmRlbGF5LHRpbWVvdXQ6X191bmlDb25maWdbImFzeW5jIl0udGltZW91dH07cmV0dXJuIF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0mJihlLmxvYWRpbmc9e25hbWU6IlN5c3RlbUFzeW5jTG9hZGluZyIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0pfX0pLF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdJiYoZS5lcnJvcj17bmFtZToiU3lzdGVtQXN5bmNFcnJvciIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdKX19KSxlfSkpLGEuZGVmYXVsdC5jb21wb25lbnQoInBhZ2VzLWxvZ2luLXJlZ2lzdGVyIiwoZnVuY3Rpb24odCl7dmFyIGU9e2NvbXBvbmVudDpuLmUoInBhZ2VzLWxvZ2luLXJlZ2lzdGVyIikudGhlbihmdW5jdGlvbigpe3JldHVybiB0KG4oIjI4MTYiKSl9LmJpbmQobnVsbCxuKSkuY2F0Y2gobi5vZSksZGVsYXk6X191bmlDb25maWdbImFzeW5jIl0uZGVsYXksdGltZW91dDpfX3VuaUNvbmZpZ1siYXN5bmMiXS50aW1lb3V0fTtyZXR1cm4gX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSYmKGUubG9hZGluZz17bmFtZToiU3lzdGVtQXN5bmNMb2FkaW5nIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSl9fSksX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0mJihlLmVycm9yPXtuYW1lOiJTeXN0ZW1Bc3luY0Vycm9yIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0pfX0pLGV9KSksYS5kZWZhdWx0LmNvbXBvbmVudCgicGFnZXMtcmVjb3Jkcy1pbmRleCIsKGZ1bmN0aW9uKHQpe3ZhciBlPXtjb21wb25lbnQ6UHJvbWlzZS5hbGwoW24uZSgicGFnZXMtYWNjb3VudC1iaWxsc35wYWdlcy1hY2NvdW50LWluZGV4fnBhZ2VzLWFjY291bnQtbWVzc2FnZX5wYWdlcy1hY2NvdW50LXBhc3N3b3JkfnBhZ2VzLWFjY291bnQtcH5kZDY3MGU2MCIpLG4uZSgicGFnZXMtYWNjb3VudC1iaWxsc35wYWdlcy1yZWNvcmRzLWluZGV4Iiksbi5lKCJwYWdlcy1yZWNvcmRzLWluZGV4fnBhZ2VzLXN0YXJ0aW5nLWluZGV4Iiksbi5lKCJwYWdlcy1yZWNvcmRzLWluZGV4IildKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQobigiNmZlZCIpKX0uYmluZChudWxsLG4pKS5jYXRjaChuLm9lKSxkZWxheTpfX3VuaUNvbmZpZ1siYXN5bmMiXS5kZWxheSx0aW1lb3V0Ol9fdW5pQ29uZmlnWyJhc3luYyJdLnRpbWVvdXR9O3JldHVybiBfX3VuaUNvbmZpZ1siYXN5bmMiXVsibG9hZGluZyJdJiYoZS5sb2FkaW5nPXtuYW1lOiJTeXN0ZW1Bc3luY0xvYWRpbmciLHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChfX3VuaUNvbmZpZ1siYXN5bmMiXVsibG9hZGluZyJdKX19KSxfX3VuaUNvbmZpZ1siYXN5bmMiXVsiZXJyb3IiXSYmKGUuZXJyb3I9e25hbWU6IlN5c3RlbUFzeW5jRXJyb3IiLHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChfX3VuaUNvbmZpZ1siYXN5bmMiXVsiZXJyb3IiXSl9fSksZX0pKSxhLmRlZmF1bHQuY29tcG9uZW50KCJwYWdlcy1zdGFydGluZy1pbmRleCIsKGZ1bmN0aW9uKHQpe3ZhciBlPXtjb21wb25lbnQ6UHJvbWlzZS5hbGwoW24uZSgicGFnZXMtYWNjb3VudC1iaWxsc35wYWdlcy1hY2NvdW50LWluZGV4fnBhZ2VzLWFjY291bnQtbWVzc2FnZX5wYWdlcy1hY2NvdW50LXBhc3N3b3JkfnBhZ2VzLWFjY291bnQtcH5kZDY3MGU2MCIpLG4uZSgicGFnZXMtcmVjb3Jkcy1pbmRleH5wYWdlcy1zdGFydGluZy1pbmRleCIpLG4uZSgicGFnZXMtc3RhcnRpbmctaW5kZXgiKV0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdChuKCJiMTVhIikpfS5iaW5kKG51bGwsbikpLmNhdGNoKG4ub2UpLGRlbGF5Ol9fdW5pQ29uZmlnWyJhc3luYyJdLmRlbGF5LHRpbWVvdXQ6X191bmlDb25maWdbImFzeW5jIl0udGltZW91dH07cmV0dXJuIF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0mJihlLmxvYWRpbmc9e25hbWU6IlN5c3RlbUFzeW5jTG9hZGluZyIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0pfX0pLF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdJiYoZS5lcnJvcj17bmFtZToiU3lzdGVtQXN5bmNFcnJvciIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdKX19KSxlfSkpLGEuZGVmYXVsdC5jb21wb25lbnQoInBhZ2VzLXNlcnZpY2UtaW5kZXgiLChmdW5jdGlvbih0KXt2YXIgZT17Y29tcG9uZW50Om4uZSgicGFnZXMtc2VydmljZS1pbmRleCIpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdChuKCI4MzNlIikpfS5iaW5kKG51bGwsbikpLmNhdGNoKG4ub2UpLGRlbGF5Ol9fdW5pQ29uZmlnWyJhc3luYyJdLmRlbGF5LHRpbWVvdXQ6X191bmlDb25maWdbImFzeW5jIl0udGltZW91dH07cmV0dXJuIF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0mJihlLmxvYWRpbmc9e25hbWU6IlN5c3RlbUFzeW5jTG9hZGluZyIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0pfX0pLF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdJiYoZS5lcnJvcj17bmFtZToiU3lzdGVtQXN5bmNFcnJvciIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdKX19KSxlfSkpLGEuZGVmYXVsdC5jb21wb25lbnQoInBhZ2VzLWFjY291bnQtaW5kZXgiLChmdW5jdGlvbih0KXt2YXIgZT17Y29tcG9uZW50OlByb21pc2UuYWxsKFtuLmUoInBhZ2VzLWFjY291bnQtYmlsbHN+cGFnZXMtYWNjb3VudC1pbmRleH5wYWdlcy1hY2NvdW50LW1lc3NhZ2V+cGFnZXMtYWNjb3VudC1wYXNzd29yZH5wYWdlcy1hY2NvdW50LXB+ZGQ2NzBlNjAiKSxuLmUoInBhZ2VzLWFjY291bnQtaW5kZXgiKV0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdChuKCJkNDhhIikpfS5iaW5kKG51bGwsbikpLmNhdGNoKG4ub2UpLGRlbGF5Ol9fdW5pQ29uZmlnWyJhc3luYyJdLmRlbGF5LHRpbWVvdXQ6X191bmlDb25maWdbImFzeW5jIl0udGltZW91dH07cmV0dXJuIF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0mJihlLmxvYWRpbmc9e25hbWU6IlN5c3RlbUFzeW5jTG9hZGluZyIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0pfX0pLF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdJiYoZS5lcnJvcj17bmFtZToiU3lzdGVtQXN5bmNFcnJvciIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdKX19KSxlfSkpLGEuZGVmYXVsdC5jb21wb25lbnQoInBhZ2VzLWFjY291bnQtcmVjaGFyZ2UiLChmdW5jdGlvbih0KXt2YXIgZT17Y29tcG9uZW50OlByb21pc2UuYWxsKFtuLmUoInBhZ2VzLWFjY291bnQtYmlsbHN+cGFnZXMtYWNjb3VudC1pbmRleH5wYWdlcy1hY2NvdW50LW1lc3NhZ2V+cGFnZXMtYWNjb3VudC1wYXNzd29yZH5wYWdlcy1hY2NvdW50LXB+ZGQ2NzBlNjAiKSxuLmUoInBhZ2VzLWFjY291bnQtcGFzc3dvcmR+cGFnZXMtYWNjb3VudC1wYXltZW50fnBhZ2VzLWFjY291bnQtcmVjaGFyZ2V+cGFnZXMtYWNjb3VudC13YWxsZXR+cGFnZXMtYWNjb3V+NzQxZDdmNjkiKSxuLmUoInBhZ2VzLWFjY291bnQtcmVjaGFyZ2UiKV0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdChuKCJiNmViIikpfS5iaW5kKG51bGwsbikpLmNhdGNoKG4ub2UpLGRlbGF5Ol9fdW5pQ29uZmlnWyJhc3luYyJdLmRlbGF5LHRpbWVvdXQ6X191bmlDb25maWdbImFzeW5jIl0udGltZW91dH07cmV0dXJuIF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0mJihlLmxvYWRpbmc9e25hbWU6IlN5c3RlbUFzeW5jTG9hZGluZyIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0pfX0pLF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdJiYoZS5lcnJvcj17bmFtZToiU3lzdGVtQXN5bmNFcnJvciIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdKX19KSxlfSkpLGEuZGVmYXVsdC5jb21wb25lbnQoInBhZ2VzLWFjY291bnQtd2l0aGRyYXciLChmdW5jdGlvbih0KXt2YXIgZT17Y29tcG9uZW50OlByb21pc2UuYWxsKFtuLmUoInBhZ2VzLWFjY291bnQtYmlsbHN+cGFnZXMtYWNjb3VudC1pbmRleH5wYWdlcy1hY2NvdW50LW1lc3NhZ2V+cGFnZXMtYWNjb3VudC1wYXNzd29yZH5wYWdlcy1hY2NvdW50LXB+ZGQ2NzBlNjAiKSxuLmUoInBhZ2VzLWFjY291bnQtcGFzc3dvcmR+cGFnZXMtYWNjb3VudC1wYXltZW50fnBhZ2VzLWFjY291bnQtcmVjaGFyZ2V+cGFnZXMtYWNjb3VudC13YWxsZXR+cGFnZXMtYWNjb3V+NzQxZDdmNjkiKSxuLmUoInBhZ2VzLWFjY291bnQtd2l0aGRyYXciKV0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdChuKCIzZjIxIikpfS5iaW5kKG51bGwsbikpLmNhdGNoKG4ub2UpLGRlbGF5Ol9fdW5pQ29uZmlnWyJhc3luYyJdLmRlbGF5LHRpbWVvdXQ6X191bmlDb25maWdbImFzeW5jIl0udGltZW91dH07cmV0dXJuIF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0mJihlLmxvYWRpbmc9e25hbWU6IlN5c3RlbUFzeW5jTG9hZGluZyIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0pfX0pLF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdJiYoZS5lcnJvcj17bmFtZToiU3lzdGVtQXN5bmNFcnJvciIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdKX19KSxlfSkpLGEuZGVmYXVsdC5jb21wb25lbnQoInBhZ2VzLWFjY291bnQtd2FsbGV0IiwoZnVuY3Rpb24odCl7dmFyIGU9e2NvbXBvbmVudDpQcm9taXNlLmFsbChbbi5lKCJwYWdlcy1hY2NvdW50LWJpbGxzfnBhZ2VzLWFjY291bnQtaW5kZXh+cGFnZXMtYWNjb3VudC1tZXNzYWdlfnBhZ2VzLWFjY291bnQtcGFzc3dvcmR+cGFnZXMtYWNjb3VudC1wfmRkNjcwZTYwIiksbi5lKCJwYWdlcy1hY2NvdW50LXBhc3N3b3JkfnBhZ2VzLWFjY291bnQtcGF5bWVudH5wYWdlcy1hY2NvdW50LXJlY2hhcmdlfnBhZ2VzLWFjY291bnQtd2FsbGV0fnBhZ2VzLWFjY291fjc0MWQ3ZjY5Iiksbi5lKCJwYWdlcy1hY2NvdW50LXdhbGxldCIpXSkudGhlbihmdW5jdGlvbigpe3JldHVybiB0KG4oIjNhMDEiKSl9LmJpbmQobnVsbCxuKSkuY2F0Y2gobi5vZSksZGVsYXk6X191bmlDb25maWdbImFzeW5jIl0uZGVsYXksdGltZW91dDpfX3VuaUNvbmZpZ1siYXN5bmMiXS50aW1lb3V0fTtyZXR1cm4gX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSYmKGUubG9hZGluZz17bmFtZToiU3lzdGVtQXN5bmNMb2FkaW5nIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSl9fSksX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0mJihlLmVycm9yPXtuYW1lOiJTeXN0ZW1Bc3luY0Vycm9yIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0pfX0pLGV9KSksYS5kZWZhdWx0LmNvbXBvbmVudCgicGFnZXMtYWNjb3VudC1iaWxscyIsKGZ1bmN0aW9uKHQpe3ZhciBlPXtjb21wb25lbnQ6UHJvbWlzZS5hbGwoW24uZSgicGFnZXMtYWNjb3VudC1iaWxsc35wYWdlcy1hY2NvdW50LWluZGV4fnBhZ2VzLWFjY291bnQtbWVzc2FnZX5wYWdlcy1hY2NvdW50LXBhc3N3b3JkfnBhZ2VzLWFjY291bnQtcH5kZDY3MGU2MCIpLG4uZSgicGFnZXMtYWNjb3VudC1iaWxsc35wYWdlcy1yZWNvcmRzLWluZGV4Iiksbi5lKCJwYWdlcy1hY2NvdW50LWJpbGxzIildKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQobigiZjM2ZSIpKX0uYmluZChudWxsLG4pKS5jYXRjaChuLm9lKSxkZWxheTpfX3VuaUNvbmZpZ1siYXN5bmMiXS5kZWxheSx0aW1lb3V0Ol9fdW5pQ29uZmlnWyJhc3luYyJdLnRpbWVvdXR9O3JldHVybiBfX3VuaUNvbmZpZ1siYXN5bmMiXVsibG9hZGluZyJdJiYoZS5sb2FkaW5nPXtuYW1lOiJTeXN0ZW1Bc3luY0xvYWRpbmciLHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChfX3VuaUNvbmZpZ1siYXN5bmMiXVsibG9hZGluZyJdKX19KSxfX3VuaUNvbmZpZ1siYXN5bmMiXVsiZXJyb3IiXSYmKGUuZXJyb3I9e25hbWU6IlN5c3RlbUFzeW5jRXJyb3IiLHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChfX3VuaUNvbmZpZ1siYXN5bmMiXVsiZXJyb3IiXSl9fSksZX0pKSxhLmRlZmF1bHQuY29tcG9uZW50KCJwYWdlcy1hY2NvdW50LXBhc3N3b3JkIiwoZnVuY3Rpb24odCl7dmFyIGU9e2NvbXBvbmVudDpQcm9taXNlLmFsbChbbi5lKCJwYWdlcy1hY2NvdW50LWJpbGxzfnBhZ2VzLWFjY291bnQtaW5kZXh+cGFnZXMtYWNjb3VudC1tZXNzYWdlfnBhZ2VzLWFjY291bnQtcGFzc3dvcmR+cGFnZXMtYWNjb3VudC1wfmRkNjcwZTYwIiksbi5lKCJwYWdlcy1hY2NvdW50LXBhc3N3b3JkfnBhZ2VzLWFjY291bnQtcGF5bWVudH5wYWdlcy1hY2NvdW50LXJlY2hhcmdlfnBhZ2VzLWFjY291bnQtd2FsbGV0fnBhZ2VzLWFjY291fjc0MWQ3ZjY5Iiksbi5lKCJwYWdlcy1hY2NvdW50LXBhc3N3b3JkIildKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQobigiOTI0NCIpKX0uYmluZChudWxsLG4pKS5jYXRjaChuLm9lKSxkZWxheTpfX3VuaUNvbmZpZ1siYXN5bmMiXS5kZWxheSx0aW1lb3V0Ol9fdW5pQ29uZmlnWyJhc3luYyJdLnRpbWVvdXR9O3JldHVybiBfX3VuaUNvbmZpZ1siYXN5bmMiXVsibG9hZGluZyJdJiYoZS5sb2FkaW5nPXtuYW1lOiJTeXN0ZW1Bc3luY0xvYWRpbmciLHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChfX3VuaUNvbmZpZ1siYXN5bmMiXVsibG9hZGluZyJdKX19KSxfX3VuaUNvbmZpZ1siYXN5bmMiXVsiZXJyb3IiXSYmKGUuZXJyb3I9e25hbWU6IlN5c3RlbUFzeW5jRXJyb3IiLHJlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChfX3VuaUNvbmZpZ1siYXN5bmMiXVsiZXJyb3IiXSl9fSksZX0pKSxhLmRlZmF1bHQuY29tcG9uZW50KCJwYWdlcy1hY2NvdW50LXBheW1lbnQiLChmdW5jdGlvbih0KXt2YXIgZT17Y29tcG9uZW50OlByb21pc2UuYWxsKFtuLmUoInBhZ2VzLWFjY291bnQtYmlsbHN+cGFnZXMtYWNjb3VudC1pbmRleH5wYWdlcy1hY2NvdW50LW1lc3NhZ2V+cGFnZXMtYWNjb3VudC1wYXNzd29yZH5wYWdlcy1hY2NvdW50LXB+ZGQ2NzBlNjAiKSxuLmUoInBhZ2VzLWFjY291bnQtcGFzc3dvcmR+cGFnZXMtYWNjb3VudC1wYXltZW50fnBhZ2VzLWFjY291bnQtcmVjaGFyZ2V+cGFnZXMtYWNjb3VudC13YWxsZXR+cGFnZXMtYWNjb3V+NzQxZDdmNjkiKSxuLmUoInBhZ2VzLWFjY291bnQtcGF5bWVudCIpXSkudGhlbihmdW5jdGlvbigpe3JldHVybiB0KG4oIjU1OTgiKSl9LmJpbmQobnVsbCxuKSkuY2F0Y2gobi5vZSksZGVsYXk6X191bmlDb25maWdbImFzeW5jIl0uZGVsYXksdGltZW91dDpfX3VuaUNvbmZpZ1siYXN5bmMiXS50aW1lb3V0fTtyZXR1cm4gX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSYmKGUubG9hZGluZz17bmFtZToiU3lzdGVtQXN5bmNMb2FkaW5nIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSl9fSksX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0mJihlLmVycm9yPXtuYW1lOiJTeXN0ZW1Bc3luY0Vycm9yIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0pfX0pLGV9KSksYS5kZWZhdWx0LmNvbXBvbmVudCgicGFnZXMtYWNjb3VudC1hYm91dCIsKGZ1bmN0aW9uKHQpe3ZhciBlPXtjb21wb25lbnQ6bi5lKCJwYWdlcy1hY2NvdW50LWFib3V0IikudGhlbihmdW5jdGlvbigpe3JldHVybiB0KG4oIjk4MmMiKSl9LmJpbmQobnVsbCxuKSkuY2F0Y2gobi5vZSksZGVsYXk6X191bmlDb25maWdbImFzeW5jIl0uZGVsYXksdGltZW91dDpfX3VuaUNvbmZpZ1siYXN5bmMiXS50aW1lb3V0fTtyZXR1cm4gX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSYmKGUubG9hZGluZz17bmFtZToiU3lzdGVtQXN5bmNMb2FkaW5nIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSl9fSksX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0mJihlLmVycm9yPXtuYW1lOiJTeXN0ZW1Bc3luY0Vycm9yIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0pfX0pLGV9KSksYS5kZWZhdWx0LmNvbXBvbmVudCgicGFnZXMtYWNjb3VudC1ydWxlIiwoZnVuY3Rpb24odCl7dmFyIGU9e2NvbXBvbmVudDpuLmUoInBhZ2VzLWFjY291bnQtcnVsZSIpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdChuKCI2NTExIikpfS5iaW5kKG51bGwsbikpLmNhdGNoKG4ub2UpLGRlbGF5Ol9fdW5pQ29uZmlnWyJhc3luYyJdLmRlbGF5LHRpbWVvdXQ6X191bmlDb25maWdbImFzeW5jIl0udGltZW91dH07cmV0dXJuIF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0mJihlLmxvYWRpbmc9e25hbWU6IlN5c3RlbUFzeW5jTG9hZGluZyIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJsb2FkaW5nIl0pfX0pLF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdJiYoZS5lcnJvcj17bmFtZToiU3lzdGVtQXN5bmNFcnJvciIscmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KF9fdW5pQ29uZmlnWyJhc3luYyJdWyJlcnJvciJdKX19KSxlfSkpLGEuZGVmYXVsdC5jb21wb25lbnQoInBhZ2VzLWxvZ2luLXJlZ2lzdGVyIiwoZnVuY3Rpb24odCl7dmFyIGU9e2NvbXBvbmVudDpuLmUoInBhZ2VzLWxvZ2luLXJlZ2lzdGVyIikudGhlbihmdW5jdGlvbigpe3JldHVybiB0KG4oIjI4MTYiKSl9LmJpbmQobnVsbCxuKSkuY2F0Y2gobi5vZSksZGVsYXk6X191bmlDb25maWdbImFzeW5jIl0uZGVsYXksdGltZW91dDpfX3VuaUNvbmZpZ1siYXN5bmMiXS50aW1lb3V0fTtyZXR1cm4gX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSYmKGUubG9hZGluZz17bmFtZToiU3lzdGVtQXN5bmNMb2FkaW5nIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImxvYWRpbmciXSl9fSksX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0mJihlLmVycm9yPXtuYW1lOiJTeXN0ZW1Bc3luY0Vycm9yIixyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoX191bmlDb25maWdbImFzeW5jIl1bImVycm9yIl0pfX0pLGV9KSksdC5fX3VuaVJvdXRlcz1be3BhdGg6Ii8iLGFsaWFzOiIvcGFnZXMvaG9tZS9pbmRleCIsY29tcG9uZW50OntyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoIlBhZ2UiLHtwcm9wczpPYmplY3QuYXNzaWduKHtpc1F1aXQ6ITAsaXNFbnRyeTohMH0sX191bmlDb25maWcuZ2xvYmFsU3R5bGUse25hdmlnYXRpb25TdHlsZToiY3VzdG9tIn0pfSxbdCgicGFnZXMtaG9tZS1pbmRleCIse3Nsb3Q6InBhZ2UifSldKX19LG1ldGE6e2lkOjEsbmFtZToicGFnZXMtaG9tZS1pbmRleCIsaXNOVnVlOiExLG1heFdpZHRoOjAscGFnZVBhdGg6InBhZ2VzL2hvbWUvaW5kZXgiLGlzUXVpdDohMCxpc0VudHJ5OiEwLHdpbmRvd1RvcDowfX0se3BhdGg6Ii9wYWdlcy9kZXRhaWxzWS9pbmRleCIsY29tcG9uZW50OntyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoIlBhZ2UiLHtwcm9wczpPYmplY3QuYXNzaWduKHt9LF9fdW5pQ29uZmlnLmdsb2JhbFN0eWxlLHtuYXZpZ2F0aW9uU3R5bGU6ImN1c3RvbSJ9KX0sW3QoInBhZ2VzLWRldGFpbHNZLWluZGV4Iix7c2xvdDoicGFnZSJ9KV0pfX0sbWV0YTp7bmFtZToicGFnZXMtZGV0YWlsc1ktaW5kZXgiLGlzTlZ1ZTohMSxtYXhXaWR0aDowLHBhZ2VQYXRoOiJwYWdlcy9kZXRhaWxzWS9pbmRleCIsd2luZG93VG9wOjB9fSx7cGF0aDoiL3BhZ2VzL3BlcmtoaWRtYXRhL3BlcmtoaWRtYXRhIixjb21wb25lbnQ6e3JlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdCgiUGFnZSIse3Byb3BzOk9iamVjdC5hc3NpZ24oe30sX191bmlDb25maWcuZ2xvYmFsU3R5bGUse25hdmlnYXRpb25TdHlsZToiY3VzdG9tIn0pfSxbdCgicGFnZXMtcGVya2hpZG1hdGEtcGVya2hpZG1hdGEiLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJwYWdlcy1wZXJraGlkbWF0YS1wZXJraGlkbWF0YSIsaXNOVnVlOiExLG1heFdpZHRoOjAscGFnZVBhdGg6InBhZ2VzL3BlcmtoaWRtYXRhL3BlcmtoaWRtYXRhIix3aW5kb3dUb3A6MH19LHtwYXRoOiIvcGFnZXMvc3RhcnQvc3RhcnQiLGNvbXBvbmVudDp7cmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KCJQYWdlIix7cHJvcHM6T2JqZWN0LmFzc2lnbih7fSxfX3VuaUNvbmZpZy5nbG9iYWxTdHlsZSx7bmF2aWdhdGlvblN0eWxlOiJjdXN0b20ifSl9LFt0KCJwYWdlcy1zdGFydC1zdGFydCIse3Nsb3Q6InBhZ2UifSldKX19LG1ldGE6e25hbWU6InBhZ2VzLXN0YXJ0LXN0YXJ0Iixpc05WdWU6ITEsbWF4V2lkdGg6MCxwYWdlUGF0aDoicGFnZXMvc3RhcnQvc3RhcnQiLHdpbmRvd1RvcDowfX0se3BhdGg6Ii9wYWdlcy91c2VyL3VzZXIiLGNvbXBvbmVudDp7cmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KCJQYWdlIix7cHJvcHM6T2JqZWN0LmFzc2lnbih7fSxfX3VuaUNvbmZpZy5nbG9iYWxTdHlsZSx7bmF2aWdhdGlvblN0eWxlOiJjdXN0b20ifSl9LFt0KCJwYWdlcy11c2VyLXVzZXIiLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJwYWdlcy11c2VyLXVzZXIiLGlzTlZ1ZTohMSxtYXhXaWR0aDowLHBhZ2VQYXRoOiJwYWdlcy91c2VyL3VzZXIiLHdpbmRvd1RvcDowfX0se3BhdGg6Ii9wYWdlcy9leGNoYW5nZS9leGNoYW5nZSIsY29tcG9uZW50OntyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoIlBhZ2UiLHtwcm9wczpPYmplY3QuYXNzaWduKHt9LF9fdW5pQ29uZmlnLmdsb2JhbFN0eWxlLHtuYXZpZ2F0aW9uU3R5bGU6ImN1c3RvbSJ9KX0sW3QoInBhZ2VzLWV4Y2hhbmdlLWV4Y2hhbmdlIix7c2xvdDoicGFnZSJ9KV0pfX0sbWV0YTp7bmFtZToicGFnZXMtZXhjaGFuZ2UtZXhjaGFuZ2UiLGlzTlZ1ZTohMSxtYXhXaWR0aDowLHBhZ2VQYXRoOiJwYWdlcy9leGNoYW5nZS9leGNoYW5nZSIsd2luZG93VG9wOjB9fSx7cGF0aDoiL3BhZ2VzL3BsYXRmb3JtL3BsYXRmb3JtIixjb21wb25lbnQ6e3JlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdCgiUGFnZSIse3Byb3BzOk9iamVjdC5hc3NpZ24oe30sX191bmlDb25maWcuZ2xvYmFsU3R5bGUse25hdmlnYXRpb25TdHlsZToiY3VzdG9tIn0pfSxbdCgicGFnZXMtcGxhdGZvcm0tcGxhdGZvcm0iLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJwYWdlcy1wbGF0Zm9ybS1wbGF0Zm9ybSIsaXNOVnVlOiExLG1heFdpZHRoOjAscGFnZVBhdGg6InBhZ2VzL3BsYXRmb3JtL3BsYXRmb3JtIix3aW5kb3dUb3A6MH19LHtwYXRoOiIvcGFnZXMvc2V0dGluZ3Mvc2V0dGluZ3MiLGNvbXBvbmVudDp7cmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KCJQYWdlIix7cHJvcHM6T2JqZWN0LmFzc2lnbih7fSxfX3VuaUNvbmZpZy5nbG9iYWxTdHlsZSx7bmF2aWdhdGlvblN0eWxlOiJjdXN0b20ifSl9LFt0KCJwYWdlcy1zZXR0aW5ncy1zZXR0aW5ncyIse3Nsb3Q6InBhZ2UifSldKX19LG1ldGE6e25hbWU6InBhZ2VzLXNldHRpbmdzLXNldHRpbmdzIixpc05WdWU6ITEsbWF4V2lkdGg6MCxwYWdlUGF0aDoicGFnZXMvc2V0dGluZ3Mvc2V0dGluZ3MiLHdpbmRvd1RvcDowfX0se3BhdGg6Ii9wYWdlcy9yZWNvcmQvcmVjb3JkIixjb21wb25lbnQ6e3JlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdCgiUGFnZSIse3Byb3BzOk9iamVjdC5hc3NpZ24oe30sX191bmlDb25maWcuZ2xvYmFsU3R5bGUse25hdmlnYXRpb25TdHlsZToiY3VzdG9tIn0pfSxbdCgicGFnZXMtcmVjb3JkLXJlY29yZCIse3Nsb3Q6InBhZ2UifSldKX19LG1ldGE6e25hbWU6InBhZ2VzLXJlY29yZC1yZWNvcmQiLGlzTlZ1ZTohMSxtYXhXaWR0aDowLHBhZ2VQYXRoOiJwYWdlcy9yZWNvcmQvcmVjb3JkIix3aW5kb3dUb3A6MH19LHtwYXRoOiIvcGFnZXMvcnVsZXMvcnVsZXMiLGNvbXBvbmVudDp7cmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KCJQYWdlIix7cHJvcHM6T2JqZWN0LmFzc2lnbih7fSxfX3VuaUNvbmZpZy5nbG9iYWxTdHlsZSx7bmF2aWdhdGlvblN0eWxlOiJjdXN0b20ifSl9LFt0KCJwYWdlcy1ydWxlcy1ydWxlcyIse3Nsb3Q6InBhZ2UifSldKX19LG1ldGE6e25hbWU6InBhZ2VzLXJ1bGVzLXJ1bGVzIixpc05WdWU6ITEsbWF4V2lkdGg6MCxwYWdlUGF0aDoicGFnZXMvcnVsZXMvcnVsZXMiLHdpbmRvd1RvcDowfX0se3BhdGg6Ii9wYWdlcy9wYXNzd29yZC9sb2dpbiIsY29tcG9uZW50OntyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoIlBhZ2UiLHtwcm9wczpPYmplY3QuYXNzaWduKHt9LF9fdW5pQ29uZmlnLmdsb2JhbFN0eWxlLHtuYXZpZ2F0aW9uU3R5bGU6ImN1c3RvbSJ9KX0sW3QoInBhZ2VzLXBhc3N3b3JkLWxvZ2luIix7c2xvdDoicGFnZSJ9KV0pfX0sbWV0YTp7bmFtZToicGFnZXMtcGFzc3dvcmQtbG9naW4iLGlzTlZ1ZTohMSxtYXhXaWR0aDowLHBhZ2VQYXRoOiJwYWdlcy9wYXNzd29yZC9sb2dpbiIsd2luZG93VG9wOjB9fSx7cGF0aDoiL3BhZ2VzL3Bhc3N3b3JkL3BheW1lbnQiLGNvbXBvbmVudDp7cmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KCJQYWdlIix7cHJvcHM6T2JqZWN0LmFzc2lnbih7fSxfX3VuaUNvbmZpZy5nbG9iYWxTdHlsZSx7bmF2aWdhdGlvblN0eWxlOiJjdXN0b20ifSl9LFt0KCJwYWdlcy1wYXNzd29yZC1wYXltZW50Iix7c2xvdDoicGFnZSJ9KV0pfX0sbWV0YTp7bmFtZToicGFnZXMtcGFzc3dvcmQtcGF5bWVudCIsaXNOVnVlOiExLG1heFdpZHRoOjAscGFnZVBhdGg6InBhZ2VzL3Bhc3N3b3JkL3BheW1lbnQiLHdpbmRvd1RvcDowfX0se3BhdGg6Ii9wYWdlcy9zZXR0bGVtZW50L3NldHRsZW1lbnQiLGNvbXBvbmVudDp7cmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KCJQYWdlIix7cHJvcHM6T2JqZWN0LmFzc2lnbih7fSxfX3VuaUNvbmZpZy5nbG9iYWxTdHlsZSx7bmF2aWdhdGlvblN0eWxlOiJjdXN0b20ifSl9LFt0KCJwYWdlcy1zZXR0bGVtZW50LXNldHRsZW1lbnQiLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJwYWdlcy1zZXR0bGVtZW50LXNldHRsZW1lbnQiLGlzTlZ1ZTohMSxtYXhXaWR0aDowLHBhZ2VQYXRoOiJwYWdlcy9zZXR0bGVtZW50L3NldHRsZW1lbnQiLHdpbmRvd1RvcDowfX0se3BhdGg6Ii9wYWdlcy9sb2dpbi9pbmRleCIsY29tcG9uZW50OntyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoIlBhZ2UiLHtwcm9wczpPYmplY3QuYXNzaWduKHt9LF9fdW5pQ29uZmlnLmdsb2JhbFN0eWxlLHtuYXZpZ2F0aW9uU3R5bGU6ImN1c3RvbSJ9KX0sW3QoInBhZ2VzLWxvZ2luLWluZGV4Iix7c2xvdDoicGFnZSJ9KV0pfX0sbWV0YTp7bmFtZToicGFnZXMtbG9naW4taW5kZXgiLGlzTlZ1ZTohMSxtYXhXaWR0aDowLHBhZ2VQYXRoOiJwYWdlcy9sb2dpbi9pbmRleCIsd2luZG93VG9wOjB9fSx7cGF0aDoiL3BhZ2VzL2FjY291bnQvbWVzc2FnZSIsY29tcG9uZW50OntyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoIlBhZ2UiLHtwcm9wczpPYmplY3QuYXNzaWduKHt9LF9fdW5pQ29uZmlnLmdsb2JhbFN0eWxlLHtuYXZpZ2F0aW9uU3R5bGU6ImN1c3RvbSJ9KX0sW3QoInBhZ2VzLWFjY291bnQtbWVzc2FnZSIse3Nsb3Q6InBhZ2UifSldKX19LG1ldGE6e25hbWU6InBhZ2VzLWFjY291bnQtbWVzc2FnZSIsaXNOVnVlOiExLG1heFdpZHRoOjAscGFnZVBhdGg6InBhZ2VzL2FjY291bnQvbWVzc2FnZSIsd2luZG93VG9wOjB9fSx7cGF0aDoiL3BhZ2VzL2xvZ2luL3JlZ2lzdGVyIixjb21wb25lbnQ6e3JlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdCgiUGFnZSIse3Byb3BzOk9iamVjdC5hc3NpZ24oe30sX191bmlDb25maWcuZ2xvYmFsU3R5bGUse25hdmlnYXRpb25TdHlsZToiY3VzdG9tIn0pfSxbdCgicGFnZXMtbG9naW4tcmVnaXN0ZXIiLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJwYWdlcy1sb2dpbi1yZWdpc3RlciIsaXNOVnVlOiExLG1heFdpZHRoOjAscGFnZVBhdGg6InBhZ2VzL2xvZ2luL3JlZ2lzdGVyIix3aW5kb3dUb3A6MH19LHtwYXRoOiIvcGFnZXMvcmVjb3Jkcy9pbmRleCIsY29tcG9uZW50OntyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoIlBhZ2UiLHtwcm9wczpPYmplY3QuYXNzaWduKHt9LF9fdW5pQ29uZmlnLmdsb2JhbFN0eWxlLHtuYXZpZ2F0aW9uU3R5bGU6ImN1c3RvbSJ9KX0sW3QoInBhZ2VzLXJlY29yZHMtaW5kZXgiLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJwYWdlcy1yZWNvcmRzLWluZGV4Iixpc05WdWU6ITEsbWF4V2lkdGg6MCxwYWdlUGF0aDoicGFnZXMvcmVjb3Jkcy9pbmRleCIsd2luZG93VG9wOjB9fSx7cGF0aDoiL3BhZ2VzL3N0YXJ0aW5nL2luZGV4Iixjb21wb25lbnQ6e3JlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdCgiUGFnZSIse3Byb3BzOk9iamVjdC5hc3NpZ24oe30sX191bmlDb25maWcuZ2xvYmFsU3R5bGUse25hdmlnYXRpb25TdHlsZToiY3VzdG9tIn0pfSxbdCgicGFnZXMtc3RhcnRpbmctaW5kZXgiLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJwYWdlcy1zdGFydGluZy1pbmRleCIsaXNOVnVlOiExLG1heFdpZHRoOjAscGFnZVBhdGg6InBhZ2VzL3N0YXJ0aW5nL2luZGV4Iix3aW5kb3dUb3A6MH19LHtwYXRoOiIvcGFnZXMvc2VydmljZS9pbmRleCIsY29tcG9uZW50OntyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoIlBhZ2UiLHtwcm9wczpPYmplY3QuYXNzaWduKHt9LF9fdW5pQ29uZmlnLmdsb2JhbFN0eWxlLHtuYXZpZ2F0aW9uU3R5bGU6ImN1c3RvbSJ9KX0sW3QoInBhZ2VzLXNlcnZpY2UtaW5kZXgiLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJwYWdlcy1zZXJ2aWNlLWluZGV4Iixpc05WdWU6ITEsbWF4V2lkdGg6MCxwYWdlUGF0aDoicGFnZXMvc2VydmljZS9pbmRleCIsd2luZG93VG9wOjB9fSx7cGF0aDoiL3BhZ2VzL2FjY291bnQvaW5kZXgiLGNvbXBvbmVudDp7cmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KCJQYWdlIix7cHJvcHM6T2JqZWN0LmFzc2lnbih7fSxfX3VuaUNvbmZpZy5nbG9iYWxTdHlsZSx7bmF2aWdhdGlvblN0eWxlOiJjdXN0b20ifSl9LFt0KCJwYWdlcy1hY2NvdW50LWluZGV4Iix7c2xvdDoicGFnZSJ9KV0pfX0sbWV0YTp7bmFtZToicGFnZXMtYWNjb3VudC1pbmRleCIsaXNOVnVlOiExLG1heFdpZHRoOjAscGFnZVBhdGg6InBhZ2VzL2FjY291bnQvaW5kZXgiLHdpbmRvd1RvcDowfX0se3BhdGg6Ii9wYWdlcy9hY2NvdW50L3JlY2hhcmdlIixjb21wb25lbnQ6e3JlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdCgiUGFnZSIse3Byb3BzOk9iamVjdC5hc3NpZ24oe30sX191bmlDb25maWcuZ2xvYmFsU3R5bGUse25hdmlnYXRpb25TdHlsZToiY3VzdG9tIn0pfSxbdCgicGFnZXMtYWNjb3VudC1yZWNoYXJnZSIse3Nsb3Q6InBhZ2UifSldKX19LG1ldGE6e25hbWU6InBhZ2VzLWFjY291bnQtcmVjaGFyZ2UiLGlzTlZ1ZTohMSxtYXhXaWR0aDowLHBhZ2VQYXRoOiJwYWdlcy9hY2NvdW50L3JlY2hhcmdlIix3aW5kb3dUb3A6MH19LHtwYXRoOiIvcGFnZXMvYWNjb3VudC93aXRoZHJhdyIsY29tcG9uZW50OntyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoIlBhZ2UiLHtwcm9wczpPYmplY3QuYXNzaWduKHt9LF9fdW5pQ29uZmlnLmdsb2JhbFN0eWxlLHtuYXZpZ2F0aW9uU3R5bGU6ImN1c3RvbSJ9KX0sW3QoInBhZ2VzLWFjY291bnQtd2l0aGRyYXciLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJwYWdlcy1hY2NvdW50LXdpdGhkcmF3Iixpc05WdWU6ITEsbWF4V2lkdGg6MCxwYWdlUGF0aDoicGFnZXMvYWNjb3VudC93aXRoZHJhdyIsd2luZG93VG9wOjB9fSx7cGF0aDoiL3BhZ2VzL2FjY291bnQvd2FsbGV0Iixjb21wb25lbnQ6e3JlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdCgiUGFnZSIse3Byb3BzOk9iamVjdC5hc3NpZ24oe30sX191bmlDb25maWcuZ2xvYmFsU3R5bGUse25hdmlnYXRpb25TdHlsZToiY3VzdG9tIn0pfSxbdCgicGFnZXMtYWNjb3VudC13YWxsZXQiLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJwYWdlcy1hY2NvdW50LXdhbGxldCIsaXNOVnVlOiExLG1heFdpZHRoOjAscGFnZVBhdGg6InBhZ2VzL2FjY291bnQvd2FsbGV0Iix3aW5kb3dUb3A6MH19LHtwYXRoOiIvcGFnZXMvYWNjb3VudC9iaWxscyIsY29tcG9uZW50OntyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoIlBhZ2UiLHtwcm9wczpPYmplY3QuYXNzaWduKHt9LF9fdW5pQ29uZmlnLmdsb2JhbFN0eWxlLHtuYXZpZ2F0aW9uU3R5bGU6ImN1c3RvbSJ9KX0sW3QoInBhZ2VzLWFjY291bnQtYmlsbHMiLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJwYWdlcy1hY2NvdW50LWJpbGxzIixpc05WdWU6ITEsbWF4V2lkdGg6MCxwYWdlUGF0aDoicGFnZXMvYWNjb3VudC9iaWxscyIsd2luZG93VG9wOjB9fSx7cGF0aDoiL3BhZ2VzL2FjY291bnQvcGFzc3dvcmQiLGNvbXBvbmVudDp7cmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KCJQYWdlIix7cHJvcHM6T2JqZWN0LmFzc2lnbih7fSxfX3VuaUNvbmZpZy5nbG9iYWxTdHlsZSx7bmF2aWdhdGlvblN0eWxlOiJjdXN0b20ifSl9LFt0KCJwYWdlcy1hY2NvdW50LXBhc3N3b3JkIix7c2xvdDoicGFnZSJ9KV0pfX0sbWV0YTp7bmFtZToicGFnZXMtYWNjb3VudC1wYXNzd29yZCIsaXNOVnVlOiExLG1heFdpZHRoOjAscGFnZVBhdGg6InBhZ2VzL2FjY291bnQvcGFzc3dvcmQiLHdpbmRvd1RvcDowfX0se3BhdGg6Ii9wYWdlcy9hY2NvdW50L3BheW1lbnQiLGNvbXBvbmVudDp7cmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KCJQYWdlIix7cHJvcHM6T2JqZWN0LmFzc2lnbih7fSxfX3VuaUNvbmZpZy5nbG9iYWxTdHlsZSx7bmF2aWdhdGlvblN0eWxlOiJjdXN0b20ifSl9LFt0KCJwYWdlcy1hY2NvdW50LXBheW1lbnQiLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJwYWdlcy1hY2NvdW50LXBheW1lbnQiLGlzTlZ1ZTohMSxtYXhXaWR0aDowLHBhZ2VQYXRoOiJwYWdlcy9hY2NvdW50L3BheW1lbnQiLHdpbmRvd1RvcDowfX0se3BhdGg6Ii9wYWdlcy9hY2NvdW50L2Fib3V0Iixjb21wb25lbnQ6e3JlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdCgiUGFnZSIse3Byb3BzOk9iamVjdC5hc3NpZ24oe30sX191bmlDb25maWcuZ2xvYmFsU3R5bGUse25hdmlnYXRpb25TdHlsZToiY3VzdG9tIn0pfSxbdCgicGFnZXMtYWNjb3VudC1hYm91dCIse3Nsb3Q6InBhZ2UifSldKX19LG1ldGE6e25hbWU6InBhZ2VzLWFjY291bnQtYWJvdXQiLGlzTlZ1ZTohMSxtYXhXaWR0aDowLHBhZ2VQYXRoOiJwYWdlcy9hY2NvdW50L2Fib3V0Iix3aW5kb3dUb3A6MH19LHtwYXRoOiIvcGFnZXMvYWNjb3VudC9ydWxlIixjb21wb25lbnQ6e3JlbmRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdCgiUGFnZSIse3Byb3BzOk9iamVjdC5hc3NpZ24oe30sX191bmlDb25maWcuZ2xvYmFsU3R5bGUse25hdmlnYXRpb25TdHlsZToiY3VzdG9tIn0pfSxbdCgicGFnZXMtYWNjb3VudC1ydWxlIix7c2xvdDoicGFnZSJ9KV0pfX0sbWV0YTp7bmFtZToicGFnZXMtYWNjb3VudC1ydWxlIixpc05WdWU6ITEsbWF4V2lkdGg6MCxwYWdlUGF0aDoicGFnZXMvYWNjb3VudC9ydWxlIix3aW5kb3dUb3A6MH19LHtwYXRoOiIvcGFnZXMvbG9naW4vcmVnaXN0ZXIiLGNvbXBvbmVudDp7cmVuZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0KCJQYWdlIix7cHJvcHM6T2JqZWN0LmFzc2lnbih7fSxfX3VuaUNvbmZpZy5nbG9iYWxTdHlsZSx7bmF2aWdhdGlvbkJhclRpdGxlVGV4dDoiIn0pfSxbdCgicGFnZXMtbG9naW4tcmVnaXN0ZXIiLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJwYWdlcy1sb2dpbi1yZWdpc3RlciIsaXNOVnVlOiExLG1heFdpZHRoOjAscGFnZVBhdGg6InBhZ2VzL2xvZ2luL3JlZ2lzdGVyIix3aW5kb3dUb3A6NDR9fSx7cGF0aDoiL2Nob29zZS1sb2NhdGlvbiIsY29tcG9uZW50OntyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoIlBhZ2UiLHtwcm9wczp7bmF2aWdhdGlvblN0eWxlOiJjdXN0b20ifX0sW3QoInN5c3RlbS1jaG9vc2UtbG9jYXRpb24iLHtzbG90OiJwYWdlIn0pXSl9fSxtZXRhOntuYW1lOiJjaG9vc2UtbG9jYXRpb24iLHBhZ2VQYXRoOiIvY2hvb3NlLWxvY2F0aW9uIn19LHtwYXRoOiIvb3Blbi1sb2NhdGlvbiIsY29tcG9uZW50OntyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoIlBhZ2UiLHtwcm9wczp7bmF2aWdhdGlvblN0eWxlOiJjdXN0b20ifX0sW3QoInN5c3RlbS1vcGVuLWxvY2F0aW9uIix7c2xvdDoicGFnZSJ9KV0pfX0sbWV0YTp7bmFtZToib3Blbi1sb2NhdGlvbiIscGFnZVBhdGg6Ii9vcGVuLWxvY2F0aW9uIn19XSx0LlVuaUFwcCYmbmV3IHQuVW5pQXBwfSkuY2FsbCh0aGlzLG4oImM4YmEiKSl9LDczNDA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDA7ZS5kZWZhdWx0PXtuYXY6WyJIb21lIiwiUmVnaXN0cm9zIiwiSW5pY2lhbmRvIiwiU2VydmnDp28iLCJDb250YSJdLHJlY29yZHNfbmF2OlsiVG9kb3MiLCJFbnZpbyIsIkNvbmNsdcOtZG8iLCJDb25nZWxhZG8iXSxiaWxsc19uYXY6WyJUb2RvcyIsIlJlY2VpdGFzIiwiRGVzcGVzYXMiXSwiQmFuay5hY2NvdW50IjoiQ29udGEiLCJCYW5rLmVudGVyLmFjY291bnQiOiJQb3IgZmF2b3IgaW50cm9kdXphIGEgY29udGEiLCJCYW5jby51c2VybmFtZSI6Ik5vbWUgZGUgdXRpbGl6YWRvciIsIkJhbmsuZW50ZXIudXNlcm5hbWUiOiJQb3IgZmF2b3IsIGludHJvZHV6YSBvIG5vbWUgZGUgdXRpbGl6YWRvciIsIkJhbmsudHlwZSI6IlRpcG8gUGl4IiwiQmFuay5lbnRlci50eXBlIjoiUG9yIGZhdm9yIHNlbGVjaW9uZSBvIHRpcG8gZGUgcGl4IiwiQmFuY28uIGNwZiI6IkNwZiIsIkJhbmsuZW50ZXIuY3BmIjoiUG9yIGZhdm9yIGluc2lyYSBvIGNwZiIsIkJhbmsuc3VibWl0IjoiQ29uZmlybWFyIiwiQmFuay5iaW5kLmJhbmsiOiJQb3IgZmF2b3IsIGxpZ3VlIG8gc2V1IGJhbmNvIiwiQ29tbW9uLmxvYWRpbmciOiJDYXJyZWdhbmRvLi4uIiwiQ29tbW9uLm5vX2RhdGEiOiJUaWFkYSBQZW5kYWZ0YXJhbiIsIkNvbW1vbi5jb3B5IjoiQ8OzcGlhIGRlIiwiQ29tbW9uLnNpZ24iOiJBc3NpbmFyIiwiQ29tbW9uLmNyZWRpdF9zY29yZSI6IlBvbnR1YcOnw6NvIGRlIGNyw6lkaXRvIiwiSW5kZXguY29tbW9kaXRpZXMiOiJNZXJjYWRvcmlhcyIsIkluZGV4LmFib3V0IjoiU29icmUgbsOzcyIsIkluZGV4LmNvbXBhbnkiOiJFbXByZXNhIGRlIE1hcmtldGluZyBkZSBDcmVzY2ltZW50byIsIkluZGV4LmludHJvZHVjdGlvbiI6IkNsaXF1ZSBwYXJhIHZlciBhIGludHJvZHXDp8OjbyIsIkluZGV4LmNvbW1pc3Npb24iOiJDb21pc3PDo28iLCJJbmRleC5nZXQiOiJSZWNlYmEgdW1hIGNvbWlzc8OjbyIsIk9yZGVyLnRvdGFsX3ZhbHVlIjoiVmFsb3IgdG90YWwiLCJPcmRlci5jb21taXNzaW9uIjoiQ29taXNzw6NvIiwiT3JkZXIuc3VibWl0IjoiRW52aWFyIiwiT3JkZXIudGltZSI6IkhvcmEgZG8gcGVkaWRvIiwiT3JkZXIubnVtYmVyIjoiTsO6bWVybyBkbyBwZWRpZG8iLCJPcmRlci50b3RhbCI6IlRvdGFsIGRlIHBlZGlkb3MiLCJPcmRlci5leHBlY3RlZCI6IlJldG9ybm8gZXNwZXJhZG8iLCJSZWNoYXJnZS5iYWxhbmNlIjoiRXF1aWzDrWJyaW8iLCJSZWNoYXJnZS5hZGRyZXNzIjoiRW5kZXJlw6dvIGRlIHJlY2FyZ2EiLCJSZWNoYXJnZS5hbW91bnQiOiJWYWxvciBkZSByZWNhcmdhIiwiUmVjaGFyZ2UuZW50ZXIuYW1vdW50IjoiSW5zaXJhIG8gdmFsb3IgZGEgcmVjYXJnYSIsIlJlY2hhcmdlLnVwbG9hZCI6IkNhcnJlZ2FyIGNhcHR1cmEgZGUgdGVsYSBkZSBwYWdhbWVudG8iLCJSZWNoYXJnZS5wbGVhc2UiOiJGYcOnYSB1cGxvYWQgZGEgY2FwdHVyYSBkZSB0ZWxhIGRvIHBhZ2FtZW50byIsIlJlY2hhcmdlLnVwbG9hZDEiOiJDYXJyZWdhciIsIlJlY2hhcmdlLnN1Ym1pdCI6IkV1IGNvbXBsZXRlaSBhIHJlY2FyZ2EiLCJSZWNoYXJnZS50aXBzIjoiUG9udGFzIiwiUmVjaGFyZ2UudGlwczEiOiIxIFNlIHZvY8OqIHBhZ291IGNvbSBzdWNlc3NvLCBvcyBmdW5kb3MgZGUgcmVjYXJnYSBzZXLDo28gZXhpYmlkb3Mgbm8gc2FsZG8gZGEgc3VhIGNvbnRhIGVtIHBvdWNvIHRlbXBvLCBhZ3VhcmRlIHVtIG1vbWVudG8uIiwiUmVjaGFyZ2UudGlwczIiOiIyIFNlIHZvY8OqIGVuY29udHJhciBwcm9ibGVtYXMgZGUgcmVjYXJnYSwgZW50cmUgZW0gY29udGF0byBjb20gYSBlcXVpcGUgZGUgYXRlbmRpbWVudG8gYW8gY2xpZW50ZSBhIHRlbXBvIGUgbsOzcyBvIGFqdWRhcmVtb3MgYSByZXNvbHbDqi1sbyBvIG1haXMgcsOhcGlkbyBwb3Nzw612ZWwuIiwiUmVjaGFyZ2UudGlwczMiOiIzLiBRdWFuZG8gbyBzZXUgcGFnYW1lbnRvIGZvciBiZW0gc3VjZWRpZG8sIGNhcnJlZ3VlIG8gY29tcHJvdmFudGUgZGUgcGFnYW1lbnRvLiIsIlJlY2hhcmdlLnRpcHM0IjoiNC4gUXVhbmRvIHRlcm1pbmFyLCBjbGlxdWUgZW06IENvbmNsdcOtIG8gcGFnYW1lbnRvLiIsIlJlY2hhcmdlLnRpcHM1IjoiNS4gUXVhbmRvIHZvY8OqIGVuY29udHJhciBxdWFscXVlciBwcm9ibGVtYSwgZW50cmUgZW0gY29udGF0byBjb20gbm9zc28gYXRlbmRpbWVudG8gYW8gY2xpZW50ZSBvbmxpbmUgYSB0ZW1wbyBkZSBhanVkw6EtbG8gYSByZXNvbHbDqi1sby4iLCJSZWNoYXJnZS5zZWxlY3QiOiJTZWxlw6fDo28gZG8gbcOpdG9kbyBkZSByZWNhcmdhIiwiV2l0aGRyYXcuYmluZC5hZGRyZXNzIjoiU2lsYSBodWJ1bmdrYW4ga2FkIGJhbmsgYW5kYSIsIldpdGhkcmF3LmJhbGFuY2UiOiJCYWtpIiwiV2l0aGRyYXcuYW1vdW50IjoiSnVtbGFoIFBlbmdlbHVhcmFuIiwiV2l0aGRyYXcuZW50ZXIuYW1vdW50IjoiSnVtbGFoIFBlbmdlbHVhcmFuIiwiV2l0aGRyYXcubWluLmFtb3VudCI6IiBKdW1sYWggcGVuZ2VsdWFyYW4gbWluaW11bSIsIldpdGhkcmF3LnBheS5wYXNzd29yZCI6IkthdGEgTGFsdWFuIFBlbmdlbHVhcmFuIiwiV2l0aGRyYXcuZW50ZXIucGF5LnBhc3N3b3JkIjoiNi1EaWdpdCBQYXNzd29yZCIsIldpdGhkcmF3LnN1Ym1pdCI6ImNvbmZpcm1lIiwiV2FsbGV0Lm5ldHdvcmsiOiJSZWRlIiwiV2FsbGV0LndhbGxldCI6IkNhcnRlaXJhIiwiV2FsbGV0LmVudGVyLndhbGxldCI6IlBvciBmYXZvciBpbnNpcmEgYSBjYXJ0ZWlyYSIsIldhbGxldC5wYXltZW50IjoiUGFnYW1lbnRvIiwiV2FsbGV0LmVudGVyLnBheW1lbnQiOiJQb3IgZmF2b3IgaW5zaXJhIG8gcGFnYW1lbnRvIiwiV2FsbGV0LnN1Ym1pdCI6ImNvbmZpcm1lIiwiUGFzc3dvcmQub2xkIjoiU2VuaGEgQW50aWdhIiwiUGFzc3dvcmQub2xkLmVudGVyIjoiUG9yIGZhdm9yIGluc2lyYSBhIHNlbmhhIGFudGlnYSIsIlBhc3N3b3JkLm5ldyI6Ik5vdmEgU2VuaGEiLCJQYXNzd29yZC5uZXcuZW50ZXIiOiJQb3IgZmF2b3IgaW5zaXJhIGEgbm92YSBzZW5oYSIsIlBhc3N3b3JkLnN1Ym1pdCI6ImNvbmZpcm1lIiwiUGF5bWVudC5vbGQiOiJTZW5oYSBBbnRpZ2EiLCJQYXltZW50Lm9sZC5lbnRlciI6IlBvciBmYXZvciBpbnNpcmEgYSBzZW5oYSBhbnRpZ2EiLCJQYXltZW50Lm5ldyI6Ik5vdmEgU2VuaGEiLCJQYXltZW50Lm5ldy5lbnRlciI6IlBvciBmYXZvciBpbnNpcmEgYSBub3ZhIHNlbmhhIiwiUGF5bWVudC5zdWJtaXQiOiJjb25maXJtZSIsIlJ1bGUudGl0bGUiOiJSZWdyYSIsIlJ1bGUudGV4dDEiOiJPIHNlcnZpZG9yIGNvbWVyY2lhbCBkYSBsb2phIFRpa1RvayBmb2kgcHJvamV0YWRvIHBhcmEgYWp1ZGFyIG9zIGNvbWVyY2lhbnRlcyBhIGF1bWVudGFyIGEgdmlzaWJpbGlkYWRlIGRlIHNldXMgcHJvZHV0b3MsIGF1bWVudGFuZG8gYXNzaW0gYXMgdmVuZGFzIG5hIGxvamEuIiwiUnVsZS50ZXh0MiI6IlVzYW1vcyB1bSBzaXN0ZW1hIGF1dG9tYXRpemFkbyBiYXNlYWRvIGVtIG51dmVtIHBhcmEgYWp1ZGFyIGNhZGEgbG9qYSBhIGRpc3RyaWJ1aXIgcGVkaWRvcyBkZSBwcm9kdXRvcyBlIGdhcmFudGlyIHVtIHRyYXRhbWVudG8ganVzdG8gZSBlcXVpdGF0aXZvIGRlIGNhZGEgY29tZXJjaWFudGUuIiwiUnVsZS50ZXh0MyI6Ik9zIGFnZW50ZXMgY29tZXJjaWFpcyBwb2RlbSByZWFsaXphciBkZSAxIGEgMyBhdGl2aWRhZGVzIGRlIGNvbGV0YSBkZSBwZWRpZG9zIHRvZG9zIG9zIGRpYXMuIiwiUnVsZS50ZXh0NCI6IkNhZGEgY2FtcGFuaGEgdGVtIGNvbW8gYWx2byA0MCBwZWRpZG9zIGRlIHByb2R1dG9zLiIsIlJ1bGUudGV4dDUiOiJBcMOzcyBhIGNvbmNsdXPDo28sIGVsZXMgc2Vyw6NvIHJlY29tcGVuc2Fkb3Mg4oCL4oCLY29tIGNvbWlzc8O1ZXMgZm9ybmVjaWRhcyBwZWxvIGNvbWVyY2lhbnRlLiIsIlJ1bGUudGV4dDYiOiJPcyBmdW5jaW9uw6FyaW9zIHPDo28gb2JyaWdhZG9zIGEgY29uY2x1aXIgYXMgYXRpdmlkYWRlcyBkbyBwZWRpZG8gZW0gdGVtcG8gaMOhYmlsLiIsIlJ1bGUudGV4dDciOiJTZSB2b2PDqiBuw6NvIGNvbmNsdWlyIGFzIHRhcmVmYXMgZGUgcGVkaWRvIGRlIHByb2R1dG8gZXNwZWNpZmljYWRhcywgbsOjbyBwb2RlcsOhIHNhY2FyIGRpbmhlaXJvIGUgbsOjbyBwb2RlcsOhIHJlY2ViZXIgcmVjb21wZW5zYXMgZGUgY29taXNzw6NvLiIsIlJ1bGUudGV4dDgiOiJBdGVuZGVtb3MgY29tZXJjaWFudGVzIGjDoSBkb2lzIGFub3MuIiwiUnVsZS50ZXh0OSI6IkVzdGUgw6kgdW0gYW1iaWVudGUgZGUgdHJhYmFsaG8gc2VndXJvIGUgZXN0w6F2ZWwuIiwiUnVsZS50ZXh0MTAiOiJPcyBmdW5jaW9uw6FyaW9zIHBvZGVtIHZpciBhcXVpIHRvZG9zIG9zIGRpYXMgcGFyYSB0cmFiYWxoYXIgcGFyYSBvcyBjb21lcmNpYW50ZXMgZHVyYW50ZSBvcyBpbnRlcnZhbG9zLiIsIlJ1bGUudGV4dDExIjoiQ29udGFudG8gcXVlIHZvY8OqIHNpZ2EgYXMgcmVncmFzIGRlIHBlZGlkbyBkZSBwcm9kdXRvcywgZXN0YSBzZXLDoSB1bWEgcmVuZGEgZXN0w6F2ZWwgcGFyYSB2b2PDqi4iLCJBYm91dC50aXRsZSI6IlNvYnJlIG7Ds3MiLCJBYm91dC50ZXh0MSI6IlNvYnJlIG7Ds3MgQSBsb2phIFRpayBUb2sgw6kgdW1hIGVtcHJlc2EgZGUgbWFya2V0aW5nIGVtIGNyZXNjaW1lbnRvLiIsIkFib3V0LnRleHQyIjoiQ29tcHJvbWV0aWRvIGVtIGV4cGFuZGlyIGEgcmVjZWl0YSBkYXMgZW1wcmVzYXMgY2xpZW50ZXMsIG8gZ3Jvd3RoIG1hcmtldGluZyB1dGlsaXphIGRhZG9zIGUgbcOpdG9kb3MgZGlnaXRhaXMgcGFyYSB0b3JuYXIgb3MgcmVzdWx0YWRvcyBkZSBtYXJrZXRpbmcgcHJldmlzw612ZWlzIGUgbWF4aW1pemFkb3MuIiwiQWJvdXQudGV4dDMiOiJEZWl4ZSBxdWUgc3VhcyBkZXNwZXNhcyBkZSBtYXJrZXRpbmcgbsOjbyBzZWphbSBtYWlzIGdhc3RhcyBlbSB1bSBwbGFubyBpbXByZXZpc8OtdmVsIGUgZXhwYW5kYSBvIHJldG9ybm8gZG8gaW52ZXN0aW1lbnRvIGNvbSBkZXNwZXNhcyBtw61uaW1hcy4gTyBub3ZvIG3DqXRvZG8gZGUgbWFya2V0aW5nIHBlcm1pdGUgcXVlIHN1YSBlbXByZXNhIHJvbXBhIG8gY2VyY28gZSBjcmVzw6dhIGZyZW50ZSBhbyBtZXJjYWRvLiIsIkFib3V0LnRleHQ0IjoiUHJvYmxlbWFzIHF1ZSBhIGxvamEgVGlrIFRvayBwb2RlIHJlc29sdmVyIDogTyBBUFAgbsOjbyB0ZW0gZWZlaXRvIGFww7NzIHNlciBsYW7Dp2FkbyBlIGjDoSBtdWl0byBwb3Vjb3MgdXN1w6FyaW9zIG5hdHVyYWlzLiIsIkFib3V0LnRleHQ1IjoiQ2xhc3NpZmljYcOnw6NvIGJhaXhhIDogTsOjbyBow6EgdHLDqnMgcGFsYXZyYXMtY2hhdmUgcHJpbmNpcGFpcyBuYSBjbGFzc2lmaWNhw6fDo28gZSBvcyBjbGllbnRlcyBlbSBwb3RlbmNpYWwgbsOjbyBjb25zZWd1ZW0gZW5jb250cmFyIG8gQVBQLiBCYWl4YSBjb2JlcnR1cmE6IE8gcGVzbyBnZXJhbCBkbyBBUFAgw6kgYmFpeG8sIHJlc3VsdGFuZG8gZW0gdW1hIGNvYmVydHVyYSBwb2JyZSBkZSBwYWxhdnJhcy1jaGF2ZS4iLCJBYm91dC50ZXh0NiI6IkN1c3RvIGFsdG8gOiBPIGN1c3RvIGRlIGNvbG9jYcOnw6NvIGRlIHBhbGF2cmFzLWNoYXZlIHBhcmEgbGFuY2VzIMOpIGFsdG8uIiwiU3RhcnRpbmcuYmFsYW5jZSI6IlNhbGRvIGF0dWFsIiwiU3RhcnRpbmcuaW5jb21lIjoiUmVuZGEgdG90YWwiLCJTdGFydGluZy5vcmRlci50aXRsZSI6IlJlc2VydmEgY29uY2x1w61kYSEiLCJTdGFydGluZy5zdWJtaXQuYnV0dG9uIjoiQ29ycmVzcG9uZMOqbmNpYSBhdXRvbcOhdGljYSIsIlN0YXJ0aW5nLnN0ZXBzIjoiT3MgcGFzc29zIiwiU3RhcnRpbmcuc3RlcHMxIjoiMS4gQ2xpcXVlIG5vIGJvdMOjbyBDb3JyZXNwb25kw6puY2lhIGF1dG9tw6F0aWNhIGUgc2lnYSBhcyBpbnN0cnXDp8O1ZXMgcGFyYSBjb25jbHVpciBhIHRhcmVmYS4iLCJTdGFydGluZy5zdGVwczIiOiIyLiBBcMOzcyBjb25jbHVpciBhIHRhcmVmYSwgdm9jw6ogcG9kZSBsaXF1aWRhciBhIGNvbWlzc8OjbyBubyBzYWxkby4iLCJBY2NvdW50LmluZGV4LnBob25lIjoiVGVsZWZvbmUiLCJBY2NvdW50LmluZGV4Lmludml0ZV9jb2RlIjoiQ8OzZGlnbyBkZSBDb252aXRlIiwiQWNjb3VudC5pbmRleC5iYWxhbmNlIjoiRXF1aWzDrWJyaW8iLCJBY2NvdW50LmluZGV4LnJlY2hhcmdlIjoiUmVjYXJyZWdhIiwiQWNjb3VudC5pbmRleC53aXRoZHJhd2FsIjoiQ2FuY2VsYW1lbnRvIiwiQWNjb3VudC5pbmRleC5zZXJ2aWNlcyI6IlNlcnZpw6dvcyIsIkFjY291bnQuaW5kZXguZGV0YWlsZWQiOiJEZXRhbGhhZG8iLCJBY2NvdW50LmluZGV4LndhbGxldCI6IkNhcnRlaXJhIiwiQWNjb3VudC5pbmRleC5wYXNzd29yZCI6IlNlbmhhIiwiQWNjb3VudC5pbmRleC5wYXltZW50IjoiUGFnYW1lbnRvIiwiQWNjb3VudC5pbmRleC5ydWxlIjoiUmVncmEiLCJBY2NvdW50LmluZGV4LmFib3V0IjoiU29icmUgbsOzcyIsIkFjY291bnQuaW5kZXgubG9nb3V0IjoiU2FpciIsIkFjY291bnQuaW5kZXgubWVzc2FnZSI6Ik1lbnNhZ2VtIiwiTG9naW4udGl0bGUiOiJMb2cgTWFzdWsiLCJMb2dpbi50aXBzIjoiU2lsYSBsb2cgbWFzdWsga2UgYWthdW4gYW5kYSIsIkxvZ2luLmVudGVyLnBob25lIjoiU2lsYSBtYXN1a2thbiBub21ib3IgdGVsZWZvbiIsIkxvZ2luLmVudGVyLnBhc3N3b3JkIjoiU2lsYSBtYXN1a2thbiBrYXRhIGxhbHVhbiIsIkxvZ2luLmZvcmdldCI6Ikx1cGEga2F0YSBsYWx1YW4/IiwiTG9naW4ucmVnaXN0ZXIiOiJEYWZ0YXIgc2VrYXJhbmciLCJSZWdpc3Rlci50aXRsZSI6IlBlbmRhZnRhcmFuIiwiUmVnaXN0ZXIudGlwcyI6IlN1ZGFoIG1lbXB1bnlhaSBha2F1bj8iLCJSZWdpc3Rlci5lbnRlci5waG9uZSI6IlNpbGEgbWFzdWtrYW4gbm9tYm9yIHRlbGVmb24iLCJSZWdpc3Rlci5lbnRlci5wYXNzd29yZCI6IlNpbGEgbWFzdWtrYW4ga2F0YSBsYWx1YW4iLCJSZWdpc3Rlci5lbnRlci5wYXkucGFzc3dvcmQiOiJTaWxhIG1hc3Vra2FuIGthdGEgbGFsdWFuIHBlbWJheWFyYW4gNiBkaWdpdCIsIlJlZ2lzdGVyLmVudGVyLmludml0ZV9jb2RlIjoiU2lsYSBtYXN1a2thbiBrb2QgamVtcHV0YW4iLCJSZWdpc3Rlci5yZWFkIjoiQmFjYSBkYW4gc2V0dWp1IiwiUmVnaXN0ZXIucHJpdmFjeSI6InBlcmphbmppYW4gcHJpdmFzaSIsIlJlZ2lzdGVyLmFncmVlIjoiU2lsYSBiYWNhIGRhbiBzZXR1anUgZGVuZ2FuIHBlcmphbmppYW4gcHJpdmFzaSJ9fSw4MzcwOmZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1uKCIyNGZiIik7ZT1hKCExKSxlLnB1c2goW3QuaSwnQGNoYXJzZXQgIlVURi04Ijtcbi8qKlxuICog6L+Z6YeM5pivdW5pLWFwcOWGhee9rueahOW4uOeUqOagt+W8j+WPmOmHj1xuICpcbiAqIHVuaS1hcHAg5a6Y5pa55omp5bGV5o+S5Lu25Y+K5o+S5Lu25biC5Zy677yIaHR0cHM6Ly9leHQuZGNsb3VkLm5ldC5jbu+8ieS4iuW+iOWkmuS4ieaWueaPkuS7tuWdh+S9v+eUqOS6hui/meS6m+agt+W8j+WPmOmHj1xuICog5aaC5p6c5L2g5piv5o+S5Lu25byA5Y+R6ICF77yM5bu66K6u5L2g5L2/55Soc2Nzc+mihOWkhOeQhu+8jOW5tuWcqOaPkuS7tuS7o+eggeS4reebtOaOpeS9v+eUqOi/meS6m+WPmOmHj++8iOaXoOmcgCBpbXBvcnQg6L+Z5Liq5paH5Lu277yJ77yM5pa55L6/55So5oi36YCa6L+H5pCt56ev5pyo55qE5pa55byP5byA5Y+R5pW05L2T6aOO5qC85LiA6Ie055qEQXBwXG4gKlxuICovXG4vKipcbiAqIOWmguaenOS9oOaYr0FwcOW8gOWPkeiAhe+8iOaPkuS7tuS9v+eUqOiAhe+8ie+8jOS9oOWPr+S7pemAmui/h+S/ruaUuei/meS6m+WPmOmHj+adpeWumuWItuiHquW3seeahOaPkuS7tuS4u+mimO+8jOWunueOsOiHquWumuS5ieS4u+mimOWKn+iDvVxuICpcbiAqIOWmguaenOS9oOeahOmhueebruWQjOagt+S9v+eUqOS6hnNjc3PpooTlpITnkIbvvIzkvaDkuZ/lj6/ku6Xnm7TmjqXlnKjkvaDnmoQgc2NzcyDku6PnoIHkuK3kvb/nlKjlpoLkuIvlj5jph4/vvIzlkIzml7bml6DpnIAgaW1wb3J0IOi/meS4quaWh+S7tlxuICovXG4vKiDpopzoibLlj5jph48gKi9cbi8qIOihjOS4uuebuOWFs+minOiJsiAqL1xuLyog5paH5a2X5Z+65pys6aKc6ImyICovXG4vKiDog4zmma/popzoibIgKi9cbi8qIOi+ueahhuminOiJsiAqL1xuLyog5bC65a+45Y+Y6YePICovXG4vKiDmloflrZflsLrlr7ggKi9cbi8qIOWbvueJh+WwuuWvuCAqL1xuLyogQm9yZGVyIFJhZGl1cyAqL1xuLyog5rC05bmz6Ze06LedICovXG4vKiDlnoLnm7Tpl7Tot50gKi9cbi8qIOmAj+aYjuW6piAqL1xuLyog5paH56ug5Zy65pmv55u45YWzICovXG4vKuavj+S4qumhtemdouWFrOWFsWNzcyAqL1xuLyoqIOWFqOWxgOWFrOWFseagt+W8jyAqL1xuLyog6K6+572ucmVt5Z+65YeG5YC8ICovaHRtbHtmb250LXNpemU6MzVweDstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJX1cbi8qIOmZkOWItuacgOWkp+WuveW6pu+8jOWxheS4reaYvuekuiAqL2h0bWwsLnVuaS10YWJiYXJ7bWF4LXdpZHRoOjQ4MHB4O21hcmdpbjphdXRvfXVuaS1pbWFnZXttYXgtd2lkdGg6MTAwJX1cbi8qIOmHjee9rum7mOiupOagt+W8jyAqLyp7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MH1ib2R5e2ZvbnQtc2l6ZTouMTRyZW07bGluZS1oZWlnaHQ6MS41O2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFBpbmdGYW5nIFNDLEhlbHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWZ9LnUtcmVsYXRpdmUsXG4udS1yZWxhe3Bvc2l0aW9uOnJlbGF0aXZlfS51LWFic29sdXRlLFxuLnUtYWJzb3twb3NpdGlvbjphYnNvbHV0ZX1cbnVuaS1pbWFnZXtkaXNwbGF5OmlubGluZS1ibG9ja311bmktdmlldyxcbnVuaS10ZXh0e2JveC1zaXppbmc6Ym9yZGVyLWJveH1cbi51LWZvbnQteHN7Zm9udC1zaXplOiU/MjI/JX0udS1mb250LXNte2ZvbnQtc2l6ZTolPzI2PyV9LnUtZm9udC1tZHtmb250LXNpemU6JT8yOD8lfS51LWZvbnQtbGd7Zm9udC1zaXplOiU/MzA/JX0udS1mb250LXhse2ZvbnQtc2l6ZTolPzM0PyV9LnUtZmxleHtcbmRpc3BsYXk6ZmxleDtcbmZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXJ9LnUtZmxleC13cmFwe2ZsZXgtd3JhcDp3cmFwfS51LWZsZXgtbm93cmFwe2ZsZXgtd3JhcDpub3dyYXB9LnUtY29sLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXJ9LnUtY29sLXRvcHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS51LWNvbC1ib3R0b217YWxpZ24taXRlbXM6ZmxleC1lbmR9LnUtcm93LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS51LXJvdy1sZWZ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS51LXJvdy1yaWdodHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LnUtcm93LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnUtcm93LWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS51LXRleHQtbGVmdHt0ZXh0LWFsaWduOmxlZnR9LnUtdGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnUtdGV4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0fS51LWZsZXgtY29se1xuZGlzcGxheTpmbGV4O1xuZmxleC1kaXJlY3Rpb246Y29sdW1ufS51LWZsZXgtMHtmbGV4OjB9LnUtZmxleC0xe2ZsZXg6MX0udS1mbGV4LTJ7ZmxleDoyfS51LWZsZXgtM3tmbGV4OjN9LnUtZmxleC00e2ZsZXg6NH0udS1mbGV4LTV7ZmxleDo1fS51LWZsZXgtNntmbGV4OjZ9LnUtZmxleC03e2ZsZXg6N30udS1mbGV4LTh7ZmxleDo4fS51LWZsZXgtOXtmbGV4Ojl9LnUtZmxleC0xMHtmbGV4OjEwfS51LWZsZXgtMTF7ZmxleDoxMX0udS1mbGV4LTEye2ZsZXg6MTJ9LnUtZm9udC05e2ZvbnQtc2l6ZTo5cHh9LnUtZm9udC0xMHtmb250LXNpemU6MTBweH0udS1mb250LTExe2ZvbnQtc2l6ZToxMXB4fS51LWZvbnQtMTJ7Zm9udC1zaXplOjEycHh9LnUtZm9udC0xM3tmb250LXNpemU6MTNweH0udS1mb250LTE0e2ZvbnQtc2l6ZToxNHB4fS51LWZvbnQtMTV7Zm9udC1zaXplOjE1cHh9LnUtZm9udC0xNntmb250LXNpemU6MTZweH0udS1mb250LTE3e2ZvbnQtc2l6ZToxN3B4fS51LWZvbnQtMTh7Zm9udC1zaXplOjE4cHh9LnUtZm9udC0xOXtmb250LXNpemU6MTlweH0udS1mb250LTIwe2ZvbnQtc2l6ZTolPzIwPyV9LnUtZm9udC0yMXtmb250LXNpemU6JT8yMT8lfS51LWZvbnQtMjJ7Zm9udC1zaXplOiU/MjI/JX0udS1mb250LTIze2ZvbnQtc2l6ZTolPzIzPyV9LnUtZm9udC0yNHtmb250LXNpemU6JT8yND8lfS51LWZvbnQtMjV7Zm9udC1zaXplOiU/MjU/JX0udS1mb250LTI2e2ZvbnQtc2l6ZTolPzI2PyV9LnUtZm9udC0yN3tmb250LXNpemU6JT8yNz8lfS51LWZvbnQtMjh7Zm9udC1zaXplOiU/Mjg/JX0udS1mb250LTI5e2ZvbnQtc2l6ZTolPzI5PyV9LnUtZm9udC0zMHtmb250LXNpemU6JT8zMD8lfS51LWZvbnQtMzF7Zm9udC1zaXplOiU/MzE/JX0udS1mb250LTMye2ZvbnQtc2l6ZTolPzMyPyV9LnUtZm9udC0zM3tmb250LXNpemU6JT8zMz8lfS51LWZvbnQtMzR7Zm9udC1zaXplOiU/MzQ/JX0udS1mb250LTM1e2ZvbnQtc2l6ZTolPzM1PyV9LnUtZm9udC0zNntmb250LXNpemU6JT8zNj8lfS51LWZvbnQtMzd7Zm9udC1zaXplOiU/Mzc/JX0udS1mb250LTM4e2ZvbnQtc2l6ZTolPzM4PyV9LnUtZm9udC0zOXtmb250LXNpemU6JT8zOT8lfS51LWZvbnQtNDB7Zm9udC1zaXplOiU/NDA/JX0udS1tYXJnaW4tMCwgLnUtbS0we21hcmdpbjolPzA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy0wLCAudS1wLTB7cGFkZGluZzolPzA/JSFpbXBvcnRhbnR9LnUtbS1sLTB7bWFyZ2luLWxlZnQ6JT8wPyUhaW1wb3J0YW50fS51LXAtbC0we3BhZGRpbmctbGVmdDolPzA/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtMHttYXJnaW4tbGVmdDolPzA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTB7cGFkZGluZy1sZWZ0OiU/MD8lIWltcG9ydGFudH0udS1tLXQtMHttYXJnaW4tdG9wOiU/MD8lIWltcG9ydGFudH0udS1wLXQtMHtwYWRkaW5nLXRvcDolPzA/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC0we21hcmdpbi10b3A6JT8wPyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTB7cGFkZGluZy10b3A6JT8wPyUhaW1wb3J0YW50fS51LW0tci0we21hcmdpbi1yaWdodDolPzA/JSFpbXBvcnRhbnR9LnUtcC1yLTB7cGFkZGluZy1yaWdodDolPzA/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTB7bWFyZ2luLXJpZ2h0OiU/MD8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTB7cGFkZGluZy1yaWdodDolPzA/JSFpbXBvcnRhbnR9LnUtbS1iLTB7bWFyZ2luLWJvdHRvbTolPzA/JSFpbXBvcnRhbnR9LnUtcC1iLTB7cGFkZGluZy1ib3R0b206JT8wPyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tMHttYXJnaW4tYm90dG9tOiU/MD8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS0we3BhZGRpbmctYm90dG9tOiU/MD8lIWltcG9ydGFudH0udS1tYXJnaW4tMiwgLnUtbS0ye21hcmdpbjolPzI/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy0yLCAudS1wLTJ7cGFkZGluZzolPzI/JSFpbXBvcnRhbnR9LnUtbS1sLTJ7bWFyZ2luLWxlZnQ6JT8yPyUhaW1wb3J0YW50fS51LXAtbC0ye3BhZGRpbmctbGVmdDolPzI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtMnttYXJnaW4tbGVmdDolPzI/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTJ7cGFkZGluZy1sZWZ0OiU/Mj8lIWltcG9ydGFudH0udS1tLXQtMnttYXJnaW4tdG9wOiU/Mj8lIWltcG9ydGFudH0udS1wLXQtMntwYWRkaW5nLXRvcDolPzI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC0ye21hcmdpbi10b3A6JT8yPyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTJ7cGFkZGluZy10b3A6JT8yPyUhaW1wb3J0YW50fS51LW0tci0ye21hcmdpbi1yaWdodDolPzI/JSFpbXBvcnRhbnR9LnUtcC1yLTJ7cGFkZGluZy1yaWdodDolPzI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTJ7bWFyZ2luLXJpZ2h0OiU/Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTJ7cGFkZGluZy1yaWdodDolPzI/JSFpbXBvcnRhbnR9LnUtbS1iLTJ7bWFyZ2luLWJvdHRvbTolPzI/JSFpbXBvcnRhbnR9LnUtcC1iLTJ7cGFkZGluZy1ib3R0b206JT8yPyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tMnttYXJnaW4tYm90dG9tOiU/Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS0ye3BhZGRpbmctYm90dG9tOiU/Mj8lIWltcG9ydGFudH0udS1tYXJnaW4tNCwgLnUtbS00e21hcmdpbjolPzQ/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy00LCAudS1wLTR7cGFkZGluZzolPzQ/JSFpbXBvcnRhbnR9LnUtbS1sLTR7bWFyZ2luLWxlZnQ6JT80PyUhaW1wb3J0YW50fS51LXAtbC00e3BhZGRpbmctbGVmdDolPzQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtNHttYXJnaW4tbGVmdDolPzQ/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTR7cGFkZGluZy1sZWZ0OiU/ND8lIWltcG9ydGFudH0udS1tLXQtNHttYXJnaW4tdG9wOiU/ND8lIWltcG9ydGFudH0udS1wLXQtNHtwYWRkaW5nLXRvcDolPzQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC00e21hcmdpbi10b3A6JT80PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTR7cGFkZGluZy10b3A6JT80PyUhaW1wb3J0YW50fS51LW0tci00e21hcmdpbi1yaWdodDolPzQ/JSFpbXBvcnRhbnR9LnUtcC1yLTR7cGFkZGluZy1yaWdodDolPzQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTR7bWFyZ2luLXJpZ2h0OiU/ND8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTR7cGFkZGluZy1yaWdodDolPzQ/JSFpbXBvcnRhbnR9LnUtbS1iLTR7bWFyZ2luLWJvdHRvbTolPzQ/JSFpbXBvcnRhbnR9LnUtcC1iLTR7cGFkZGluZy1ib3R0b206JT80PyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tNHttYXJnaW4tYm90dG9tOiU/ND8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS00e3BhZGRpbmctYm90dG9tOiU/ND8lIWltcG9ydGFudH0udS1tYXJnaW4tNSwgLnUtbS01e21hcmdpbjolPzU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy01LCAudS1wLTV7cGFkZGluZzolPzU/JSFpbXBvcnRhbnR9LnUtbS1sLTV7bWFyZ2luLWxlZnQ6JT81PyUhaW1wb3J0YW50fS51LXAtbC01e3BhZGRpbmctbGVmdDolPzU/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtNXttYXJnaW4tbGVmdDolPzU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTV7cGFkZGluZy1sZWZ0OiU/NT8lIWltcG9ydGFudH0udS1tLXQtNXttYXJnaW4tdG9wOiU/NT8lIWltcG9ydGFudH0udS1wLXQtNXtwYWRkaW5nLXRvcDolPzU/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC01e21hcmdpbi10b3A6JT81PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTV7cGFkZGluZy10b3A6JT81PyUhaW1wb3J0YW50fS51LW0tci01e21hcmdpbi1yaWdodDolPzU/JSFpbXBvcnRhbnR9LnUtcC1yLTV7cGFkZGluZy1yaWdodDolPzU/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTV7bWFyZ2luLXJpZ2h0OiU/NT8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTV7cGFkZGluZy1yaWdodDolPzU/JSFpbXBvcnRhbnR9LnUtbS1iLTV7bWFyZ2luLWJvdHRvbTolPzU/JSFpbXBvcnRhbnR9LnUtcC1iLTV7cGFkZGluZy1ib3R0b206JT81PyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tNXttYXJnaW4tYm90dG9tOiU/NT8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS01e3BhZGRpbmctYm90dG9tOiU/NT8lIWltcG9ydGFudH0udS1tYXJnaW4tNiwgLnUtbS02e21hcmdpbjolPzY/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy02LCAudS1wLTZ7cGFkZGluZzolPzY/JSFpbXBvcnRhbnR9LnUtbS1sLTZ7bWFyZ2luLWxlZnQ6JT82PyUhaW1wb3J0YW50fS51LXAtbC02e3BhZGRpbmctbGVmdDolPzY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtNnttYXJnaW4tbGVmdDolPzY/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTZ7cGFkZGluZy1sZWZ0OiU/Nj8lIWltcG9ydGFudH0udS1tLXQtNnttYXJnaW4tdG9wOiU/Nj8lIWltcG9ydGFudH0udS1wLXQtNntwYWRkaW5nLXRvcDolPzY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC02e21hcmdpbi10b3A6JT82PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTZ7cGFkZGluZy10b3A6JT82PyUhaW1wb3J0YW50fS51LW0tci02e21hcmdpbi1yaWdodDolPzY/JSFpbXBvcnRhbnR9LnUtcC1yLTZ7cGFkZGluZy1yaWdodDolPzY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTZ7bWFyZ2luLXJpZ2h0OiU/Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTZ7cGFkZGluZy1yaWdodDolPzY/JSFpbXBvcnRhbnR9LnUtbS1iLTZ7bWFyZ2luLWJvdHRvbTolPzY/JSFpbXBvcnRhbnR9LnUtcC1iLTZ7cGFkZGluZy1ib3R0b206JT82PyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tNnttYXJnaW4tYm90dG9tOiU/Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS02e3BhZGRpbmctYm90dG9tOiU/Nj8lIWltcG9ydGFudH0udS1tYXJnaW4tOCwgLnUtbS04e21hcmdpbjolPzg/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy04LCAudS1wLTh7cGFkZGluZzolPzg/JSFpbXBvcnRhbnR9LnUtbS1sLTh7bWFyZ2luLWxlZnQ6JT84PyUhaW1wb3J0YW50fS51LXAtbC04e3BhZGRpbmctbGVmdDolPzg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtOHttYXJnaW4tbGVmdDolPzg/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTh7cGFkZGluZy1sZWZ0OiU/OD8lIWltcG9ydGFudH0udS1tLXQtOHttYXJnaW4tdG9wOiU/OD8lIWltcG9ydGFudH0udS1wLXQtOHtwYWRkaW5nLXRvcDolPzg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC04e21hcmdpbi10b3A6JT84PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTh7cGFkZGluZy10b3A6JT84PyUhaW1wb3J0YW50fS51LW0tci04e21hcmdpbi1yaWdodDolPzg/JSFpbXBvcnRhbnR9LnUtcC1yLTh7cGFkZGluZy1yaWdodDolPzg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTh7bWFyZ2luLXJpZ2h0OiU/OD8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTh7cGFkZGluZy1yaWdodDolPzg/JSFpbXBvcnRhbnR9LnUtbS1iLTh7bWFyZ2luLWJvdHRvbTolPzg/JSFpbXBvcnRhbnR9LnUtcC1iLTh7cGFkZGluZy1ib3R0b206JT84PyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tOHttYXJnaW4tYm90dG9tOiU/OD8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS04e3BhZGRpbmctYm90dG9tOiU/OD8lIWltcG9ydGFudH0udS1tYXJnaW4tMTAsIC51LW0tMTB7bWFyZ2luOiU/MTA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy0xMCwgLnUtcC0xMHtwYWRkaW5nOiU/MTA/JSFpbXBvcnRhbnR9LnUtbS1sLTEwe21hcmdpbi1sZWZ0OiU/MTA/JSFpbXBvcnRhbnR9LnUtcC1sLTEwe3BhZGRpbmctbGVmdDolPzEwPyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTEwe21hcmdpbi1sZWZ0OiU/MTA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTEwe3BhZGRpbmctbGVmdDolPzEwPyUhaW1wb3J0YW50fS51LW0tdC0xMHttYXJnaW4tdG9wOiU/MTA/JSFpbXBvcnRhbnR9LnUtcC10LTEwe3BhZGRpbmctdG9wOiU/MTA/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC0xMHttYXJnaW4tdG9wOiU/MTA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtMTB7cGFkZGluZy10b3A6JT8xMD8lIWltcG9ydGFudH0udS1tLXItMTB7bWFyZ2luLXJpZ2h0OiU/MTA/JSFpbXBvcnRhbnR9LnUtcC1yLTEwe3BhZGRpbmctcmlnaHQ6JT8xMD8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtMTB7bWFyZ2luLXJpZ2h0OiU/MTA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC0xMHtwYWRkaW5nLXJpZ2h0OiU/MTA/JSFpbXBvcnRhbnR9LnUtbS1iLTEwe21hcmdpbi1ib3R0b206JT8xMD8lIWltcG9ydGFudH0udS1wLWItMTB7cGFkZGluZy1ib3R0b206JT8xMD8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTEwe21hcmdpbi1ib3R0b206JT8xMD8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS0xMHtwYWRkaW5nLWJvdHRvbTolPzEwPyUhaW1wb3J0YW50fS51LW1hcmdpbi0xMiwgLnUtbS0xMnttYXJnaW46JT8xMj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTEyLCAudS1wLTEye3BhZGRpbmc6JT8xMj8lIWltcG9ydGFudH0udS1tLWwtMTJ7bWFyZ2luLWxlZnQ6JT8xMj8lIWltcG9ydGFudH0udS1wLWwtMTJ7cGFkZGluZy1sZWZ0OiU/MTI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtMTJ7bWFyZ2luLWxlZnQ6JT8xMj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtMTJ7cGFkZGluZy1sZWZ0OiU/MTI/JSFpbXBvcnRhbnR9LnUtbS10LTEye21hcmdpbi10b3A6JT8xMj8lIWltcG9ydGFudH0udS1wLXQtMTJ7cGFkZGluZy10b3A6JT8xMj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTEye21hcmdpbi10b3A6JT8xMj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC0xMntwYWRkaW5nLXRvcDolPzEyPyUhaW1wb3J0YW50fS51LW0tci0xMnttYXJnaW4tcmlnaHQ6JT8xMj8lIWltcG9ydGFudH0udS1wLXItMTJ7cGFkZGluZy1yaWdodDolPzEyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC0xMnttYXJnaW4tcmlnaHQ6JT8xMj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTEye3BhZGRpbmctcmlnaHQ6JT8xMj8lIWltcG9ydGFudH0udS1tLWItMTJ7bWFyZ2luLWJvdHRvbTolPzEyPyUhaW1wb3J0YW50fS51LXAtYi0xMntwYWRkaW5nLWJvdHRvbTolPzEyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tMTJ7bWFyZ2luLWJvdHRvbTolPzEyPyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTEye3BhZGRpbmctYm90dG9tOiU/MTI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTE0LCAudS1tLTE0e21hcmdpbjolPzE0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctMTQsIC51LXAtMTR7cGFkZGluZzolPzE0PyUhaW1wb3J0YW50fS51LW0tbC0xNHttYXJnaW4tbGVmdDolPzE0PyUhaW1wb3J0YW50fS51LXAtbC0xNHtwYWRkaW5nLWxlZnQ6JT8xND8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC0xNHttYXJnaW4tbGVmdDolPzE0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC0xNHtwYWRkaW5nLWxlZnQ6JT8xND8lIWltcG9ydGFudH0udS1tLXQtMTR7bWFyZ2luLXRvcDolPzE0PyUhaW1wb3J0YW50fS51LXAtdC0xNHtwYWRkaW5nLXRvcDolPzE0PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtMTR7bWFyZ2luLXRvcDolPzE0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTE0e3BhZGRpbmctdG9wOiU/MTQ/JSFpbXBvcnRhbnR9LnUtbS1yLTE0e21hcmdpbi1yaWdodDolPzE0PyUhaW1wb3J0YW50fS51LXAtci0xNHtwYWRkaW5nLXJpZ2h0OiU/MTQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTE0e21hcmdpbi1yaWdodDolPzE0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtMTR7cGFkZGluZy1yaWdodDolPzE0PyUhaW1wb3J0YW50fS51LW0tYi0xNHttYXJnaW4tYm90dG9tOiU/MTQ/JSFpbXBvcnRhbnR9LnUtcC1iLTE0e3BhZGRpbmctYm90dG9tOiU/MTQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS0xNHttYXJnaW4tYm90dG9tOiU/MTQ/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tMTR7cGFkZGluZy1ib3R0b206JT8xND8lIWltcG9ydGFudH0udS1tYXJnaW4tMTUsIC51LW0tMTV7bWFyZ2luOiU/MTU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy0xNSwgLnUtcC0xNXtwYWRkaW5nOiU/MTU/JSFpbXBvcnRhbnR9LnUtbS1sLTE1e21hcmdpbi1sZWZ0OiU/MTU/JSFpbXBvcnRhbnR9LnUtcC1sLTE1e3BhZGRpbmctbGVmdDolPzE1PyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTE1e21hcmdpbi1sZWZ0OiU/MTU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTE1e3BhZGRpbmctbGVmdDolPzE1PyUhaW1wb3J0YW50fS51LW0tdC0xNXttYXJnaW4tdG9wOiU/MTU/JSFpbXBvcnRhbnR9LnUtcC10LTE1e3BhZGRpbmctdG9wOiU/MTU/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC0xNXttYXJnaW4tdG9wOiU/MTU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtMTV7cGFkZGluZy10b3A6JT8xNT8lIWltcG9ydGFudH0udS1tLXItMTV7bWFyZ2luLXJpZ2h0OiU/MTU/JSFpbXBvcnRhbnR9LnUtcC1yLTE1e3BhZGRpbmctcmlnaHQ6JT8xNT8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtMTV7bWFyZ2luLXJpZ2h0OiU/MTU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC0xNXtwYWRkaW5nLXJpZ2h0OiU/MTU/JSFpbXBvcnRhbnR9LnUtbS1iLTE1e21hcmdpbi1ib3R0b206JT8xNT8lIWltcG9ydGFudH0udS1wLWItMTV7cGFkZGluZy1ib3R0b206JT8xNT8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTE1e21hcmdpbi1ib3R0b206JT8xNT8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS0xNXtwYWRkaW5nLWJvdHRvbTolPzE1PyUhaW1wb3J0YW50fS51LW1hcmdpbi0xNiwgLnUtbS0xNnttYXJnaW46JT8xNj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTE2LCAudS1wLTE2e3BhZGRpbmc6JT8xNj8lIWltcG9ydGFudH0udS1tLWwtMTZ7bWFyZ2luLWxlZnQ6JT8xNj8lIWltcG9ydGFudH0udS1wLWwtMTZ7cGFkZGluZy1sZWZ0OiU/MTY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtMTZ7bWFyZ2luLWxlZnQ6JT8xNj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtMTZ7cGFkZGluZy1sZWZ0OiU/MTY/JSFpbXBvcnRhbnR9LnUtbS10LTE2e21hcmdpbi10b3A6JT8xNj8lIWltcG9ydGFudH0udS1wLXQtMTZ7cGFkZGluZy10b3A6JT8xNj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTE2e21hcmdpbi10b3A6JT8xNj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC0xNntwYWRkaW5nLXRvcDolPzE2PyUhaW1wb3J0YW50fS51LW0tci0xNnttYXJnaW4tcmlnaHQ6JT8xNj8lIWltcG9ydGFudH0udS1wLXItMTZ7cGFkZGluZy1yaWdodDolPzE2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC0xNnttYXJnaW4tcmlnaHQ6JT8xNj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTE2e3BhZGRpbmctcmlnaHQ6JT8xNj8lIWltcG9ydGFudH0udS1tLWItMTZ7bWFyZ2luLWJvdHRvbTolPzE2PyUhaW1wb3J0YW50fS51LXAtYi0xNntwYWRkaW5nLWJvdHRvbTolPzE2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tMTZ7bWFyZ2luLWJvdHRvbTolPzE2PyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTE2e3BhZGRpbmctYm90dG9tOiU/MTY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTE4LCAudS1tLTE4e21hcmdpbjolPzE4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctMTgsIC51LXAtMTh7cGFkZGluZzolPzE4PyUhaW1wb3J0YW50fS51LW0tbC0xOHttYXJnaW4tbGVmdDolPzE4PyUhaW1wb3J0YW50fS51LXAtbC0xOHtwYWRkaW5nLWxlZnQ6JT8xOD8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC0xOHttYXJnaW4tbGVmdDolPzE4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC0xOHtwYWRkaW5nLWxlZnQ6JT8xOD8lIWltcG9ydGFudH0udS1tLXQtMTh7bWFyZ2luLXRvcDolPzE4PyUhaW1wb3J0YW50fS51LXAtdC0xOHtwYWRkaW5nLXRvcDolPzE4PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtMTh7bWFyZ2luLXRvcDolPzE4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTE4e3BhZGRpbmctdG9wOiU/MTg/JSFpbXBvcnRhbnR9LnUtbS1yLTE4e21hcmdpbi1yaWdodDolPzE4PyUhaW1wb3J0YW50fS51LXAtci0xOHtwYWRkaW5nLXJpZ2h0OiU/MTg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTE4e21hcmdpbi1yaWdodDolPzE4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtMTh7cGFkZGluZy1yaWdodDolPzE4PyUhaW1wb3J0YW50fS51LW0tYi0xOHttYXJnaW4tYm90dG9tOiU/MTg/JSFpbXBvcnRhbnR9LnUtcC1iLTE4e3BhZGRpbmctYm90dG9tOiU/MTg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS0xOHttYXJnaW4tYm90dG9tOiU/MTg/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tMTh7cGFkZGluZy1ib3R0b206JT8xOD8lIWltcG9ydGFudH0udS1tYXJnaW4tMjAsIC51LW0tMjB7bWFyZ2luOiU/MjA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy0yMCwgLnUtcC0yMHtwYWRkaW5nOiU/MjA/JSFpbXBvcnRhbnR9LnUtbS1sLTIwe21hcmdpbi1sZWZ0OiU/MjA/JSFpbXBvcnRhbnR9LnUtcC1sLTIwe3BhZGRpbmctbGVmdDolPzIwPyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTIwe21hcmdpbi1sZWZ0OiU/MjA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTIwe3BhZGRpbmctbGVmdDolPzIwPyUhaW1wb3J0YW50fS51LW0tdC0yMHttYXJnaW4tdG9wOiU/MjA/JSFpbXBvcnRhbnR9LnUtcC10LTIwe3BhZGRpbmctdG9wOiU/MjA/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC0yMHttYXJnaW4tdG9wOiU/MjA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtMjB7cGFkZGluZy10b3A6JT8yMD8lIWltcG9ydGFudH0udS1tLXItMjB7bWFyZ2luLXJpZ2h0OiU/MjA/JSFpbXBvcnRhbnR9LnUtcC1yLTIwe3BhZGRpbmctcmlnaHQ6JT8yMD8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtMjB7bWFyZ2luLXJpZ2h0OiU/MjA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC0yMHtwYWRkaW5nLXJpZ2h0OiU/MjA/JSFpbXBvcnRhbnR9LnUtbS1iLTIwe21hcmdpbi1ib3R0b206JT8yMD8lIWltcG9ydGFudH0udS1wLWItMjB7cGFkZGluZy1ib3R0b206JT8yMD8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTIwe21hcmdpbi1ib3R0b206JT8yMD8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS0yMHtwYWRkaW5nLWJvdHRvbTolPzIwPyUhaW1wb3J0YW50fS51LW1hcmdpbi0yMiwgLnUtbS0yMnttYXJnaW46JT8yMj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTIyLCAudS1wLTIye3BhZGRpbmc6JT8yMj8lIWltcG9ydGFudH0udS1tLWwtMjJ7bWFyZ2luLWxlZnQ6JT8yMj8lIWltcG9ydGFudH0udS1wLWwtMjJ7cGFkZGluZy1sZWZ0OiU/MjI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtMjJ7bWFyZ2luLWxlZnQ6JT8yMj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtMjJ7cGFkZGluZy1sZWZ0OiU/MjI/JSFpbXBvcnRhbnR9LnUtbS10LTIye21hcmdpbi10b3A6JT8yMj8lIWltcG9ydGFudH0udS1wLXQtMjJ7cGFkZGluZy10b3A6JT8yMj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTIye21hcmdpbi10b3A6JT8yMj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC0yMntwYWRkaW5nLXRvcDolPzIyPyUhaW1wb3J0YW50fS51LW0tci0yMnttYXJnaW4tcmlnaHQ6JT8yMj8lIWltcG9ydGFudH0udS1wLXItMjJ7cGFkZGluZy1yaWdodDolPzIyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC0yMnttYXJnaW4tcmlnaHQ6JT8yMj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTIye3BhZGRpbmctcmlnaHQ6JT8yMj8lIWltcG9ydGFudH0udS1tLWItMjJ7bWFyZ2luLWJvdHRvbTolPzIyPyUhaW1wb3J0YW50fS51LXAtYi0yMntwYWRkaW5nLWJvdHRvbTolPzIyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tMjJ7bWFyZ2luLWJvdHRvbTolPzIyPyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTIye3BhZGRpbmctYm90dG9tOiU/MjI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTI0LCAudS1tLTI0e21hcmdpbjolPzI0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctMjQsIC51LXAtMjR7cGFkZGluZzolPzI0PyUhaW1wb3J0YW50fS51LW0tbC0yNHttYXJnaW4tbGVmdDolPzI0PyUhaW1wb3J0YW50fS51LXAtbC0yNHtwYWRkaW5nLWxlZnQ6JT8yND8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC0yNHttYXJnaW4tbGVmdDolPzI0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC0yNHtwYWRkaW5nLWxlZnQ6JT8yND8lIWltcG9ydGFudH0udS1tLXQtMjR7bWFyZ2luLXRvcDolPzI0PyUhaW1wb3J0YW50fS51LXAtdC0yNHtwYWRkaW5nLXRvcDolPzI0PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtMjR7bWFyZ2luLXRvcDolPzI0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTI0e3BhZGRpbmctdG9wOiU/MjQ/JSFpbXBvcnRhbnR9LnUtbS1yLTI0e21hcmdpbi1yaWdodDolPzI0PyUhaW1wb3J0YW50fS51LXAtci0yNHtwYWRkaW5nLXJpZ2h0OiU/MjQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTI0e21hcmdpbi1yaWdodDolPzI0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtMjR7cGFkZGluZy1yaWdodDolPzI0PyUhaW1wb3J0YW50fS51LW0tYi0yNHttYXJnaW4tYm90dG9tOiU/MjQ/JSFpbXBvcnRhbnR9LnUtcC1iLTI0e3BhZGRpbmctYm90dG9tOiU/MjQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS0yNHttYXJnaW4tYm90dG9tOiU/MjQ/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tMjR7cGFkZGluZy1ib3R0b206JT8yND8lIWltcG9ydGFudH0udS1tYXJnaW4tMjUsIC51LW0tMjV7bWFyZ2luOiU/MjU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy0yNSwgLnUtcC0yNXtwYWRkaW5nOiU/MjU/JSFpbXBvcnRhbnR9LnUtbS1sLTI1e21hcmdpbi1sZWZ0OiU/MjU/JSFpbXBvcnRhbnR9LnUtcC1sLTI1e3BhZGRpbmctbGVmdDolPzI1PyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTI1e21hcmdpbi1sZWZ0OiU/MjU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTI1e3BhZGRpbmctbGVmdDolPzI1PyUhaW1wb3J0YW50fS51LW0tdC0yNXttYXJnaW4tdG9wOiU/MjU/JSFpbXBvcnRhbnR9LnUtcC10LTI1e3BhZGRpbmctdG9wOiU/MjU/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC0yNXttYXJnaW4tdG9wOiU/MjU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtMjV7cGFkZGluZy10b3A6JT8yNT8lIWltcG9ydGFudH0udS1tLXItMjV7bWFyZ2luLXJpZ2h0OiU/MjU/JSFpbXBvcnRhbnR9LnUtcC1yLTI1e3BhZGRpbmctcmlnaHQ6JT8yNT8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtMjV7bWFyZ2luLXJpZ2h0OiU/MjU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC0yNXtwYWRkaW5nLXJpZ2h0OiU/MjU/JSFpbXBvcnRhbnR9LnUtbS1iLTI1e21hcmdpbi1ib3R0b206JT8yNT8lIWltcG9ydGFudH0udS1wLWItMjV7cGFkZGluZy1ib3R0b206JT8yNT8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTI1e21hcmdpbi1ib3R0b206JT8yNT8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS0yNXtwYWRkaW5nLWJvdHRvbTolPzI1PyUhaW1wb3J0YW50fS51LW1hcmdpbi0yNiwgLnUtbS0yNnttYXJnaW46JT8yNj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTI2LCAudS1wLTI2e3BhZGRpbmc6JT8yNj8lIWltcG9ydGFudH0udS1tLWwtMjZ7bWFyZ2luLWxlZnQ6JT8yNj8lIWltcG9ydGFudH0udS1wLWwtMjZ7cGFkZGluZy1sZWZ0OiU/MjY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtMjZ7bWFyZ2luLWxlZnQ6JT8yNj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtMjZ7cGFkZGluZy1sZWZ0OiU/MjY/JSFpbXBvcnRhbnR9LnUtbS10LTI2e21hcmdpbi10b3A6JT8yNj8lIWltcG9ydGFudH0udS1wLXQtMjZ7cGFkZGluZy10b3A6JT8yNj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTI2e21hcmdpbi10b3A6JT8yNj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC0yNntwYWRkaW5nLXRvcDolPzI2PyUhaW1wb3J0YW50fS51LW0tci0yNnttYXJnaW4tcmlnaHQ6JT8yNj8lIWltcG9ydGFudH0udS1wLXItMjZ7cGFkZGluZy1yaWdodDolPzI2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC0yNnttYXJnaW4tcmlnaHQ6JT8yNj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTI2e3BhZGRpbmctcmlnaHQ6JT8yNj8lIWltcG9ydGFudH0udS1tLWItMjZ7bWFyZ2luLWJvdHRvbTolPzI2PyUhaW1wb3J0YW50fS51LXAtYi0yNntwYWRkaW5nLWJvdHRvbTolPzI2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tMjZ7bWFyZ2luLWJvdHRvbTolPzI2PyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTI2e3BhZGRpbmctYm90dG9tOiU/MjY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTI4LCAudS1tLTI4e21hcmdpbjolPzI4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctMjgsIC51LXAtMjh7cGFkZGluZzolPzI4PyUhaW1wb3J0YW50fS51LW0tbC0yOHttYXJnaW4tbGVmdDolPzI4PyUhaW1wb3J0YW50fS51LXAtbC0yOHtwYWRkaW5nLWxlZnQ6JT8yOD8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC0yOHttYXJnaW4tbGVmdDolPzI4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC0yOHtwYWRkaW5nLWxlZnQ6JT8yOD8lIWltcG9ydGFudH0udS1tLXQtMjh7bWFyZ2luLXRvcDolPzI4PyUhaW1wb3J0YW50fS51LXAtdC0yOHtwYWRkaW5nLXRvcDolPzI4PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtMjh7bWFyZ2luLXRvcDolPzI4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTI4e3BhZGRpbmctdG9wOiU/Mjg/JSFpbXBvcnRhbnR9LnUtbS1yLTI4e21hcmdpbi1yaWdodDolPzI4PyUhaW1wb3J0YW50fS51LXAtci0yOHtwYWRkaW5nLXJpZ2h0OiU/Mjg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTI4e21hcmdpbi1yaWdodDolPzI4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtMjh7cGFkZGluZy1yaWdodDolPzI4PyUhaW1wb3J0YW50fS51LW0tYi0yOHttYXJnaW4tYm90dG9tOiU/Mjg/JSFpbXBvcnRhbnR9LnUtcC1iLTI4e3BhZGRpbmctYm90dG9tOiU/Mjg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS0yOHttYXJnaW4tYm90dG9tOiU/Mjg/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tMjh7cGFkZGluZy1ib3R0b206JT8yOD8lIWltcG9ydGFudH0udS1tYXJnaW4tMzAsIC51LW0tMzB7bWFyZ2luOiU/MzA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy0zMCwgLnUtcC0zMHtwYWRkaW5nOiU/MzA/JSFpbXBvcnRhbnR9LnUtbS1sLTMwe21hcmdpbi1sZWZ0OiU/MzA/JSFpbXBvcnRhbnR9LnUtcC1sLTMwe3BhZGRpbmctbGVmdDolPzMwPyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTMwe21hcmdpbi1sZWZ0OiU/MzA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTMwe3BhZGRpbmctbGVmdDolPzMwPyUhaW1wb3J0YW50fS51LW0tdC0zMHttYXJnaW4tdG9wOiU/MzA/JSFpbXBvcnRhbnR9LnUtcC10LTMwe3BhZGRpbmctdG9wOiU/MzA/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC0zMHttYXJnaW4tdG9wOiU/MzA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtMzB7cGFkZGluZy10b3A6JT8zMD8lIWltcG9ydGFudH0udS1tLXItMzB7bWFyZ2luLXJpZ2h0OiU/MzA/JSFpbXBvcnRhbnR9LnUtcC1yLTMwe3BhZGRpbmctcmlnaHQ6JT8zMD8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtMzB7bWFyZ2luLXJpZ2h0OiU/MzA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC0zMHtwYWRkaW5nLXJpZ2h0OiU/MzA/JSFpbXBvcnRhbnR9LnUtbS1iLTMwe21hcmdpbi1ib3R0b206JT8zMD8lIWltcG9ydGFudH0udS1wLWItMzB7cGFkZGluZy1ib3R0b206JT8zMD8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTMwe21hcmdpbi1ib3R0b206JT8zMD8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS0zMHtwYWRkaW5nLWJvdHRvbTolPzMwPyUhaW1wb3J0YW50fS51LW1hcmdpbi0zMiwgLnUtbS0zMnttYXJnaW46JT8zMj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTMyLCAudS1wLTMye3BhZGRpbmc6JT8zMj8lIWltcG9ydGFudH0udS1tLWwtMzJ7bWFyZ2luLWxlZnQ6JT8zMj8lIWltcG9ydGFudH0udS1wLWwtMzJ7cGFkZGluZy1sZWZ0OiU/MzI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtMzJ7bWFyZ2luLWxlZnQ6JT8zMj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtMzJ7cGFkZGluZy1sZWZ0OiU/MzI/JSFpbXBvcnRhbnR9LnUtbS10LTMye21hcmdpbi10b3A6JT8zMj8lIWltcG9ydGFudH0udS1wLXQtMzJ7cGFkZGluZy10b3A6JT8zMj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTMye21hcmdpbi10b3A6JT8zMj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC0zMntwYWRkaW5nLXRvcDolPzMyPyUhaW1wb3J0YW50fS51LW0tci0zMnttYXJnaW4tcmlnaHQ6JT8zMj8lIWltcG9ydGFudH0udS1wLXItMzJ7cGFkZGluZy1yaWdodDolPzMyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC0zMnttYXJnaW4tcmlnaHQ6JT8zMj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTMye3BhZGRpbmctcmlnaHQ6JT8zMj8lIWltcG9ydGFudH0udS1tLWItMzJ7bWFyZ2luLWJvdHRvbTolPzMyPyUhaW1wb3J0YW50fS51LXAtYi0zMntwYWRkaW5nLWJvdHRvbTolPzMyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tMzJ7bWFyZ2luLWJvdHRvbTolPzMyPyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTMye3BhZGRpbmctYm90dG9tOiU/MzI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTM0LCAudS1tLTM0e21hcmdpbjolPzM0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctMzQsIC51LXAtMzR7cGFkZGluZzolPzM0PyUhaW1wb3J0YW50fS51LW0tbC0zNHttYXJnaW4tbGVmdDolPzM0PyUhaW1wb3J0YW50fS51LXAtbC0zNHtwYWRkaW5nLWxlZnQ6JT8zND8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC0zNHttYXJnaW4tbGVmdDolPzM0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC0zNHtwYWRkaW5nLWxlZnQ6JT8zND8lIWltcG9ydGFudH0udS1tLXQtMzR7bWFyZ2luLXRvcDolPzM0PyUhaW1wb3J0YW50fS51LXAtdC0zNHtwYWRkaW5nLXRvcDolPzM0PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtMzR7bWFyZ2luLXRvcDolPzM0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTM0e3BhZGRpbmctdG9wOiU/MzQ/JSFpbXBvcnRhbnR9LnUtbS1yLTM0e21hcmdpbi1yaWdodDolPzM0PyUhaW1wb3J0YW50fS51LXAtci0zNHtwYWRkaW5nLXJpZ2h0OiU/MzQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTM0e21hcmdpbi1yaWdodDolPzM0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtMzR7cGFkZGluZy1yaWdodDolPzM0PyUhaW1wb3J0YW50fS51LW0tYi0zNHttYXJnaW4tYm90dG9tOiU/MzQ/JSFpbXBvcnRhbnR9LnUtcC1iLTM0e3BhZGRpbmctYm90dG9tOiU/MzQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS0zNHttYXJnaW4tYm90dG9tOiU/MzQ/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tMzR7cGFkZGluZy1ib3R0b206JT8zND8lIWltcG9ydGFudH0udS1tYXJnaW4tMzUsIC51LW0tMzV7bWFyZ2luOiU/MzU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy0zNSwgLnUtcC0zNXtwYWRkaW5nOiU/MzU/JSFpbXBvcnRhbnR9LnUtbS1sLTM1e21hcmdpbi1sZWZ0OiU/MzU/JSFpbXBvcnRhbnR9LnUtcC1sLTM1e3BhZGRpbmctbGVmdDolPzM1PyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTM1e21hcmdpbi1sZWZ0OiU/MzU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTM1e3BhZGRpbmctbGVmdDolPzM1PyUhaW1wb3J0YW50fS51LW0tdC0zNXttYXJnaW4tdG9wOiU/MzU/JSFpbXBvcnRhbnR9LnUtcC10LTM1e3BhZGRpbmctdG9wOiU/MzU/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC0zNXttYXJnaW4tdG9wOiU/MzU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtMzV7cGFkZGluZy10b3A6JT8zNT8lIWltcG9ydGFudH0udS1tLXItMzV7bWFyZ2luLXJpZ2h0OiU/MzU/JSFpbXBvcnRhbnR9LnUtcC1yLTM1e3BhZGRpbmctcmlnaHQ6JT8zNT8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtMzV7bWFyZ2luLXJpZ2h0OiU/MzU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC0zNXtwYWRkaW5nLXJpZ2h0OiU/MzU/JSFpbXBvcnRhbnR9LnUtbS1iLTM1e21hcmdpbi1ib3R0b206JT8zNT8lIWltcG9ydGFudH0udS1wLWItMzV7cGFkZGluZy1ib3R0b206JT8zNT8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTM1e21hcmdpbi1ib3R0b206JT8zNT8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS0zNXtwYWRkaW5nLWJvdHRvbTolPzM1PyUhaW1wb3J0YW50fS51LW1hcmdpbi0zNiwgLnUtbS0zNnttYXJnaW46JT8zNj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTM2LCAudS1wLTM2e3BhZGRpbmc6JT8zNj8lIWltcG9ydGFudH0udS1tLWwtMzZ7bWFyZ2luLWxlZnQ6JT8zNj8lIWltcG9ydGFudH0udS1wLWwtMzZ7cGFkZGluZy1sZWZ0OiU/MzY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtMzZ7bWFyZ2luLWxlZnQ6JT8zNj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtMzZ7cGFkZGluZy1sZWZ0OiU/MzY/JSFpbXBvcnRhbnR9LnUtbS10LTM2e21hcmdpbi10b3A6JT8zNj8lIWltcG9ydGFudH0udS1wLXQtMzZ7cGFkZGluZy10b3A6JT8zNj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTM2e21hcmdpbi10b3A6JT8zNj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC0zNntwYWRkaW5nLXRvcDolPzM2PyUhaW1wb3J0YW50fS51LW0tci0zNnttYXJnaW4tcmlnaHQ6JT8zNj8lIWltcG9ydGFudH0udS1wLXItMzZ7cGFkZGluZy1yaWdodDolPzM2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC0zNnttYXJnaW4tcmlnaHQ6JT8zNj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTM2e3BhZGRpbmctcmlnaHQ6JT8zNj8lIWltcG9ydGFudH0udS1tLWItMzZ7bWFyZ2luLWJvdHRvbTolPzM2PyUhaW1wb3J0YW50fS51LXAtYi0zNntwYWRkaW5nLWJvdHRvbTolPzM2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tMzZ7bWFyZ2luLWJvdHRvbTolPzM2PyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTM2e3BhZGRpbmctYm90dG9tOiU/MzY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTM4LCAudS1tLTM4e21hcmdpbjolPzM4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctMzgsIC51LXAtMzh7cGFkZGluZzolPzM4PyUhaW1wb3J0YW50fS51LW0tbC0zOHttYXJnaW4tbGVmdDolPzM4PyUhaW1wb3J0YW50fS51LXAtbC0zOHtwYWRkaW5nLWxlZnQ6JT8zOD8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC0zOHttYXJnaW4tbGVmdDolPzM4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC0zOHtwYWRkaW5nLWxlZnQ6JT8zOD8lIWltcG9ydGFudH0udS1tLXQtMzh7bWFyZ2luLXRvcDolPzM4PyUhaW1wb3J0YW50fS51LXAtdC0zOHtwYWRkaW5nLXRvcDolPzM4PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtMzh7bWFyZ2luLXRvcDolPzM4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTM4e3BhZGRpbmctdG9wOiU/Mzg/JSFpbXBvcnRhbnR9LnUtbS1yLTM4e21hcmdpbi1yaWdodDolPzM4PyUhaW1wb3J0YW50fS51LXAtci0zOHtwYWRkaW5nLXJpZ2h0OiU/Mzg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTM4e21hcmdpbi1yaWdodDolPzM4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtMzh7cGFkZGluZy1yaWdodDolPzM4PyUhaW1wb3J0YW50fS51LW0tYi0zOHttYXJnaW4tYm90dG9tOiU/Mzg/JSFpbXBvcnRhbnR9LnUtcC1iLTM4e3BhZGRpbmctYm90dG9tOiU/Mzg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS0zOHttYXJnaW4tYm90dG9tOiU/Mzg/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tMzh7cGFkZGluZy1ib3R0b206JT8zOD8lIWltcG9ydGFudH0udS1tYXJnaW4tNDAsIC51LW0tNDB7bWFyZ2luOiU/NDA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy00MCwgLnUtcC00MHtwYWRkaW5nOiU/NDA/JSFpbXBvcnRhbnR9LnUtbS1sLTQwe21hcmdpbi1sZWZ0OiU/NDA/JSFpbXBvcnRhbnR9LnUtcC1sLTQwe3BhZGRpbmctbGVmdDolPzQwPyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTQwe21hcmdpbi1sZWZ0OiU/NDA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTQwe3BhZGRpbmctbGVmdDolPzQwPyUhaW1wb3J0YW50fS51LW0tdC00MHttYXJnaW4tdG9wOiU/NDA/JSFpbXBvcnRhbnR9LnUtcC10LTQwe3BhZGRpbmctdG9wOiU/NDA/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC00MHttYXJnaW4tdG9wOiU/NDA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtNDB7cGFkZGluZy10b3A6JT80MD8lIWltcG9ydGFudH0udS1tLXItNDB7bWFyZ2luLXJpZ2h0OiU/NDA/JSFpbXBvcnRhbnR9LnUtcC1yLTQwe3BhZGRpbmctcmlnaHQ6JT80MD8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtNDB7bWFyZ2luLXJpZ2h0OiU/NDA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC00MHtwYWRkaW5nLXJpZ2h0OiU/NDA/JSFpbXBvcnRhbnR9LnUtbS1iLTQwe21hcmdpbi1ib3R0b206JT80MD8lIWltcG9ydGFudH0udS1wLWItNDB7cGFkZGluZy1ib3R0b206JT80MD8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTQwe21hcmdpbi1ib3R0b206JT80MD8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS00MHtwYWRkaW5nLWJvdHRvbTolPzQwPyUhaW1wb3J0YW50fS51LW1hcmdpbi00MiwgLnUtbS00MnttYXJnaW46JT80Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTQyLCAudS1wLTQye3BhZGRpbmc6JT80Mj8lIWltcG9ydGFudH0udS1tLWwtNDJ7bWFyZ2luLWxlZnQ6JT80Mj8lIWltcG9ydGFudH0udS1wLWwtNDJ7cGFkZGluZy1sZWZ0OiU/NDI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtNDJ7bWFyZ2luLWxlZnQ6JT80Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtNDJ7cGFkZGluZy1sZWZ0OiU/NDI/JSFpbXBvcnRhbnR9LnUtbS10LTQye21hcmdpbi10b3A6JT80Mj8lIWltcG9ydGFudH0udS1wLXQtNDJ7cGFkZGluZy10b3A6JT80Mj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTQye21hcmdpbi10b3A6JT80Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC00MntwYWRkaW5nLXRvcDolPzQyPyUhaW1wb3J0YW50fS51LW0tci00MnttYXJnaW4tcmlnaHQ6JT80Mj8lIWltcG9ydGFudH0udS1wLXItNDJ7cGFkZGluZy1yaWdodDolPzQyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC00MnttYXJnaW4tcmlnaHQ6JT80Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTQye3BhZGRpbmctcmlnaHQ6JT80Mj8lIWltcG9ydGFudH0udS1tLWItNDJ7bWFyZ2luLWJvdHRvbTolPzQyPyUhaW1wb3J0YW50fS51LXAtYi00MntwYWRkaW5nLWJvdHRvbTolPzQyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tNDJ7bWFyZ2luLWJvdHRvbTolPzQyPyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTQye3BhZGRpbmctYm90dG9tOiU/NDI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTQ0LCAudS1tLTQ0e21hcmdpbjolPzQ0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctNDQsIC51LXAtNDR7cGFkZGluZzolPzQ0PyUhaW1wb3J0YW50fS51LW0tbC00NHttYXJnaW4tbGVmdDolPzQ0PyUhaW1wb3J0YW50fS51LXAtbC00NHtwYWRkaW5nLWxlZnQ6JT80ND8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC00NHttYXJnaW4tbGVmdDolPzQ0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC00NHtwYWRkaW5nLWxlZnQ6JT80ND8lIWltcG9ydGFudH0udS1tLXQtNDR7bWFyZ2luLXRvcDolPzQ0PyUhaW1wb3J0YW50fS51LXAtdC00NHtwYWRkaW5nLXRvcDolPzQ0PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtNDR7bWFyZ2luLXRvcDolPzQ0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTQ0e3BhZGRpbmctdG9wOiU/NDQ/JSFpbXBvcnRhbnR9LnUtbS1yLTQ0e21hcmdpbi1yaWdodDolPzQ0PyUhaW1wb3J0YW50fS51LXAtci00NHtwYWRkaW5nLXJpZ2h0OiU/NDQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTQ0e21hcmdpbi1yaWdodDolPzQ0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtNDR7cGFkZGluZy1yaWdodDolPzQ0PyUhaW1wb3J0YW50fS51LW0tYi00NHttYXJnaW4tYm90dG9tOiU/NDQ/JSFpbXBvcnRhbnR9LnUtcC1iLTQ0e3BhZGRpbmctYm90dG9tOiU/NDQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS00NHttYXJnaW4tYm90dG9tOiU/NDQ/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tNDR7cGFkZGluZy1ib3R0b206JT80ND8lIWltcG9ydGFudH0udS1tYXJnaW4tNDUsIC51LW0tNDV7bWFyZ2luOiU/NDU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy00NSwgLnUtcC00NXtwYWRkaW5nOiU/NDU/JSFpbXBvcnRhbnR9LnUtbS1sLTQ1e21hcmdpbi1sZWZ0OiU/NDU/JSFpbXBvcnRhbnR9LnUtcC1sLTQ1e3BhZGRpbmctbGVmdDolPzQ1PyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTQ1e21hcmdpbi1sZWZ0OiU/NDU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTQ1e3BhZGRpbmctbGVmdDolPzQ1PyUhaW1wb3J0YW50fS51LW0tdC00NXttYXJnaW4tdG9wOiU/NDU/JSFpbXBvcnRhbnR9LnUtcC10LTQ1e3BhZGRpbmctdG9wOiU/NDU/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC00NXttYXJnaW4tdG9wOiU/NDU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtNDV7cGFkZGluZy10b3A6JT80NT8lIWltcG9ydGFudH0udS1tLXItNDV7bWFyZ2luLXJpZ2h0OiU/NDU/JSFpbXBvcnRhbnR9LnUtcC1yLTQ1e3BhZGRpbmctcmlnaHQ6JT80NT8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtNDV7bWFyZ2luLXJpZ2h0OiU/NDU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC00NXtwYWRkaW5nLXJpZ2h0OiU/NDU/JSFpbXBvcnRhbnR9LnUtbS1iLTQ1e21hcmdpbi1ib3R0b206JT80NT8lIWltcG9ydGFudH0udS1wLWItNDV7cGFkZGluZy1ib3R0b206JT80NT8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTQ1e21hcmdpbi1ib3R0b206JT80NT8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS00NXtwYWRkaW5nLWJvdHRvbTolPzQ1PyUhaW1wb3J0YW50fS51LW1hcmdpbi00NiwgLnUtbS00NnttYXJnaW46JT80Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTQ2LCAudS1wLTQ2e3BhZGRpbmc6JT80Nj8lIWltcG9ydGFudH0udS1tLWwtNDZ7bWFyZ2luLWxlZnQ6JT80Nj8lIWltcG9ydGFudH0udS1wLWwtNDZ7cGFkZGluZy1sZWZ0OiU/NDY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtNDZ7bWFyZ2luLWxlZnQ6JT80Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtNDZ7cGFkZGluZy1sZWZ0OiU/NDY/JSFpbXBvcnRhbnR9LnUtbS10LTQ2e21hcmdpbi10b3A6JT80Nj8lIWltcG9ydGFudH0udS1wLXQtNDZ7cGFkZGluZy10b3A6JT80Nj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTQ2e21hcmdpbi10b3A6JT80Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC00NntwYWRkaW5nLXRvcDolPzQ2PyUhaW1wb3J0YW50fS51LW0tci00NnttYXJnaW4tcmlnaHQ6JT80Nj8lIWltcG9ydGFudH0udS1wLXItNDZ7cGFkZGluZy1yaWdodDolPzQ2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC00NnttYXJnaW4tcmlnaHQ6JT80Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTQ2e3BhZGRpbmctcmlnaHQ6JT80Nj8lIWltcG9ydGFudH0udS1tLWItNDZ7bWFyZ2luLWJvdHRvbTolPzQ2PyUhaW1wb3J0YW50fS51LXAtYi00NntwYWRkaW5nLWJvdHRvbTolPzQ2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tNDZ7bWFyZ2luLWJvdHRvbTolPzQ2PyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTQ2e3BhZGRpbmctYm90dG9tOiU/NDY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTQ4LCAudS1tLTQ4e21hcmdpbjolPzQ4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctNDgsIC51LXAtNDh7cGFkZGluZzolPzQ4PyUhaW1wb3J0YW50fS51LW0tbC00OHttYXJnaW4tbGVmdDolPzQ4PyUhaW1wb3J0YW50fS51LXAtbC00OHtwYWRkaW5nLWxlZnQ6JT80OD8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC00OHttYXJnaW4tbGVmdDolPzQ4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC00OHtwYWRkaW5nLWxlZnQ6JT80OD8lIWltcG9ydGFudH0udS1tLXQtNDh7bWFyZ2luLXRvcDolPzQ4PyUhaW1wb3J0YW50fS51LXAtdC00OHtwYWRkaW5nLXRvcDolPzQ4PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtNDh7bWFyZ2luLXRvcDolPzQ4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTQ4e3BhZGRpbmctdG9wOiU/NDg/JSFpbXBvcnRhbnR9LnUtbS1yLTQ4e21hcmdpbi1yaWdodDolPzQ4PyUhaW1wb3J0YW50fS51LXAtci00OHtwYWRkaW5nLXJpZ2h0OiU/NDg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTQ4e21hcmdpbi1yaWdodDolPzQ4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtNDh7cGFkZGluZy1yaWdodDolPzQ4PyUhaW1wb3J0YW50fS51LW0tYi00OHttYXJnaW4tYm90dG9tOiU/NDg/JSFpbXBvcnRhbnR9LnUtcC1iLTQ4e3BhZGRpbmctYm90dG9tOiU/NDg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS00OHttYXJnaW4tYm90dG9tOiU/NDg/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tNDh7cGFkZGluZy1ib3R0b206JT80OD8lIWltcG9ydGFudH0udS1tYXJnaW4tNTAsIC51LW0tNTB7bWFyZ2luOiU/NTA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy01MCwgLnUtcC01MHtwYWRkaW5nOiU/NTA/JSFpbXBvcnRhbnR9LnUtbS1sLTUwe21hcmdpbi1sZWZ0OiU/NTA/JSFpbXBvcnRhbnR9LnUtcC1sLTUwe3BhZGRpbmctbGVmdDolPzUwPyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTUwe21hcmdpbi1sZWZ0OiU/NTA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTUwe3BhZGRpbmctbGVmdDolPzUwPyUhaW1wb3J0YW50fS51LW0tdC01MHttYXJnaW4tdG9wOiU/NTA/JSFpbXBvcnRhbnR9LnUtcC10LTUwe3BhZGRpbmctdG9wOiU/NTA/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC01MHttYXJnaW4tdG9wOiU/NTA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtNTB7cGFkZGluZy10b3A6JT81MD8lIWltcG9ydGFudH0udS1tLXItNTB7bWFyZ2luLXJpZ2h0OiU/NTA/JSFpbXBvcnRhbnR9LnUtcC1yLTUwe3BhZGRpbmctcmlnaHQ6JT81MD8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtNTB7bWFyZ2luLXJpZ2h0OiU/NTA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC01MHtwYWRkaW5nLXJpZ2h0OiU/NTA/JSFpbXBvcnRhbnR9LnUtbS1iLTUwe21hcmdpbi1ib3R0b206JT81MD8lIWltcG9ydGFudH0udS1wLWItNTB7cGFkZGluZy1ib3R0b206JT81MD8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTUwe21hcmdpbi1ib3R0b206JT81MD8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS01MHtwYWRkaW5nLWJvdHRvbTolPzUwPyUhaW1wb3J0YW50fS51LW1hcmdpbi01MiwgLnUtbS01MnttYXJnaW46JT81Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTUyLCAudS1wLTUye3BhZGRpbmc6JT81Mj8lIWltcG9ydGFudH0udS1tLWwtNTJ7bWFyZ2luLWxlZnQ6JT81Mj8lIWltcG9ydGFudH0udS1wLWwtNTJ7cGFkZGluZy1sZWZ0OiU/NTI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtNTJ7bWFyZ2luLWxlZnQ6JT81Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtNTJ7cGFkZGluZy1sZWZ0OiU/NTI/JSFpbXBvcnRhbnR9LnUtbS10LTUye21hcmdpbi10b3A6JT81Mj8lIWltcG9ydGFudH0udS1wLXQtNTJ7cGFkZGluZy10b3A6JT81Mj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTUye21hcmdpbi10b3A6JT81Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC01MntwYWRkaW5nLXRvcDolPzUyPyUhaW1wb3J0YW50fS51LW0tci01MnttYXJnaW4tcmlnaHQ6JT81Mj8lIWltcG9ydGFudH0udS1wLXItNTJ7cGFkZGluZy1yaWdodDolPzUyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC01MnttYXJnaW4tcmlnaHQ6JT81Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTUye3BhZGRpbmctcmlnaHQ6JT81Mj8lIWltcG9ydGFudH0udS1tLWItNTJ7bWFyZ2luLWJvdHRvbTolPzUyPyUhaW1wb3J0YW50fS51LXAtYi01MntwYWRkaW5nLWJvdHRvbTolPzUyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tNTJ7bWFyZ2luLWJvdHRvbTolPzUyPyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTUye3BhZGRpbmctYm90dG9tOiU/NTI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTU0LCAudS1tLTU0e21hcmdpbjolPzU0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctNTQsIC51LXAtNTR7cGFkZGluZzolPzU0PyUhaW1wb3J0YW50fS51LW0tbC01NHttYXJnaW4tbGVmdDolPzU0PyUhaW1wb3J0YW50fS51LXAtbC01NHtwYWRkaW5nLWxlZnQ6JT81ND8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC01NHttYXJnaW4tbGVmdDolPzU0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC01NHtwYWRkaW5nLWxlZnQ6JT81ND8lIWltcG9ydGFudH0udS1tLXQtNTR7bWFyZ2luLXRvcDolPzU0PyUhaW1wb3J0YW50fS51LXAtdC01NHtwYWRkaW5nLXRvcDolPzU0PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtNTR7bWFyZ2luLXRvcDolPzU0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTU0e3BhZGRpbmctdG9wOiU/NTQ/JSFpbXBvcnRhbnR9LnUtbS1yLTU0e21hcmdpbi1yaWdodDolPzU0PyUhaW1wb3J0YW50fS51LXAtci01NHtwYWRkaW5nLXJpZ2h0OiU/NTQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTU0e21hcmdpbi1yaWdodDolPzU0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtNTR7cGFkZGluZy1yaWdodDolPzU0PyUhaW1wb3J0YW50fS51LW0tYi01NHttYXJnaW4tYm90dG9tOiU/NTQ/JSFpbXBvcnRhbnR9LnUtcC1iLTU0e3BhZGRpbmctYm90dG9tOiU/NTQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS01NHttYXJnaW4tYm90dG9tOiU/NTQ/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tNTR7cGFkZGluZy1ib3R0b206JT81ND8lIWltcG9ydGFudH0udS1tYXJnaW4tNTUsIC51LW0tNTV7bWFyZ2luOiU/NTU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy01NSwgLnUtcC01NXtwYWRkaW5nOiU/NTU/JSFpbXBvcnRhbnR9LnUtbS1sLTU1e21hcmdpbi1sZWZ0OiU/NTU/JSFpbXBvcnRhbnR9LnUtcC1sLTU1e3BhZGRpbmctbGVmdDolPzU1PyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTU1e21hcmdpbi1sZWZ0OiU/NTU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTU1e3BhZGRpbmctbGVmdDolPzU1PyUhaW1wb3J0YW50fS51LW0tdC01NXttYXJnaW4tdG9wOiU/NTU/JSFpbXBvcnRhbnR9LnUtcC10LTU1e3BhZGRpbmctdG9wOiU/NTU/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC01NXttYXJnaW4tdG9wOiU/NTU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtNTV7cGFkZGluZy10b3A6JT81NT8lIWltcG9ydGFudH0udS1tLXItNTV7bWFyZ2luLXJpZ2h0OiU/NTU/JSFpbXBvcnRhbnR9LnUtcC1yLTU1e3BhZGRpbmctcmlnaHQ6JT81NT8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtNTV7bWFyZ2luLXJpZ2h0OiU/NTU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC01NXtwYWRkaW5nLXJpZ2h0OiU/NTU/JSFpbXBvcnRhbnR9LnUtbS1iLTU1e21hcmdpbi1ib3R0b206JT81NT8lIWltcG9ydGFudH0udS1wLWItNTV7cGFkZGluZy1ib3R0b206JT81NT8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTU1e21hcmdpbi1ib3R0b206JT81NT8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS01NXtwYWRkaW5nLWJvdHRvbTolPzU1PyUhaW1wb3J0YW50fS51LW1hcmdpbi01NiwgLnUtbS01NnttYXJnaW46JT81Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTU2LCAudS1wLTU2e3BhZGRpbmc6JT81Nj8lIWltcG9ydGFudH0udS1tLWwtNTZ7bWFyZ2luLWxlZnQ6JT81Nj8lIWltcG9ydGFudH0udS1wLWwtNTZ7cGFkZGluZy1sZWZ0OiU/NTY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtNTZ7bWFyZ2luLWxlZnQ6JT81Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtNTZ7cGFkZGluZy1sZWZ0OiU/NTY/JSFpbXBvcnRhbnR9LnUtbS10LTU2e21hcmdpbi10b3A6JT81Nj8lIWltcG9ydGFudH0udS1wLXQtNTZ7cGFkZGluZy10b3A6JT81Nj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTU2e21hcmdpbi10b3A6JT81Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC01NntwYWRkaW5nLXRvcDolPzU2PyUhaW1wb3J0YW50fS51LW0tci01NnttYXJnaW4tcmlnaHQ6JT81Nj8lIWltcG9ydGFudH0udS1wLXItNTZ7cGFkZGluZy1yaWdodDolPzU2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC01NnttYXJnaW4tcmlnaHQ6JT81Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTU2e3BhZGRpbmctcmlnaHQ6JT81Nj8lIWltcG9ydGFudH0udS1tLWItNTZ7bWFyZ2luLWJvdHRvbTolPzU2PyUhaW1wb3J0YW50fS51LXAtYi01NntwYWRkaW5nLWJvdHRvbTolPzU2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tNTZ7bWFyZ2luLWJvdHRvbTolPzU2PyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTU2e3BhZGRpbmctYm90dG9tOiU/NTY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTU4LCAudS1tLTU4e21hcmdpbjolPzU4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctNTgsIC51LXAtNTh7cGFkZGluZzolPzU4PyUhaW1wb3J0YW50fS51LW0tbC01OHttYXJnaW4tbGVmdDolPzU4PyUhaW1wb3J0YW50fS51LXAtbC01OHtwYWRkaW5nLWxlZnQ6JT81OD8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC01OHttYXJnaW4tbGVmdDolPzU4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC01OHtwYWRkaW5nLWxlZnQ6JT81OD8lIWltcG9ydGFudH0udS1tLXQtNTh7bWFyZ2luLXRvcDolPzU4PyUhaW1wb3J0YW50fS51LXAtdC01OHtwYWRkaW5nLXRvcDolPzU4PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtNTh7bWFyZ2luLXRvcDolPzU4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTU4e3BhZGRpbmctdG9wOiU/NTg/JSFpbXBvcnRhbnR9LnUtbS1yLTU4e21hcmdpbi1yaWdodDolPzU4PyUhaW1wb3J0YW50fS51LXAtci01OHtwYWRkaW5nLXJpZ2h0OiU/NTg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTU4e21hcmdpbi1yaWdodDolPzU4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtNTh7cGFkZGluZy1yaWdodDolPzU4PyUhaW1wb3J0YW50fS51LW0tYi01OHttYXJnaW4tYm90dG9tOiU/NTg/JSFpbXBvcnRhbnR9LnUtcC1iLTU4e3BhZGRpbmctYm90dG9tOiU/NTg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS01OHttYXJnaW4tYm90dG9tOiU/NTg/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tNTh7cGFkZGluZy1ib3R0b206JT81OD8lIWltcG9ydGFudH0udS1tYXJnaW4tNjAsIC51LW0tNjB7bWFyZ2luOiU/NjA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy02MCwgLnUtcC02MHtwYWRkaW5nOiU/NjA/JSFpbXBvcnRhbnR9LnUtbS1sLTYwe21hcmdpbi1sZWZ0OiU/NjA/JSFpbXBvcnRhbnR9LnUtcC1sLTYwe3BhZGRpbmctbGVmdDolPzYwPyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTYwe21hcmdpbi1sZWZ0OiU/NjA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTYwe3BhZGRpbmctbGVmdDolPzYwPyUhaW1wb3J0YW50fS51LW0tdC02MHttYXJnaW4tdG9wOiU/NjA/JSFpbXBvcnRhbnR9LnUtcC10LTYwe3BhZGRpbmctdG9wOiU/NjA/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC02MHttYXJnaW4tdG9wOiU/NjA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtNjB7cGFkZGluZy10b3A6JT82MD8lIWltcG9ydGFudH0udS1tLXItNjB7bWFyZ2luLXJpZ2h0OiU/NjA/JSFpbXBvcnRhbnR9LnUtcC1yLTYwe3BhZGRpbmctcmlnaHQ6JT82MD8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtNjB7bWFyZ2luLXJpZ2h0OiU/NjA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC02MHtwYWRkaW5nLXJpZ2h0OiU/NjA/JSFpbXBvcnRhbnR9LnUtbS1iLTYwe21hcmdpbi1ib3R0b206JT82MD8lIWltcG9ydGFudH0udS1wLWItNjB7cGFkZGluZy1ib3R0b206JT82MD8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTYwe21hcmdpbi1ib3R0b206JT82MD8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS02MHtwYWRkaW5nLWJvdHRvbTolPzYwPyUhaW1wb3J0YW50fS51LW1hcmdpbi02MiwgLnUtbS02MnttYXJnaW46JT82Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTYyLCAudS1wLTYye3BhZGRpbmc6JT82Mj8lIWltcG9ydGFudH0udS1tLWwtNjJ7bWFyZ2luLWxlZnQ6JT82Mj8lIWltcG9ydGFudH0udS1wLWwtNjJ7cGFkZGluZy1sZWZ0OiU/NjI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtNjJ7bWFyZ2luLWxlZnQ6JT82Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtNjJ7cGFkZGluZy1sZWZ0OiU/NjI/JSFpbXBvcnRhbnR9LnUtbS10LTYye21hcmdpbi10b3A6JT82Mj8lIWltcG9ydGFudH0udS1wLXQtNjJ7cGFkZGluZy10b3A6JT82Mj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTYye21hcmdpbi10b3A6JT82Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC02MntwYWRkaW5nLXRvcDolPzYyPyUhaW1wb3J0YW50fS51LW0tci02MnttYXJnaW4tcmlnaHQ6JT82Mj8lIWltcG9ydGFudH0udS1wLXItNjJ7cGFkZGluZy1yaWdodDolPzYyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC02MnttYXJnaW4tcmlnaHQ6JT82Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTYye3BhZGRpbmctcmlnaHQ6JT82Mj8lIWltcG9ydGFudH0udS1tLWItNjJ7bWFyZ2luLWJvdHRvbTolPzYyPyUhaW1wb3J0YW50fS51LXAtYi02MntwYWRkaW5nLWJvdHRvbTolPzYyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tNjJ7bWFyZ2luLWJvdHRvbTolPzYyPyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTYye3BhZGRpbmctYm90dG9tOiU/NjI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTY0LCAudS1tLTY0e21hcmdpbjolPzY0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctNjQsIC51LXAtNjR7cGFkZGluZzolPzY0PyUhaW1wb3J0YW50fS51LW0tbC02NHttYXJnaW4tbGVmdDolPzY0PyUhaW1wb3J0YW50fS51LXAtbC02NHtwYWRkaW5nLWxlZnQ6JT82ND8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC02NHttYXJnaW4tbGVmdDolPzY0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC02NHtwYWRkaW5nLWxlZnQ6JT82ND8lIWltcG9ydGFudH0udS1tLXQtNjR7bWFyZ2luLXRvcDolPzY0PyUhaW1wb3J0YW50fS51LXAtdC02NHtwYWRkaW5nLXRvcDolPzY0PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtNjR7bWFyZ2luLXRvcDolPzY0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTY0e3BhZGRpbmctdG9wOiU/NjQ/JSFpbXBvcnRhbnR9LnUtbS1yLTY0e21hcmdpbi1yaWdodDolPzY0PyUhaW1wb3J0YW50fS51LXAtci02NHtwYWRkaW5nLXJpZ2h0OiU/NjQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTY0e21hcmdpbi1yaWdodDolPzY0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtNjR7cGFkZGluZy1yaWdodDolPzY0PyUhaW1wb3J0YW50fS51LW0tYi02NHttYXJnaW4tYm90dG9tOiU/NjQ/JSFpbXBvcnRhbnR9LnUtcC1iLTY0e3BhZGRpbmctYm90dG9tOiU/NjQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS02NHttYXJnaW4tYm90dG9tOiU/NjQ/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tNjR7cGFkZGluZy1ib3R0b206JT82ND8lIWltcG9ydGFudH0udS1tYXJnaW4tNjUsIC51LW0tNjV7bWFyZ2luOiU/NjU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy02NSwgLnUtcC02NXtwYWRkaW5nOiU/NjU/JSFpbXBvcnRhbnR9LnUtbS1sLTY1e21hcmdpbi1sZWZ0OiU/NjU/JSFpbXBvcnRhbnR9LnUtcC1sLTY1e3BhZGRpbmctbGVmdDolPzY1PyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTY1e21hcmdpbi1sZWZ0OiU/NjU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTY1e3BhZGRpbmctbGVmdDolPzY1PyUhaW1wb3J0YW50fS51LW0tdC02NXttYXJnaW4tdG9wOiU/NjU/JSFpbXBvcnRhbnR9LnUtcC10LTY1e3BhZGRpbmctdG9wOiU/NjU/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC02NXttYXJnaW4tdG9wOiU/NjU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtNjV7cGFkZGluZy10b3A6JT82NT8lIWltcG9ydGFudH0udS1tLXItNjV7bWFyZ2luLXJpZ2h0OiU/NjU/JSFpbXBvcnRhbnR9LnUtcC1yLTY1e3BhZGRpbmctcmlnaHQ6JT82NT8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtNjV7bWFyZ2luLXJpZ2h0OiU/NjU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC02NXtwYWRkaW5nLXJpZ2h0OiU/NjU/JSFpbXBvcnRhbnR9LnUtbS1iLTY1e21hcmdpbi1ib3R0b206JT82NT8lIWltcG9ydGFudH0udS1wLWItNjV7cGFkZGluZy1ib3R0b206JT82NT8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTY1e21hcmdpbi1ib3R0b206JT82NT8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS02NXtwYWRkaW5nLWJvdHRvbTolPzY1PyUhaW1wb3J0YW50fS51LW1hcmdpbi02NiwgLnUtbS02NnttYXJnaW46JT82Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTY2LCAudS1wLTY2e3BhZGRpbmc6JT82Nj8lIWltcG9ydGFudH0udS1tLWwtNjZ7bWFyZ2luLWxlZnQ6JT82Nj8lIWltcG9ydGFudH0udS1wLWwtNjZ7cGFkZGluZy1sZWZ0OiU/NjY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtNjZ7bWFyZ2luLWxlZnQ6JT82Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtNjZ7cGFkZGluZy1sZWZ0OiU/NjY/JSFpbXBvcnRhbnR9LnUtbS10LTY2e21hcmdpbi10b3A6JT82Nj8lIWltcG9ydGFudH0udS1wLXQtNjZ7cGFkZGluZy10b3A6JT82Nj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTY2e21hcmdpbi10b3A6JT82Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC02NntwYWRkaW5nLXRvcDolPzY2PyUhaW1wb3J0YW50fS51LW0tci02NnttYXJnaW4tcmlnaHQ6JT82Nj8lIWltcG9ydGFudH0udS1wLXItNjZ7cGFkZGluZy1yaWdodDolPzY2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC02NnttYXJnaW4tcmlnaHQ6JT82Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTY2e3BhZGRpbmctcmlnaHQ6JT82Nj8lIWltcG9ydGFudH0udS1tLWItNjZ7bWFyZ2luLWJvdHRvbTolPzY2PyUhaW1wb3J0YW50fS51LXAtYi02NntwYWRkaW5nLWJvdHRvbTolPzY2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tNjZ7bWFyZ2luLWJvdHRvbTolPzY2PyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTY2e3BhZGRpbmctYm90dG9tOiU/NjY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTY4LCAudS1tLTY4e21hcmdpbjolPzY4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctNjgsIC51LXAtNjh7cGFkZGluZzolPzY4PyUhaW1wb3J0YW50fS51LW0tbC02OHttYXJnaW4tbGVmdDolPzY4PyUhaW1wb3J0YW50fS51LXAtbC02OHtwYWRkaW5nLWxlZnQ6JT82OD8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC02OHttYXJnaW4tbGVmdDolPzY4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC02OHtwYWRkaW5nLWxlZnQ6JT82OD8lIWltcG9ydGFudH0udS1tLXQtNjh7bWFyZ2luLXRvcDolPzY4PyUhaW1wb3J0YW50fS51LXAtdC02OHtwYWRkaW5nLXRvcDolPzY4PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtNjh7bWFyZ2luLXRvcDolPzY4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTY4e3BhZGRpbmctdG9wOiU/Njg/JSFpbXBvcnRhbnR9LnUtbS1yLTY4e21hcmdpbi1yaWdodDolPzY4PyUhaW1wb3J0YW50fS51LXAtci02OHtwYWRkaW5nLXJpZ2h0OiU/Njg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTY4e21hcmdpbi1yaWdodDolPzY4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtNjh7cGFkZGluZy1yaWdodDolPzY4PyUhaW1wb3J0YW50fS51LW0tYi02OHttYXJnaW4tYm90dG9tOiU/Njg/JSFpbXBvcnRhbnR9LnUtcC1iLTY4e3BhZGRpbmctYm90dG9tOiU/Njg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS02OHttYXJnaW4tYm90dG9tOiU/Njg/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tNjh7cGFkZGluZy1ib3R0b206JT82OD8lIWltcG9ydGFudH0udS1tYXJnaW4tNzAsIC51LW0tNzB7bWFyZ2luOiU/NzA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy03MCwgLnUtcC03MHtwYWRkaW5nOiU/NzA/JSFpbXBvcnRhbnR9LnUtbS1sLTcwe21hcmdpbi1sZWZ0OiU/NzA/JSFpbXBvcnRhbnR9LnUtcC1sLTcwe3BhZGRpbmctbGVmdDolPzcwPyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTcwe21hcmdpbi1sZWZ0OiU/NzA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTcwe3BhZGRpbmctbGVmdDolPzcwPyUhaW1wb3J0YW50fS51LW0tdC03MHttYXJnaW4tdG9wOiU/NzA/JSFpbXBvcnRhbnR9LnUtcC10LTcwe3BhZGRpbmctdG9wOiU/NzA/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC03MHttYXJnaW4tdG9wOiU/NzA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtNzB7cGFkZGluZy10b3A6JT83MD8lIWltcG9ydGFudH0udS1tLXItNzB7bWFyZ2luLXJpZ2h0OiU/NzA/JSFpbXBvcnRhbnR9LnUtcC1yLTcwe3BhZGRpbmctcmlnaHQ6JT83MD8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtNzB7bWFyZ2luLXJpZ2h0OiU/NzA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC03MHtwYWRkaW5nLXJpZ2h0OiU/NzA/JSFpbXBvcnRhbnR9LnUtbS1iLTcwe21hcmdpbi1ib3R0b206JT83MD8lIWltcG9ydGFudH0udS1wLWItNzB7cGFkZGluZy1ib3R0b206JT83MD8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTcwe21hcmdpbi1ib3R0b206JT83MD8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS03MHtwYWRkaW5nLWJvdHRvbTolPzcwPyUhaW1wb3J0YW50fS51LW1hcmdpbi03MiwgLnUtbS03MnttYXJnaW46JT83Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTcyLCAudS1wLTcye3BhZGRpbmc6JT83Mj8lIWltcG9ydGFudH0udS1tLWwtNzJ7bWFyZ2luLWxlZnQ6JT83Mj8lIWltcG9ydGFudH0udS1wLWwtNzJ7cGFkZGluZy1sZWZ0OiU/NzI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtNzJ7bWFyZ2luLWxlZnQ6JT83Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtNzJ7cGFkZGluZy1sZWZ0OiU/NzI/JSFpbXBvcnRhbnR9LnUtbS10LTcye21hcmdpbi10b3A6JT83Mj8lIWltcG9ydGFudH0udS1wLXQtNzJ7cGFkZGluZy10b3A6JT83Mj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTcye21hcmdpbi10b3A6JT83Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC03MntwYWRkaW5nLXRvcDolPzcyPyUhaW1wb3J0YW50fS51LW0tci03MnttYXJnaW4tcmlnaHQ6JT83Mj8lIWltcG9ydGFudH0udS1wLXItNzJ7cGFkZGluZy1yaWdodDolPzcyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC03MnttYXJnaW4tcmlnaHQ6JT83Mj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTcye3BhZGRpbmctcmlnaHQ6JT83Mj8lIWltcG9ydGFudH0udS1tLWItNzJ7bWFyZ2luLWJvdHRvbTolPzcyPyUhaW1wb3J0YW50fS51LXAtYi03MntwYWRkaW5nLWJvdHRvbTolPzcyPyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tNzJ7bWFyZ2luLWJvdHRvbTolPzcyPyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTcye3BhZGRpbmctYm90dG9tOiU/NzI/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTc0LCAudS1tLTc0e21hcmdpbjolPzc0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctNzQsIC51LXAtNzR7cGFkZGluZzolPzc0PyUhaW1wb3J0YW50fS51LW0tbC03NHttYXJnaW4tbGVmdDolPzc0PyUhaW1wb3J0YW50fS51LXAtbC03NHtwYWRkaW5nLWxlZnQ6JT83ND8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC03NHttYXJnaW4tbGVmdDolPzc0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC03NHtwYWRkaW5nLWxlZnQ6JT83ND8lIWltcG9ydGFudH0udS1tLXQtNzR7bWFyZ2luLXRvcDolPzc0PyUhaW1wb3J0YW50fS51LXAtdC03NHtwYWRkaW5nLXRvcDolPzc0PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtNzR7bWFyZ2luLXRvcDolPzc0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTc0e3BhZGRpbmctdG9wOiU/NzQ/JSFpbXBvcnRhbnR9LnUtbS1yLTc0e21hcmdpbi1yaWdodDolPzc0PyUhaW1wb3J0YW50fS51LXAtci03NHtwYWRkaW5nLXJpZ2h0OiU/NzQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTc0e21hcmdpbi1yaWdodDolPzc0PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtNzR7cGFkZGluZy1yaWdodDolPzc0PyUhaW1wb3J0YW50fS51LW0tYi03NHttYXJnaW4tYm90dG9tOiU/NzQ/JSFpbXBvcnRhbnR9LnUtcC1iLTc0e3BhZGRpbmctYm90dG9tOiU/NzQ/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS03NHttYXJnaW4tYm90dG9tOiU/NzQ/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tNzR7cGFkZGluZy1ib3R0b206JT83ND8lIWltcG9ydGFudH0udS1tYXJnaW4tNzUsIC51LW0tNzV7bWFyZ2luOiU/NzU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy03NSwgLnUtcC03NXtwYWRkaW5nOiU/NzU/JSFpbXBvcnRhbnR9LnUtbS1sLTc1e21hcmdpbi1sZWZ0OiU/NzU/JSFpbXBvcnRhbnR9LnUtcC1sLTc1e3BhZGRpbmctbGVmdDolPzc1PyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTc1e21hcmdpbi1sZWZ0OiU/NzU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTc1e3BhZGRpbmctbGVmdDolPzc1PyUhaW1wb3J0YW50fS51LW0tdC03NXttYXJnaW4tdG9wOiU/NzU/JSFpbXBvcnRhbnR9LnUtcC10LTc1e3BhZGRpbmctdG9wOiU/NzU/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC03NXttYXJnaW4tdG9wOiU/NzU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtNzV7cGFkZGluZy10b3A6JT83NT8lIWltcG9ydGFudH0udS1tLXItNzV7bWFyZ2luLXJpZ2h0OiU/NzU/JSFpbXBvcnRhbnR9LnUtcC1yLTc1e3BhZGRpbmctcmlnaHQ6JT83NT8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtNzV7bWFyZ2luLXJpZ2h0OiU/NzU/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC03NXtwYWRkaW5nLXJpZ2h0OiU/NzU/JSFpbXBvcnRhbnR9LnUtbS1iLTc1e21hcmdpbi1ib3R0b206JT83NT8lIWltcG9ydGFudH0udS1wLWItNzV7cGFkZGluZy1ib3R0b206JT83NT8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTc1e21hcmdpbi1ib3R0b206JT83NT8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS03NXtwYWRkaW5nLWJvdHRvbTolPzc1PyUhaW1wb3J0YW50fS51LW1hcmdpbi03NiwgLnUtbS03NnttYXJnaW46JT83Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLTc2LCAudS1wLTc2e3BhZGRpbmc6JT83Nj8lIWltcG9ydGFudH0udS1tLWwtNzZ7bWFyZ2luLWxlZnQ6JT83Nj8lIWltcG9ydGFudH0udS1wLWwtNzZ7cGFkZGluZy1sZWZ0OiU/NzY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWxlZnQtNzZ7bWFyZ2luLWxlZnQ6JT83Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLWxlZnQtNzZ7cGFkZGluZy1sZWZ0OiU/NzY/JSFpbXBvcnRhbnR9LnUtbS10LTc2e21hcmdpbi10b3A6JT83Nj8lIWltcG9ydGFudH0udS1wLXQtNzZ7cGFkZGluZy10b3A6JT83Nj8lIWltcG9ydGFudH0udS1tYXJnaW4tdG9wLTc2e21hcmdpbi10b3A6JT83Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXRvcC03NntwYWRkaW5nLXRvcDolPzc2PyUhaW1wb3J0YW50fS51LW0tci03NnttYXJnaW4tcmlnaHQ6JT83Nj8lIWltcG9ydGFudH0udS1wLXItNzZ7cGFkZGluZy1yaWdodDolPzc2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1yaWdodC03NnttYXJnaW4tcmlnaHQ6JT83Nj8lIWltcG9ydGFudH0udS1wYWRkaW5nLXJpZ2h0LTc2e3BhZGRpbmctcmlnaHQ6JT83Nj8lIWltcG9ydGFudH0udS1tLWItNzZ7bWFyZ2luLWJvdHRvbTolPzc2PyUhaW1wb3J0YW50fS51LXAtYi03NntwYWRkaW5nLWJvdHRvbTolPzc2PyUhaW1wb3J0YW50fS51LW1hcmdpbi1ib3R0b20tNzZ7bWFyZ2luLWJvdHRvbTolPzc2PyUhaW1wb3J0YW50fS51LXBhZGRpbmctYm90dG9tLTc2e3BhZGRpbmctYm90dG9tOiU/NzY/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLTc4LCAudS1tLTc4e21hcmdpbjolPzc4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctNzgsIC51LXAtNzh7cGFkZGluZzolPzc4PyUhaW1wb3J0YW50fS51LW0tbC03OHttYXJnaW4tbGVmdDolPzc4PyUhaW1wb3J0YW50fS51LXAtbC03OHtwYWRkaW5nLWxlZnQ6JT83OD8lIWltcG9ydGFudH0udS1tYXJnaW4tbGVmdC03OHttYXJnaW4tbGVmdDolPzc4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctbGVmdC03OHtwYWRkaW5nLWxlZnQ6JT83OD8lIWltcG9ydGFudH0udS1tLXQtNzh7bWFyZ2luLXRvcDolPzc4PyUhaW1wb3J0YW50fS51LXAtdC03OHtwYWRkaW5nLXRvcDolPzc4PyUhaW1wb3J0YW50fS51LW1hcmdpbi10b3AtNzh7bWFyZ2luLXRvcDolPzc4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctdG9wLTc4e3BhZGRpbmctdG9wOiU/Nzg/JSFpbXBvcnRhbnR9LnUtbS1yLTc4e21hcmdpbi1yaWdodDolPzc4PyUhaW1wb3J0YW50fS51LXAtci03OHtwYWRkaW5nLXJpZ2h0OiU/Nzg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXJpZ2h0LTc4e21hcmdpbi1yaWdodDolPzc4PyUhaW1wb3J0YW50fS51LXBhZGRpbmctcmlnaHQtNzh7cGFkZGluZy1yaWdodDolPzc4PyUhaW1wb3J0YW50fS51LW0tYi03OHttYXJnaW4tYm90dG9tOiU/Nzg/JSFpbXBvcnRhbnR9LnUtcC1iLTc4e3BhZGRpbmctYm90dG9tOiU/Nzg/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLWJvdHRvbS03OHttYXJnaW4tYm90dG9tOiU/Nzg/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1ib3R0b20tNzh7cGFkZGluZy1ib3R0b206JT83OD8lIWltcG9ydGFudH0udS1tYXJnaW4tODAsIC51LW0tODB7bWFyZ2luOiU/ODA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy04MCwgLnUtcC04MHtwYWRkaW5nOiU/ODA/JSFpbXBvcnRhbnR9LnUtbS1sLTgwe21hcmdpbi1sZWZ0OiU/ODA/JSFpbXBvcnRhbnR9LnUtcC1sLTgwe3BhZGRpbmctbGVmdDolPzgwPyUhaW1wb3J0YW50fS51LW1hcmdpbi1sZWZ0LTgwe21hcmdpbi1sZWZ0OiU/ODA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1sZWZ0LTgwe3BhZGRpbmctbGVmdDolPzgwPyUhaW1wb3J0YW50fS51LW0tdC04MHttYXJnaW4tdG9wOiU/ODA/JSFpbXBvcnRhbnR9LnUtcC10LTgwe3BhZGRpbmctdG9wOiU/ODA/JSFpbXBvcnRhbnR9LnUtbWFyZ2luLXRvcC04MHttYXJnaW4tdG9wOiU/ODA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy10b3AtODB7cGFkZGluZy10b3A6JT84MD8lIWltcG9ydGFudH0udS1tLXItODB7bWFyZ2luLXJpZ2h0OiU/ODA/JSFpbXBvcnRhbnR9LnUtcC1yLTgwe3BhZGRpbmctcmlnaHQ6JT84MD8lIWltcG9ydGFudH0udS1tYXJnaW4tcmlnaHQtODB7bWFyZ2luLXJpZ2h0OiU/ODA/JSFpbXBvcnRhbnR9LnUtcGFkZGluZy1yaWdodC04MHtwYWRkaW5nLXJpZ2h0OiU/ODA/JSFpbXBvcnRhbnR9LnUtbS1iLTgwe21hcmdpbi1ib3R0b206JT84MD8lIWltcG9ydGFudH0udS1wLWItODB7cGFkZGluZy1ib3R0b206JT84MD8lIWltcG9ydGFudH0udS1tYXJnaW4tYm90dG9tLTgwe21hcmdpbi1ib3R0b206JT84MD8lIWltcG9ydGFudH0udS1wYWRkaW5nLWJvdHRvbS04MHtwYWRkaW5nLWJvdHRvbTolPzgwPyUhaW1wb3J0YW50fS51LXJlc2V0LW52dWV7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcn0udS10eXBlLXByaW1hcnktbGlnaHR7Y29sb3I6I2VjZjVmZn0udS10eXBlLXdhcm5pbmctbGlnaHR7Y29sb3I6I2ZkZjZlY30udS10eXBlLXN1Y2Nlc3MtbGlnaHR7Y29sb3I6I2RiZjFlMX0udS10eXBlLWVycm9yLWxpZ2h0e2NvbG9yOiNmZWYwZjB9LnUtdHlwZS1pbmZvLWxpZ2h0e2NvbG9yOiNmNGY0ZjV9LnUtdHlwZS1wcmltYXJ5LWxpZ2h0LWJne2JhY2tncm91bmQtY29sb3I6I2VjZjVmZn0udS10eXBlLXdhcm5pbmctbGlnaHQtYmd7YmFja2dyb3VuZC1jb2xvcjojZmRmNmVjfS51LXR5cGUtc3VjY2Vzcy1saWdodC1iZ3tiYWNrZ3JvdW5kLWNvbG9yOiNkYmYxZTF9LnUtdHlwZS1lcnJvci1saWdodC1iZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmZWYwZjB9LnUtdHlwZS1pbmZvLWxpZ2h0LWJne2JhY2tncm91bmQtY29sb3I6I2Y0ZjRmNX0udS10eXBlLXByaW1hcnktZGFya3tjb2xvcjojMmI4NWU0fS51LXR5cGUtd2FybmluZy1kYXJre2NvbG9yOiNmMjkxMDB9LnUtdHlwZS1zdWNjZXNzLWRhcmt7Y29sb3I6IzE4YjU2Nn0udS10eXBlLWVycm9yLWRhcmt7Y29sb3I6I2RkNjE2MX0udS10eXBlLWluZm8tZGFya3tjb2xvcjojODI4NDhhfS51LXR5cGUtcHJpbWFyeS1kYXJrLWJne2JhY2tncm91bmQtY29sb3I6IzJiODVlNH0udS10eXBlLXdhcm5pbmctZGFyay1iZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmMjkxMDB9LnUtdHlwZS1zdWNjZXNzLWRhcmstYmd7YmFja2dyb3VuZC1jb2xvcjojMThiNTY2fS51LXR5cGUtZXJyb3ItZGFyay1iZ3tiYWNrZ3JvdW5kLWNvbG9yOiNkZDYxNjF9LnUtdHlwZS1pbmZvLWRhcmstYmd7YmFja2dyb3VuZC1jb2xvcjojODI4NDhhfS51LXR5cGUtcHJpbWFyeS1kaXNhYmxlZHtjb2xvcjojYTBjZmZmfS51LXR5cGUtd2FybmluZy1kaXNhYmxlZHtjb2xvcjojZmNiZDcxfS51LXR5cGUtc3VjY2Vzcy1kaXNhYmxlZHtjb2xvcjojNzFkNWExfS51LXR5cGUtZXJyb3ItZGlzYWJsZWR7Y29sb3I6I2ZhYjZiNn0udS10eXBlLWluZm8tZGlzYWJsZWR7Y29sb3I6I2M4YzljY30udS10eXBlLXByaW1hcnl7Y29sb3I6IzI5NzlmZn0udS10eXBlLXdhcm5pbmd7Y29sb3I6I2Y5MH0udS10eXBlLXN1Y2Nlc3N7Y29sb3I6IzE5YmU2Yn0udS10eXBlLWVycm9ye2NvbG9yOiNmYTM1MzR9LnUtdHlwZS1pbmZve2NvbG9yOiM5MDkzOTl9LnUtdHlwZS1wcmltYXJ5LWJne2JhY2tncm91bmQtY29sb3I6IzI5NzlmZn0udS10eXBlLXdhcm5pbmctYmd7YmFja2dyb3VuZC1jb2xvcjojZjkwfS51LXR5cGUtc3VjY2Vzcy1iZ3tiYWNrZ3JvdW5kLWNvbG9yOiMxOWJlNmJ9LnUtdHlwZS1lcnJvci1iZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmYTM1MzR9LnUtdHlwZS1pbmZvLWJne2JhY2tncm91bmQtY29sb3I6IzkwOTM5OX0udS1tYWluLWNvbG9ye2NvbG9yOiMzMDMxMzN9LnUtY29udGVudC1jb2xvcntjb2xvcjojNjA2MjY2fS51LXRpcHMtY29sb3J7Y29sb3I6IzkwOTM5OX0udS1saWdodC1jb2xvcntjb2xvcjojYzBjNGNjfXVuaS1wYWdlLWJvZHl7Y29sb3I6IzMwMzEzMztmb250LXNpemU6JT8yOD8lfVxuLyogc3RhcnQtLeWOu+mZpHdlYmtpdOeahOm7mOiupOagt+W8jy0tc3RhcnQgKi8udS1maXgtaW9zLWFwcGVhcmFuY2V7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9XG4vKiBlbmQtLeWOu+mZpHdlYmtpdOeahOm7mOiupOagt+W8jy0tZW5kICovXG4vKiBzdGFydC0taWNvbuWbvuagh+WkluWxguWll+S4gOS4qnZpZXfvvIzorqnlhbbovr7liLDmm7Tlpb3nmoTlnoLnm7TlsYXkuK3nmoTmlYjmnpwtLXN0YXJ0ICovLnUtaWNvbi13cmFwe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9XG4vKiBlbmQtaWNvbuWbvuagh+WkluWxguWll+S4gOS4qnZpZXfvvIzorqnlhbbovr7liLDmm7Tlpb3nmoTlnoLnm7TlsYXkuK3nmoTmlYjmnpwtLWVuZCAqL1xuLyogc3RhcnQtLWlQaG9uZVjlupXpg6jlronlhajljLrlrprkuYktLXN0YXJ0ICovLnNhZmUtYXJlYS1pbnNldC1ib3R0b217cGFkZGluZy1ib3R0b206MDtwYWRkaW5nLWJvdHRvbTpjb25zdGFudChzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtwYWRkaW5nLWJvdHRvbTplbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSl9XG4vKiBlbmQtaVBob25lWOW6lemDqOWuieWFqOWMuuWumuS5iS0tZW5kICovXG4vKiBzdGFydC0t5ZCE56eNaG92ZXLngrnlh7vlj43ppojnm7jlhbPnmoTnsbvlkI0tc3RhcnQgKi8udS1ob3Zlci1jbGFzc3tvcGFjaXR5Oi42fS51LWNlbGwtaG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjdmOGY5IWltcG9ydGFudH1cbi8qIGVuZC0t5ZCE56eNaG92ZXLngrnlh7vlj43ppojnm7jlhbPnmoTnsbvlkI0tLWVuZCAqL1xuLyogc3RhcnQtLeaWh+acrOihjOaVsOmZkOWIti0tc3RhcnQgKi8udS1saW5lLTF7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS51LWxpbmUtMnstd2Via2l0LWxpbmUtY2xhbXA6Mn0udS1saW5lLTN7LXdlYmtpdC1saW5lLWNsYW1wOjN9LnUtbGluZS00ey13ZWJraXQtbGluZS1jbGFtcDo0fS51LWxpbmUtNXstd2Via2l0LWxpbmUtY2xhbXA6NX0udS1saW5lLTIsIC51LWxpbmUtMywgLnUtbGluZS00LCAudS1saW5lLTV7b3ZlcmZsb3c6aGlkZGVuO3dvcmQtYnJlYWs6YnJlYWstYWxsO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTotd2Via2l0LWJveDstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWx9XG4vKiBlbmQtLeaWh+acrOihjOaVsOmZkOWIti0tZW5kICovXG4vKiBzdGFydC0tUmV0aW5hIOWxj+W5leS4i+eahCAxcHgg6L655qGGLS1zdGFydCAqLy51LWJvcmRlcixcbi51LWJvcmRlci1ib3R0b20sXG4udS1ib3JkZXItbGVmdCxcbi51LWJvcmRlci1yaWdodCxcbi51LWJvcmRlci10b3AsXG4udS1ib3JkZXItdG9wLWJvdHRvbXtwb3NpdGlvbjpyZWxhdGl2ZX0udS1ib3JkZXItYm90dG9tOmFmdGVyLFxuLnUtYm9yZGVyLWxlZnQ6YWZ0ZXIsXG4udS1ib3JkZXItcmlnaHQ6YWZ0ZXIsXG4udS1ib3JkZXItdG9wLWJvdHRvbTphZnRlcixcbi51LWJvcmRlci10b3A6YWZ0ZXIsXG4udS1ib3JkZXI6YWZ0ZXJ7XG5jb250ZW50OiIgIjtcbnBvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDtwb2ludGVyLWV2ZW50czpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwO3RyYW5zZm9ybS1vcmlnaW46MCAwO3dpZHRoOjE5OS44JTtoZWlnaHQ6MTk5LjclOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC41KTt0cmFuc2Zvcm06c2NhbGUoLjUpO2JvcmRlcjowIHNvbGlkICNlNGU3ZWQ7ei1pbmRleDoyfS51LWJvcmRlci10b3A6YWZ0ZXJ7Ym9yZGVyLXRvcC13aWR0aDoxcHh9LnUtYm9yZGVyLWxlZnQ6YWZ0ZXJ7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4fS51LWJvcmRlci1yaWdodDphZnRlcntib3JkZXItcmlnaHQtd2lkdGg6MXB4fS51LWJvcmRlci1ib3R0b206YWZ0ZXJ7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHh9LnUtYm9yZGVyLXRvcC1ib3R0b206YWZ0ZXJ7Ym9yZGVyLXdpZHRoOjFweCAwfS51LWJvcmRlcjphZnRlcntib3JkZXItd2lkdGg6MXB4fVxuLyogZW5kLS1SZXRpbmEg5bGP5bmV5LiL55qEIDFweCDovrnmoYYtLWVuZCAqL1xuLyogc3RhcnQtLWNsZWFyZml4LS1zdGFydCAqLy51LWNsZWFyZml4OmFmdGVyLFxuLmNsZWFyZml4OmFmdGVye1xuY29udGVudDoiIjtcbmRpc3BsYXk6dGFibGU7Y2xlYXI6Ym90aH1cbi8qIGVuZC0tY2xlYXJmaXgtLWVuZCAqL1xuLyogc3RhcnQtLemrmOaWr+aooeezinRhYmJhcuW6lemDqOWkhOeQhi0tc3RhcnQgKi8udS1ibHVyLWVmZmVjdC1pbnNldHt3aWR0aDolPzc1MD8lO2hlaWdodDp2YXIoLS13aW5kb3ctYm90dG9tKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9XG4vKiBlbmQtLemrmOaWr+aooeezinRhYmJhcuW6lemDqOWkhOeQhi0tZW5kICovXG4vKiBzdGFydC0t5o+Q5Y2HSDXnq691bmkudG9hc3QoKeeahOWxgue6p++8jOmBv+WFjeiiq3VWaWV355qEbW9kYWznrYnpga7nm5YtLXN0YXJ0ICovXG51bmktdG9hc3R7ei1pbmRleDoxMDA5MH11bmktdG9hc3QgLnVuaS10b2FzdHt6LWluZGV4OjEwMDkwfVxuXG4vKiBlbmQtLeaPkOWNh0g156uvdW5pLnRvYXN0KCnnmoTlsYLnuqfvvIzpgb/lhY3ooqt1Vmlld+eahG1vZGFs562J6YGu55uWLS1lbmQgKi9cbi8qIHN0YXJ0LS3ljrvpmaRidXR0b27nmoTmiYDmnInpu5jorqTmoLflvI8tLXN0YXJ0ICovLnUtcmVzZXQtYnV0dG9ue3BhZGRpbmc6MDtmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O2JhY2tncm91bmQtY29sb3I6aW5pdGlhbDtjb2xvcjppbmhlcml0fS51LXJlc2V0LWJ1dHRvbjo6YWZ0ZXJ7Ym9yZGVyOm5vbmV9XG4vKiBlbmQtLeWOu+mZpGJ1dHRvbueahOaJgOaciem7mOiupOagt+W8jy0tZW5kICovXG4vKiBINeeahOaXtuWAme+8jOmakOiXj+a7muWKqOadoSAqLzo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lO3dpZHRoOjAhaW1wb3J0YW50O2hlaWdodDowIWltcG9ydGFudDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fScsIiJdKSx0LmV4cG9ydHM9ZX0sYWQzMDpmdW5jdGlvbih0LGUsbil7dmFyIGE9bigiODM3MCIpO2EuX19lc01vZHVsZSYmKGE9YS5kZWZhdWx0KSwic3RyaW5nIj09PXR5cGVvZiBhJiYoYT1bW3QuaSxhLCIiXV0pLGEubG9jYWxzJiYodC5leHBvcnRzPWEubG9jYWxzKTt2YXIgaT1uKCI0ZjA2IikuZGVmYXVsdDtpKCJkMTJmOGJmYSIsYSwhMCx7c291cmNlTWFwOiExLHNoYWRvd01vZGU6ITF9KX0sYmFmNjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oIjdhODIiKTt2YXIgYT1uKCI0ZWE0IikuZGVmYXVsdDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXZvaWQgMDt2YXIgaT1hKG4oImUxNDMiKSkscj1hKG4oImU0ODciKSksbz1hKG4oIjFlN2UiKSkscz1hKG4oIjQxNTIiKSkscD1hKG4oIjczNDAiKSksdT1hKG4oImU0YjIiKSksZD1hKG4oIjU4YWMiKSksbT1hKG4oImYzMGUiKSksZz1hKG4oIjY4ODgiKSksbD1hKG4oImY0NjQiKSksYz1hKG4oImRkNjIiKSksZj1hKG4oImMwMTkiKSk7aS5kZWZhdWx0LnVzZShmLmRlZmF1bHQpO3ZhciBoPW5ldyBmLmRlZmF1bHQoe2xvY2FsZTp1bmkuZ2V0U3RvcmFnZVN5bmMoImxhbmciKXx8InB0IixtZXNzYWdlczp7ZGU6ci5kZWZhdWx0LGZyOm8uZGVmYXVsdCxpdDpzLmRlZmF1bHQscHQ6cC5kZWZhdWx0LHJ1OnUuZGVmYXVsdCxzcGE6ZC5kZWZhdWx0LGVuOm0uZGVmYXVsdCx6aDpnLmRlZmF1bHQsdHI6bC5kZWZhdWx0LGFyOmMuZGVmYXVsdH19KTtlLmRlZmF1bHQ9aH0sYmU4ZjpmdW5jdGlvbih0LGUsbil7dmFyIGE9bigiNzAzNyIpLmRlZmF1bHQ7bigiZDNiNyIpLHVuaS5hZGRJbnRlcmNlcHRvcih7cmV0dXJuVmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIXR8fCJvYmplY3QiIT09YSh0KSYmImZ1bmN0aW9uIiE9PXR5cGVvZiB0fHwiZnVuY3Rpb24iIT09dHlwZW9mIHQudGhlbj90Om5ldyBQcm9taXNlKChmdW5jdGlvbihlLG4pe3QudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHRbMF0/bih0WzBdKTplKHRbMV0pfSkpfSkpfX0pfSxjMDE5OmZ1bmN0aW9uKHQsZSxuKXt2YXIgYSxpLHIsbz1uKCI3MDM3IikuZGVmYXVsdDtuKCJkOWUyIiksbigiZDQwMSIpLG4oIjk5YWYiKSxuKCI0ZGU0IiksbigiYzk3NSIpLG4oImQ4MWQiKSxuKCIxNGQ5IiksbigiMTNkNSIpLG4oImZiNmEiKSxuKCI0ZTgyIiksbigiYTQzNCIpLG4oImY0YjMiKSxuKCJlOWY1IiksbigiZDg2NiIpLG4oIjkxMGQiKSxuKCI3ZDU0IiksbigiYWI0MyIpLG4oIjk0ODUiKSxuKCJlOWM0IiksbigiYTllMyIpLG4oIjFkMWMiKSxuKCI3YTgyIiksbigiMzQxMCIpLG4oImI2NGIiKSxuKCJkM2I3IiksbigiZTI1ZSIpLG4oIjRkNjMiKSxuKCJjNjA3IiksbigiYWMxZiIpLG4oIjJjM2UiKSxuKCIwMGI0IiksbigiMjVmMCIpLG4oIjQ2NmQiKSxuKCI1MzE5IiksbigiNDk4YSIpLG4oIjE1OWIiKSxyPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB0PVsic3R5bGUiLCJjdXJyZW5jeSIsImN1cnJlbmN5RGlzcGxheSIsInVzZUdyb3VwaW5nIiwibWluaW11bUludGVnZXJEaWdpdHMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMiLCJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiLCJsb2NhbGVNYXRjaGVyIiwiZm9ybWF0TWF0Y2hlciIsInVuaXQiXTtmdW5jdGlvbiBlKHQsZSl7InVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiYoY29uc29sZS53YXJuKCJbdnVlLWkxOG5dICIrdCksZSYmY29uc29sZS53YXJuKGUuc3RhY2spKX12YXIgbj1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIGEodCl7cmV0dXJuIG51bGwhPT10JiYib2JqZWN0Ij09byh0KX1mdW5jdGlvbiBpKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdH12YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLHM9IltvYmplY3QgT2JqZWN0XSI7ZnVuY3Rpb24gcCh0KXtyZXR1cm4gci5jYWxsKHQpPT09c31mdW5jdGlvbiB1KHQpe3JldHVybiBudWxsPT10fWZ1bmN0aW9uIGQoKXtmb3IodmFyIHQ9W10sZT1hcmd1bWVudHMubGVuZ3RoO2UtLTspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49bnVsbCxpPW51bGw7cmV0dXJuIDE9PT10Lmxlbmd0aD9hKHRbMF0pfHxBcnJheS5pc0FycmF5KHRbMF0pP2k9dFswXToic3RyaW5nIj09dHlwZW9mIHRbMF0mJihuPXRbMF0pOjI9PT10Lmxlbmd0aCYmKCJzdHJpbmciPT10eXBlb2YgdFswXSYmKG49dFswXSksKGEodFsxXSl8fEFycmF5LmlzQXJyYXkodFsxXSkpJiYoaT10WzFdKSkse2xvY2FsZTpuLHBhcmFtczppfX1mdW5jdGlvbiBtKHQpe3JldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKX1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuISF+dC5pbmRleE9mKGUpfXZhciBsPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYyh0LGUpe3JldHVybiBsLmNhbGwodCxlKX1mdW5jdGlvbiBmKHQpe2Zvcih2YXIgZT1hcmd1bWVudHMsbj1PYmplY3QodCksaT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspe3ZhciByPWVbaV07aWYobnVsbCE9cil7dmFyIG89dm9pZCAwO2ZvcihvIGluIHIpYyhyLG8pJiYoYShyW29dKT9uW29dPWYobltvXSxyW29dKTpuW29dPXJbb10pfX1yZXR1cm4gbn1mdW5jdGlvbiBoKHQsZSl7aWYodD09PWUpcmV0dXJuITA7dmFyIG49YSh0KSxpPWEoZSk7aWYoIW58fCFpKXJldHVybiFuJiYhaSYmU3RyaW5nKHQpPT09U3RyaW5nKGUpO3RyeXt2YXIgcj1BcnJheS5pc0FycmF5KHQpLG89QXJyYXkuaXNBcnJheShlKTtpZihyJiZvKXJldHVybiB0Lmxlbmd0aD09PWUubGVuZ3RoJiZ0LmV2ZXJ5KChmdW5jdGlvbih0LG4pe3JldHVybiBoKHQsZVtuXSl9KSk7aWYocnx8bylyZXR1cm4hMTt2YXIgcz1PYmplY3Qua2V5cyh0KSxwPU9iamVjdC5rZXlzKGUpO3JldHVybiBzLmxlbmd0aD09PXAubGVuZ3RoJiZzLmV2ZXJ5KChmdW5jdGlvbihuKXtyZXR1cm4gaCh0W25dLGVbbl0pfSkpfWNhdGNoKHQpe3JldHVybiExfX12YXIgYj17YmVmb3JlQ3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy4kb3B0aW9ucztpZih0LmkxOG49dC5pMThufHwodC5fX2kxOG4/e306bnVsbCksdC5pMThuKXtpZih0LmkxOG4gaW5zdGFuY2VvZiBudCl7aWYodC5fX2kxOG4pdHJ5e3ZhciBlPXt9O3QuX19pMThuLmZvckVhY2goKGZ1bmN0aW9uKHQpe2U9ZihlLEpTT04ucGFyc2UodCkpfSkpLE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3QuaTE4bi5tZXJnZUxvY2FsZU1lc3NhZ2UobixlW25dKX0pKX1jYXRjaCh0KXt9dGhpcy5faTE4bj10LmkxOG4sdGhpcy5faTE4bldhdGNoZXI9dGhpcy5faTE4bi53YXRjaEkxOG5EYXRhKCl9ZWxzZSBpZihwKHQuaTE4bikpe3ZhciBuPXRoaXMuJHJvb3QmJnRoaXMuJHJvb3QuJGkxOG4mJnRoaXMuJHJvb3QuJGkxOG4gaW5zdGFuY2VvZiBudD90aGlzLiRyb290LiRpMThuOm51bGw7aWYobiYmKHQuaTE4bi5yb290PXRoaXMuJHJvb3QsdC5pMThuLmZvcm1hdHRlcj1uLmZvcm1hdHRlcix0LmkxOG4uZmFsbGJhY2tMb2NhbGU9bi5mYWxsYmFja0xvY2FsZSx0LmkxOG4uZm9ybWF0RmFsbGJhY2tNZXNzYWdlcz1uLmZvcm1hdEZhbGxiYWNrTWVzc2FnZXMsdC5pMThuLnNpbGVudFRyYW5zbGF0aW9uV2Fybj1uLnNpbGVudFRyYW5zbGF0aW9uV2Fybix0LmkxOG4uc2lsZW50RmFsbGJhY2tXYXJuPW4uc2lsZW50RmFsbGJhY2tXYXJuLHQuaTE4bi5wbHVyYWxpemF0aW9uUnVsZXM9bi5wbHVyYWxpemF0aW9uUnVsZXMsdC5pMThuLnByZXNlcnZlRGlyZWN0aXZlQ29udGVudD1uLnByZXNlcnZlRGlyZWN0aXZlQ29udGVudCksdC5fX2kxOG4pdHJ5e3ZhciBhPXt9O3QuX19pMThuLmZvckVhY2goKGZ1bmN0aW9uKHQpe2E9ZihhLEpTT04ucGFyc2UodCkpfSkpLHQuaTE4bi5tZXNzYWdlcz1hfWNhdGNoKHQpe312YXIgaT10LmkxOG4uc2hhcmVkTWVzc2FnZXM7aSYmcChpKSYmKHQuaTE4bi5tZXNzYWdlcz1mKHQuaTE4bi5tZXNzYWdlcyxpKSksdGhpcy5faTE4bj1uZXcgbnQodC5pMThuKSx0aGlzLl9pMThuV2F0Y2hlcj10aGlzLl9pMThuLndhdGNoSTE4bkRhdGEoKSwodm9pZCAwPT09dC5pMThuLnN5bmN8fHQuaTE4bi5zeW5jKSYmKHRoaXMuX2xvY2FsZVdhdGNoZXI9dGhpcy4kaTE4bi53YXRjaExvY2FsZSgpKSxuJiZuLm9uQ29tcG9uZW50SW5zdGFuY2VDcmVhdGVkKHRoaXMuX2kxOG4pfX1lbHNlIHRoaXMuJHJvb3QmJnRoaXMuJHJvb3QuJGkxOG4mJnRoaXMuJHJvb3QuJGkxOG4gaW5zdGFuY2VvZiBudD90aGlzLl9pMThuPXRoaXMuJHJvb3QuJGkxOG46dC5wYXJlbnQmJnQucGFyZW50LiRpMThuJiZ0LnBhcmVudC4kaTE4biBpbnN0YW5jZW9mIG50JiYodGhpcy5faTE4bj10LnBhcmVudC4kaTE4bil9LGJlZm9yZU1vdW50OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy4kb3B0aW9uczt0LmkxOG49dC5pMThufHwodC5fX2kxOG4/e306bnVsbCksdC5pMThuPyh0LmkxOG4gaW5zdGFuY2VvZiBudHx8cCh0LmkxOG4pKSYmKHRoaXMuX2kxOG4uc3Vic2NyaWJlRGF0YUNoYW5naW5nKHRoaXMpLHRoaXMuX3N1YnNjcmliaW5nPSEwKToodGhpcy4kcm9vdCYmdGhpcy4kcm9vdC4kaTE4biYmdGhpcy4kcm9vdC4kaTE4biBpbnN0YW5jZW9mIG50fHx0LnBhcmVudCYmdC5wYXJlbnQuJGkxOG4mJnQucGFyZW50LiRpMThuIGluc3RhbmNlb2YgbnQpJiYodGhpcy5faTE4bi5zdWJzY3JpYmVEYXRhQ2hhbmdpbmcodGhpcyksdGhpcy5fc3Vic2NyaWJpbmc9ITApfSxiZWZvcmVEZXN0cm95OmZ1bmN0aW9uKCl7aWYodGhpcy5faTE4bil7dmFyIHQ9dGhpczt0aGlzLiRuZXh0VGljaygoZnVuY3Rpb24oKXt0Ll9zdWJzY3JpYmluZyYmKHQuX2kxOG4udW5zdWJzY3JpYmVEYXRhQ2hhbmdpbmcodCksZGVsZXRlIHQuX3N1YnNjcmliaW5nKSx0Ll9pMThuV2F0Y2hlciYmKHQuX2kxOG5XYXRjaGVyKCksdC5faTE4bi5kZXN0cm95Vk0oKSxkZWxldGUgdC5faTE4bldhdGNoZXIpLHQuX2xvY2FsZVdhdGNoZXImJih0Ll9sb2NhbGVXYXRjaGVyKCksZGVsZXRlIHQuX2xvY2FsZVdhdGNoZXIpfSkpfX19LHk9e25hbWU6ImkxOG4iLGZ1bmN0aW9uYWw6ITAscHJvcHM6e3RhZzp7dHlwZTpbU3RyaW5nLEJvb2xlYW4sT2JqZWN0XSxkZWZhdWx0OiJzcGFuIn0scGF0aDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LGxvY2FsZTp7dHlwZTpTdHJpbmd9LHBsYWNlczp7dHlwZTpbQXJyYXksT2JqZWN0XX19LHJlbmRlcjpmdW5jdGlvbih0LGUpe3ZhciBuPWUuZGF0YSxhPWUucGFyZW50LGk9ZS5wcm9wcyxyPWUuc2xvdHMsbz1hLiRpMThuO2lmKG8pe3ZhciBzPWkucGF0aCxwPWkubG9jYWxlLHU9aS5wbGFjZXMsZD1yKCksbT1vLmkocyxwLGZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlIGluIHQpaWYoImRlZmF1bHQiIT09ZSlyZXR1cm4hMTtyZXR1cm4gQm9vbGVhbihlKX0oZCl8fHU/ZnVuY3Rpb24odCxlKXt2YXIgbj1lP2Z1bmN0aW9uKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QucmVkdWNlKHYse30pOk9iamVjdC5hc3NpZ24oe30sdCl9KGUpOnt9O2lmKCF0KXJldHVybiBuO3ZhciBhPSh0PXQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC50YWd8fCIiIT09dC50ZXh0LnRyaW0oKX0pKSkuZXZlcnkodyk7cmV0dXJuIHQucmVkdWNlKGE/Xzp2LG4pfShkLmRlZmF1bHQsdSk6ZCksZz1pLnRhZyYmITAhPT1pLnRhZ3x8ITE9PT1pLnRhZz9pLnRhZzoic3BhbiI7cmV0dXJuIGc/dChnLG4sbSk6bX19fTtmdW5jdGlvbiBfKHQsZSl7cmV0dXJuIGUuZGF0YSYmZS5kYXRhLmF0dHJzJiZlLmRhdGEuYXR0cnMucGxhY2UmJih0W2UuZGF0YS5hdHRycy5wbGFjZV09ZSksdH1mdW5jdGlvbiB2KHQsZSxuKXtyZXR1cm4gdFtuXT1lLHR9ZnVuY3Rpb24gdyh0KXtyZXR1cm4gQm9vbGVhbih0LmRhdGEmJnQuZGF0YS5hdHRycyYmdC5kYXRhLmF0dHJzLnBsYWNlKX12YXIgeCxrPXtuYW1lOiJpMThuLW4iLGZ1bmN0aW9uYWw6ITAscHJvcHM6e3RhZzp7dHlwZTpbU3RyaW5nLEJvb2xlYW4sT2JqZWN0XSxkZWZhdWx0OiJzcGFuIn0sdmFsdWU6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiEwfSxmb3JtYXQ6e3R5cGU6W1N0cmluZyxPYmplY3RdfSxsb2NhbGU6e3R5cGU6U3RyaW5nfX0scmVuZGVyOmZ1bmN0aW9uKGUsbil7dmFyIHI9bi5wcm9wcyxvPW4ucGFyZW50LHM9bi5kYXRhLHA9by4kaTE4bjtpZighcClyZXR1cm4gbnVsbDt2YXIgdT1udWxsLGQ9bnVsbDtpKHIuZm9ybWF0KT91PXIuZm9ybWF0OmEoci5mb3JtYXQpJiYoci5mb3JtYXQua2V5JiYodT1yLmZvcm1hdC5rZXkpLGQ9T2JqZWN0LmtleXMoci5mb3JtYXQpLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXt2YXIgYTtyZXR1cm4gZyh0LG4pP09iamVjdC5hc3NpZ24oe30sZSwoKGE9e30pW25dPXIuZm9ybWF0W25dLGEpKTplfSksbnVsbCkpO3ZhciBtPXIubG9jYWxlfHxwLmxvY2FsZSxsPXAuX250cChyLnZhbHVlLG0sdSxkKSxjPWwubWFwKChmdW5jdGlvbih0LGUpe3ZhciBuLGE9cy5zY29wZWRTbG90cyYmcy5zY29wZWRTbG90c1t0LnR5cGVdO3JldHVybiBhP2EoKChuPXt9KVt0LnR5cGVdPXQudmFsdWUsbi5pbmRleD1lLG4ucGFydHM9bCxuKSk6dC52YWx1ZX0pKSxmPXIudGFnJiYhMCE9PXIudGFnfHwhMT09PXIudGFnP3IudGFnOiJzcGFuIjtyZXR1cm4gZj9lKGYse2F0dHJzOnMuYXR0cnMsY2xhc3M6cy5jbGFzcyxzdGF0aWNDbGFzczpzLnN0YXRpY0NsYXNzfSxjKTpjfX07ZnVuY3Rpb24gQyh0LGUsbil7QSh0LG4pJiZTKHQsZSxuKX1mdW5jdGlvbiBSKHQsZSxuLGEpe2lmKEEodCxuKSl7dmFyIGk9bi5jb250ZXh0LiRpMThuOyhmdW5jdGlvbih0LGUpe3ZhciBuPWUuY29udGV4dDtyZXR1cm4gdC5fbG9jYWxlPT09bi4kaTE4bi5sb2NhbGV9KSh0LG4pJiZoKGUudmFsdWUsZS5vbGRWYWx1ZSkmJmgodC5fbG9jYWxlTWVzc2FnZSxpLmdldExvY2FsZU1lc3NhZ2UoaS5sb2NhbGUpKXx8Uyh0LGUsbil9fWZ1bmN0aW9uIFAodCxuLGEsaSl7aWYoYS5jb250ZXh0KXt2YXIgcj1hLmNvbnRleHQuJGkxOG58fHt9O24ubW9kaWZpZXJzLnByZXNlcnZlfHxyLnByZXNlcnZlRGlyZWN0aXZlQ29udGVudHx8KHQudGV4dENvbnRlbnQ9IiIpLHQuX3Z0PXZvaWQgMCxkZWxldGUgdC5fdnQsdC5fbG9jYWxlPXZvaWQgMCxkZWxldGUgdC5fbG9jYWxlLHQuX2xvY2FsZU1lc3NhZ2U9dm9pZCAwLGRlbGV0ZSB0Ll9sb2NhbGVNZXNzYWdlfWVsc2UgZSgiVnVlIGluc3RhbmNlIGRvZXMgbm90IGV4aXN0cyBpbiBWTm9kZSBjb250ZXh0Iil9ZnVuY3Rpb24gQSh0LG4pe3ZhciBhPW4uY29udGV4dDtyZXR1cm4gYT8hIWEuJGkxOG58fChlKCJWdWVJMThuIGluc3RhbmNlIGRvZXMgbm90IGV4aXN0cyBpbiBWdWUgaW5zdGFuY2UiKSwhMSk6KGUoIlZ1ZSBpbnN0YW5jZSBkb2VzIG5vdCBleGlzdHMgaW4gVk5vZGUgY29udGV4dCIpLCExKX1mdW5jdGlvbiBTKHQsbixhKXt2YXIgcixvLHM9ZnVuY3Rpb24odCl7dmFyIGUsbixhLHI7cmV0dXJuIGkodCk/ZT10OnAodCkmJihlPXQucGF0aCxuPXQubG9jYWxlLGE9dC5hcmdzLHI9dC5jaG9pY2UpLHtwYXRoOmUsbG9jYWxlOm4sYXJnczphLGNob2ljZTpyfX0obi52YWx1ZSksdT1zLnBhdGgsZD1zLmxvY2FsZSxtPXMuYXJncyxnPXMuY2hvaWNlO2lmKHV8fGR8fG0paWYodSl7dmFyIGw9YS5jb250ZXh0O3QuX3Z0PXQudGV4dENvbnRlbnQ9bnVsbCE9Zz8ocj1sLiRpMThuKS50Yy5hcHBseShyLFt1LGddLmNvbmNhdCh6KGQsbSkpKToobz1sLiRpMThuKS50LmFwcGx5KG8sW3VdLmNvbmNhdCh6KGQsbSkpKSx0Ll9sb2NhbGU9bC4kaTE4bi5sb2NhbGUsdC5fbG9jYWxlTWVzc2FnZT1sLiRpMThuLmdldExvY2FsZU1lc3NhZ2UobC4kaTE4bi5sb2NhbGUpfWVsc2UgZSgiYHBhdGhgIGlzIHJlcXVpcmVkIGluIHYtdCBkaXJlY3RpdmUiKTtlbHNlIGUoInZhbHVlIHR5cGUgbm90IHN1cHBvcnRlZCIpfWZ1bmN0aW9uIHoodCxlKXt2YXIgbj1bXTtyZXR1cm4gdCYmbi5wdXNoKHQpLGUmJihBcnJheS5pc0FycmF5KGUpfHxwKGUpKSYmbi5wdXNoKGUpLG59ZnVuY3Rpb24gVCh0KXtULmluc3RhbGxlZD0hMCwoeD10KS52ZXJzaW9uJiZOdW1iZXIoeC52ZXJzaW9uLnNwbGl0KCIuIilbMF0pLGZ1bmN0aW9uKHQpe3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KCIkaTE4biIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIiRpMThuIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2kxOG59fSksdC5wcm90b3R5cGUuJHQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49YXJndW1lbnRzLmxlbmd0aC0xO24tLSA+MDspZVtuXT1hcmd1bWVudHNbbisxXTt2YXIgYT10aGlzLiRpMThuO3JldHVybiBhLl90LmFwcGx5KGEsW3QsYS5sb2NhbGUsYS5fZ2V0TWVzc2FnZXMoKSx0aGlzXS5jb25jYXQoZSkpfSx0LnByb3RvdHlwZS4kdGM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49W10sYT1hcmd1bWVudHMubGVuZ3RoLTI7YS0tID4wOyluW2FdPWFyZ3VtZW50c1thKzJdO3ZhciBpPXRoaXMuJGkxOG47cmV0dXJuIGkuX3RjLmFwcGx5KGksW3QsaS5sb2NhbGUsaS5fZ2V0TWVzc2FnZXMoKSx0aGlzLGVdLmNvbmNhdChuKSl9LHQucHJvdG90eXBlLiR0ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuJGkxOG47cmV0dXJuIG4uX3RlKHQsbi5sb2NhbGUsbi5fZ2V0TWVzc2FnZXMoKSxlKX0sdC5wcm90b3R5cGUuJGQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49W10sYT1hcmd1bWVudHMubGVuZ3RoLTE7YS0tID4wOyluW2FdPWFyZ3VtZW50c1thKzFdO3JldHVybihlPXRoaXMuJGkxOG4pLmQuYXBwbHkoZSxbdF0uY29uY2F0KG4pKX0sdC5wcm90b3R5cGUuJG49ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49W10sYT1hcmd1bWVudHMubGVuZ3RoLTE7YS0tID4wOyluW2FdPWFyZ3VtZW50c1thKzFdO3JldHVybihlPXRoaXMuJGkxOG4pLm4uYXBwbHkoZSxbdF0uY29uY2F0KG4pKX19KHgpLHgubWl4aW4oYikseC5kaXJlY3RpdmUoInQiLHtiaW5kOkMsdXBkYXRlOlIsdW5iaW5kOlB9KSx4LmNvbXBvbmVudCh5Lm5hbWUseSkseC5jb21wb25lbnQoay5uYW1lLGspLHguY29uZmlnLm9wdGlvbk1lcmdlU3RyYXRlZ2llcy5pMThuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWU/dDplfX12YXIgVz1mdW5jdGlvbigpe3RoaXMuX2NhY2hlcz1PYmplY3QuY3JlYXRlKG51bGwpfTtXLnByb3RvdHlwZS5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0LGUpe2lmKCFlKXJldHVyblt0XTt2YXIgbj10aGlzLl9jYWNoZXNbdF07cmV0dXJuIG58fChuPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTAsYT0iIjtuPHQubGVuZ3RoOyl7dmFyIGk9dFtuKytdO2lmKCJ7Ij09PWkpe2EmJmUucHVzaCh7dHlwZToidGV4dCIsdmFsdWU6YX0pLGE9IiI7dmFyIHI9IiI7Zm9yKGk9dFtuKytdO3ZvaWQgMCE9PWkmJiJ9IiE9PWk7KXIrPWksaT10W24rK107dmFyIG89In0iPT09aSxzPUwudGVzdChyKT8ibGlzdCI6byYmTy50ZXN0KHIpPyJuYW1lZCI6InVua25vd24iO2UucHVzaCh7dmFsdWU6cix0eXBlOnN9KX1lbHNlIiUiPT09aT8ieyIhPT10W25dJiYoYSs9aSk6YSs9aX1yZXR1cm4gYSYmZS5wdXNoKHt0eXBlOiJ0ZXh0Iix2YWx1ZTphfSksZX0odCksdGhpcy5fY2FjaGVzW3RdPW4pLGZ1bmN0aW9uKHQsZSl7dmFyIG49W10saT0wLHI9QXJyYXkuaXNBcnJheShlKT8ibGlzdCI6YShlKT8ibmFtZWQiOiJ1bmtub3duIjtpZigidW5rbm93biI9PT1yKXJldHVybiBuO2Zvcig7aTx0Lmxlbmd0aDspe3ZhciBvPXRbaV07c3dpdGNoKG8udHlwZSl7Y2FzZSJ0ZXh0IjpuLnB1c2goby52YWx1ZSk7YnJlYWs7Y2FzZSJsaXN0IjpuLnB1c2goZVtwYXJzZUludChvLnZhbHVlLDEwKV0pO2JyZWFrO2Nhc2UibmFtZWQiOiJuYW1lZCI9PT1yJiZuLnB1c2goZVtvLnZhbHVlXSl9aSsrfXJldHVybiBufShuLGUpfTt2YXIgTD0vXig/OlxkKSsvLE89L14oPzpcdykrLyxCPTAsST0xLGo9MixNPTMsRj0wLEU9NCxOPTUsJD02LFY9NyxEPTgscT1bXTtxW0ZdPXt3czpbRl0saWRlbnQ6WzMsQl0sIlsiOltFXSxlb2Y6W1ZdfSxxWzFdPXt3czpbMV0sIi4iOlsyXSwiWyI6W0VdLGVvZjpbVl19LHFbMl09e3dzOlsyXSxpZGVudDpbMyxCXSwwOlszLEJdLG51bWJlcjpbMyxCXX0scVszXT17aWRlbnQ6WzMsQl0sMDpbMyxCXSxudW1iZXI6WzMsQl0sd3M6WzEsSV0sIi4iOlsyLEldLCJbIjpbRSxJXSxlb2Y6W1YsSV19LHFbRV09eyInIjpbTixCXSwnIic6WyQsQl0sIlsiOltFLGpdLCJdIjpbMSxNXSxlb2Y6RCxlbHNlOltFLEJdfSxxW05dPXsiJyI6W0UsQl0sZW9mOkQsZWxzZTpbTixCXX0scVskXT17JyInOltFLEJdLGVvZjpELGVsc2U6WyQsQl19O3ZhciBIPS9eXHM/KD86dHJ1ZXxmYWxzZXwtP1tcZC5dK3wnW14nXSonfCJbXiJdKiIpXHM/JC87ZnVuY3Rpb24gSyh0KXtpZihudWxsPT10KXJldHVybiJlb2YiO3N3aXRjaCh0LmNoYXJDb2RlQXQoMCkpe2Nhc2UgOTE6Y2FzZSA5MzpjYXNlIDQ2OmNhc2UgMzQ6Y2FzZSAzOTpyZXR1cm4gdDtjYXNlIDk1OmNhc2UgMzY6Y2FzZSA0NTpyZXR1cm4iaWRlbnQiO2Nhc2UgOTpjYXNlIDEwOmNhc2UgMTM6Y2FzZSAxNjA6Y2FzZSA2NTI3OTpjYXNlIDgyMzI6Y2FzZSA4MjMzOnJldHVybiJ3cyJ9cmV0dXJuImlkZW50In1mdW5jdGlvbiBVKHQpe3ZhciBlLG4sYSxpPXQudHJpbSgpO3JldHVybigiMCIhPT10LmNoYXJBdCgwKXx8IWlzTmFOKHQpKSYmKGE9aSxILnRlc3QoYSk/KG49KGU9aSkuY2hhckNvZGVBdCgwKSkhPT1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSl8fDM0IT09biYmMzkhPT1uP2U6ZS5zbGljZSgxLC0xKToiKiIraSl9dmFyIEc9ZnVuY3Rpb24oKXt0aGlzLl9jYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpfTtHLnByb3RvdHlwZS5wYXJzZVBhdGg9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY2FjaGVbdF07cmV0dXJuIGV8fChlPWZ1bmN0aW9uKHQpe3ZhciBlLG4sYSxpLHIsbyxzLHA9W10sdT0tMSxkPUYsbT0wLGc9W107ZnVuY3Rpb24gbCgpe3ZhciBlPXRbdSsxXTtpZihkPT09TiYmIiciPT09ZXx8ZD09PSQmJiciJz09PWUpcmV0dXJuIHUrKyxhPSJcXCIrZSxnW0JdKCksITB9Zm9yKGdbSV09ZnVuY3Rpb24oKXt2b2lkIDAhPT1uJiYocC5wdXNoKG4pLG49dm9pZCAwKX0sZ1tCXT1mdW5jdGlvbigpe3ZvaWQgMD09PW4/bj1hOm4rPWF9LGdbal09ZnVuY3Rpb24oKXtnW0JdKCksbSsrfSxnW01dPWZ1bmN0aW9uKCl7aWYobT4wKW0tLSxkPUUsZ1tCXSgpO2Vsc2V7aWYobT0wLHZvaWQgMD09PW4pcmV0dXJuITE7aWYoITE9PT0obj1VKG4pKSlyZXR1cm4hMTtnW0ldKCl9fTtudWxsIT09ZDspaWYoIlxcIiE9PShlPXRbKyt1XSl8fCFsKCkpe2lmKGk9SyhlKSwocj0ocz1xW2RdKVtpXXx8cy5lbHNlfHxEKT09PUQpcmV0dXJuO2lmKGQ9clswXSwobz1nW3JbMV1dKSYmKGE9dm9pZCAwPT09KGE9clsyXSk/ZTphLCExPT09bygpKSlyZXR1cm47aWYoZD09PVYpcmV0dXJuIHB9fSh0KSkmJih0aGlzLl9jYWNoZVt0XT1lKSxlfHxbXX0sRy5wcm90b3R5cGUuZ2V0UGF0aFZhbHVlPWZ1bmN0aW9uKHQsZSl7aWYoIWEodCkpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5wYXJzZVBhdGgoZSk7aWYoMD09PW4ubGVuZ3RoKXJldHVybiBudWxsO2Zvcih2YXIgaT1uLmxlbmd0aCxyPXQsbz0wO288aTspe3ZhciBzPXJbbltvXV07aWYodm9pZCAwPT09cylyZXR1cm4gbnVsbDtyPXMsbysrfXJldHVybiByfTt2YXIgWSxKPS88XC8/W1x3XHM9Ii8uJzo7Iy1cL10rPi8sWj0vKD86QCg/OlwuW2Etel0rKT86KD86W1x3XC1ffC5dK3xcKFtcd1wtX3wuXStcKSkpL2csUT0vXkAoPzpcLihbYS16XSspKT86LyxYPS9bKCldL2csdHQ9e3VwcGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvTG9jYWxlVXBwZXJDYXNlKCl9LGxvd2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvTG9jYWxlTG93ZXJDYXNlKCl9LGNhcGl0YWxpemU6ZnVuY3Rpb24odCl7cmV0dXJuIiIrdC5jaGFyQXQoMCkudG9Mb2NhbGVVcHBlckNhc2UoKSt0LnN1YnN0cigxKX19LGV0PW5ldyBXLG50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dm9pZCAwPT09dCYmKHQ9e30pLCF4JiYidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LlZ1ZSYmVCh3aW5kb3cuVnVlKTt2YXIgbj10LmxvY2FsZXx8ImVuLVVTIixhPSExIT09dC5mYWxsYmFja0xvY2FsZSYmKHQuZmFsbGJhY2tMb2NhbGV8fCJlbi1VUyIpLGk9dC5tZXNzYWdlc3x8e30scj10LmRhdGVUaW1lRm9ybWF0c3x8e30sbz10Lm51bWJlckZvcm1hdHN8fHt9O3RoaXMuX3ZtPW51bGwsdGhpcy5fZm9ybWF0dGVyPXQuZm9ybWF0dGVyfHxldCx0aGlzLl9tb2RpZmllcnM9dC5tb2RpZmllcnN8fHt9LHRoaXMuX21pc3Npbmc9dC5taXNzaW5nfHxudWxsLHRoaXMuX3Jvb3Q9dC5yb290fHxudWxsLHRoaXMuX3N5bmM9dm9pZCAwPT09dC5zeW5jfHwhIXQuc3luYyx0aGlzLl9mYWxsYmFja1Jvb3Q9dm9pZCAwPT09dC5mYWxsYmFja1Jvb3R8fCEhdC5mYWxsYmFja1Jvb3QsdGhpcy5fZm9ybWF0RmFsbGJhY2tNZXNzYWdlcz12b2lkIDAhPT10LmZvcm1hdEZhbGxiYWNrTWVzc2FnZXMmJiEhdC5mb3JtYXRGYWxsYmFja01lc3NhZ2VzLHRoaXMuX3NpbGVudFRyYW5zbGF0aW9uV2Fybj12b2lkIDAhPT10LnNpbGVudFRyYW5zbGF0aW9uV2FybiYmdC5zaWxlbnRUcmFuc2xhdGlvbldhcm4sdGhpcy5fc2lsZW50RmFsbGJhY2tXYXJuPXZvaWQgMCE9PXQuc2lsZW50RmFsbGJhY2tXYXJuJiYhIXQuc2lsZW50RmFsbGJhY2tXYXJuLHRoaXMuX2RhdGVUaW1lRm9ybWF0dGVycz17fSx0aGlzLl9udW1iZXJGb3JtYXR0ZXJzPXt9LHRoaXMuX3BhdGg9bmV3IEcsdGhpcy5fZGF0YUxpc3RlbmVycz1bXSx0aGlzLl9jb21wb25lbnRJbnN0YW5jZUNyZWF0ZWRMaXN0ZW5lcj10LmNvbXBvbmVudEluc3RhbmNlQ3JlYXRlZExpc3RlbmVyfHxudWxsLHRoaXMuX3ByZXNlcnZlRGlyZWN0aXZlQ29udGVudD12b2lkIDAhPT10LnByZXNlcnZlRGlyZWN0aXZlQ29udGVudCYmISF0LnByZXNlcnZlRGlyZWN0aXZlQ29udGVudCx0aGlzLnBsdXJhbGl6YXRpb25SdWxlcz10LnBsdXJhbGl6YXRpb25SdWxlc3x8e30sdGhpcy5fd2Fybkh0bWxJbk1lc3NhZ2U9dC53YXJuSHRtbEluTWVzc2FnZXx8Im9mZiIsdGhpcy5fcG9zdFRyYW5zbGF0aW9uPXQucG9zdFRyYW5zbGF0aW9ufHxudWxsLHRoaXMuZ2V0Q2hvaWNlSW5kZXg9ZnVuY3Rpb24odCxuKXt2YXIgYSxpLHI9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiByJiZyLmdldENob2ljZUluZGV4P3IuZ2V0Q2hvaWNlSW5kZXguY2FsbChlLHQsbik6ZS5sb2NhbGUgaW4gZS5wbHVyYWxpemF0aW9uUnVsZXM/ZS5wbHVyYWxpemF0aW9uUnVsZXNbZS5sb2NhbGVdLmFwcGx5KGUsW3Qsbl0pOihhPXQsaT1uLGE9TWF0aC5hYnMoYSksMj09PWk/YT9hPjE/MTowOjE6YT9NYXRoLm1pbihhLDIpOjApfSx0aGlzLl9leGlzdD1mdW5jdGlvbih0LG4pe3JldHVybiEoIXR8fCFuKSYmKCF1KGUuX3BhdGguZ2V0UGF0aFZhbHVlKHQsbikpfHwhIXRbbl0pfSwid2FybiIhPT10aGlzLl93YXJuSHRtbEluTWVzc2FnZSYmImVycm9yIiE9PXRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlfHxPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtlLl9jaGVja0xvY2FsZU1lc3NhZ2UodCxlLl93YXJuSHRtbEluTWVzc2FnZSxpW3RdKX0pKSx0aGlzLl9pbml0Vk0oe2xvY2FsZTpuLGZhbGxiYWNrTG9jYWxlOmEsbWVzc2FnZXM6aSxkYXRlVGltZUZvcm1hdHM6cixudW1iZXJGb3JtYXRzOm99KX0sYXQ9e3ZtOntjb25maWd1cmFibGU6ITB9LG1lc3NhZ2VzOntjb25maWd1cmFibGU6ITB9LGRhdGVUaW1lRm9ybWF0czp7Y29uZmlndXJhYmxlOiEwfSxudW1iZXJGb3JtYXRzOntjb25maWd1cmFibGU6ITB9LGF2YWlsYWJsZUxvY2FsZXM6e2NvbmZpZ3VyYWJsZTohMH0sbG9jYWxlOntjb25maWd1cmFibGU6ITB9LGZhbGxiYWNrTG9jYWxlOntjb25maWd1cmFibGU6ITB9LGZvcm1hdEZhbGxiYWNrTWVzc2FnZXM6e2NvbmZpZ3VyYWJsZTohMH0sbWlzc2luZzp7Y29uZmlndXJhYmxlOiEwfSxmb3JtYXR0ZXI6e2NvbmZpZ3VyYWJsZTohMH0sc2lsZW50VHJhbnNsYXRpb25XYXJuOntjb25maWd1cmFibGU6ITB9LHNpbGVudEZhbGxiYWNrV2Fybjp7Y29uZmlndXJhYmxlOiEwfSxwcmVzZXJ2ZURpcmVjdGl2ZUNvbnRlbnQ6e2NvbmZpZ3VyYWJsZTohMH0sd2Fybkh0bWxJbk1lc3NhZ2U6e2NvbmZpZ3VyYWJsZTohMH0scG9zdFRyYW5zbGF0aW9uOntjb25maWd1cmFibGU6ITB9fTtyZXR1cm4gbnQucHJvdG90eXBlLl9jaGVja0xvY2FsZU1lc3NhZ2U9ZnVuY3Rpb24odCxuLGEpe3ZhciByPWZ1bmN0aW9uKHQsbixhLG8pe2lmKHAoYSkpT2JqZWN0LmtleXMoYSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGk9YVtlXTtwKGkpPyhvLnB1c2goZSksby5wdXNoKCIuIikscih0LG4saSxvKSxvLnBvcCgpLG8ucG9wKCkpOihvLnB1c2goZSkscih0LG4saSxvKSxvLnBvcCgpKX0pKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoYSkpYS5mb3JFYWNoKChmdW5jdGlvbihlLGEpe3AoZSk/KG8ucHVzaCgiWyIrYSsiXSIpLG8ucHVzaCgiLiIpLHIodCxuLGUsbyksby5wb3AoKSxvLnBvcCgpKTooby5wdXNoKCJbIithKyJdIikscih0LG4sZSxvKSxvLnBvcCgpKX0pKTtlbHNlIGlmKGkoYSkmJkoudGVzdChhKSl7dmFyIHM9IkRldGVjdGVkIEhUTUwgaW4gbWVzc2FnZSAnIithKyInIG9mIGtleXBhdGggJyIrby5qb2luKCIiKSsiJyBhdCAnIituKyInLiBDb25zaWRlciBjb21wb25lbnQgaW50ZXJwb2xhdGlvbiB3aXRoICc8aTE4bj4nIHRvIGF2b2lkIFhTUy4gU2VlIGh0dHBzOi8vYml0Lmx5LzJacUp6a3AiOyJ3YXJuIj09PXQ/ZShzKToiZXJyb3IiPT09dCYmZnVuY3Rpb24odCxlKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJihjb25zb2xlLmVycm9yKCJbdnVlLWkxOG5dICIrdCksZSYmY29uc29sZS5lcnJvcihlLnN0YWNrKSl9KHMpfX07cihuLHQsYSxbXSl9LG50LnByb3RvdHlwZS5faW5pdFZNPWZ1bmN0aW9uKHQpe3ZhciBlPXguY29uZmlnLnNpbGVudDt4LmNvbmZpZy5zaWxlbnQ9ITAsdGhpcy5fdm09bmV3IHgoe2RhdGE6dH0pLHguY29uZmlnLnNpbGVudD1lfSxudC5wcm90b3R5cGUuZGVzdHJveVZNPWZ1bmN0aW9uKCl7dGhpcy5fdm0uJGRlc3Ryb3koKX0sbnQucHJvdG90eXBlLnN1YnNjcmliZURhdGFDaGFuZ2luZz1mdW5jdGlvbih0KXt0aGlzLl9kYXRhTGlzdGVuZXJzLnB1c2godCl9LG50LnByb3RvdHlwZS51bnN1YnNjcmliZURhdGFDaGFuZ2luZz1mdW5jdGlvbih0KXshZnVuY3Rpb24odCxlKXtpZih0Lmxlbmd0aCl7dmFyIG49dC5pbmRleE9mKGUpO24+LTEmJnQuc3BsaWNlKG4sMSl9fSh0aGlzLl9kYXRhTGlzdGVuZXJzLHQpfSxudC5wcm90b3R5cGUud2F0Y2hJMThuRGF0YT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3ZtLiR3YXRjaCgiJGRhdGEiLChmdW5jdGlvbigpe2Zvcih2YXIgZT10Ll9kYXRhTGlzdGVuZXJzLmxlbmd0aDtlLS07KXgubmV4dFRpY2soKGZ1bmN0aW9uKCl7dC5fZGF0YUxpc3RlbmVyc1tlXSYmdC5fZGF0YUxpc3RlbmVyc1tlXS4kZm9yY2VVcGRhdGUoKX0pKX0pLHtkZWVwOiEwfSl9LG50LnByb3RvdHlwZS53YXRjaExvY2FsZT1mdW5jdGlvbigpe2lmKCF0aGlzLl9zeW5jfHwhdGhpcy5fcm9vdClyZXR1cm4gbnVsbDt2YXIgdD10aGlzLl92bTtyZXR1cm4gdGhpcy5fcm9vdC4kaTE4bi52bS4kd2F0Y2goImxvY2FsZSIsKGZ1bmN0aW9uKGUpe3QuJHNldCh0LCJsb2NhbGUiLGUpLHQuJGZvcmNlVXBkYXRlKCl9KSx7aW1tZWRpYXRlOiEwfSl9LG50LnByb3RvdHlwZS5vbkNvbXBvbmVudEluc3RhbmNlQ3JlYXRlZD1mdW5jdGlvbih0KXt0aGlzLl9jb21wb25lbnRJbnN0YW5jZUNyZWF0ZWRMaXN0ZW5lciYmdGhpcy5fY29tcG9uZW50SW5zdGFuY2VDcmVhdGVkTGlzdGVuZXIodCx0aGlzKX0sYXQudm0uZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZtfSxhdC5tZXNzYWdlcy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLl9nZXRNZXNzYWdlcygpKX0sYXQuZGF0ZVRpbWVGb3JtYXRzLmdldD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX2dldERhdGVUaW1lRm9ybWF0cygpKX0sYXQubnVtYmVyRm9ybWF0cy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLl9nZXROdW1iZXJGb3JtYXRzKCkpfSxhdC5hdmFpbGFibGVMb2NhbGVzLmdldD1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLm1lc3NhZ2VzKS5zb3J0KCl9LGF0LmxvY2FsZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdm0ubG9jYWxlfSxhdC5sb2NhbGUuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3ZtLiRzZXQodGhpcy5fdm0sImxvY2FsZSIsdCl9LGF0LmZhbGxiYWNrTG9jYWxlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl92bS5mYWxsYmFja0xvY2FsZX0sYXQuZmFsbGJhY2tMb2NhbGUuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX2xvY2FsZUNoYWluQ2FjaGU9e30sdGhpcy5fdm0uJHNldCh0aGlzLl92bSwiZmFsbGJhY2tMb2NhbGUiLHQpfSxhdC5mb3JtYXRGYWxsYmFja01lc3NhZ2VzLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb3JtYXRGYWxsYmFja01lc3NhZ2VzfSxhdC5mb3JtYXRGYWxsYmFja01lc3NhZ2VzLnNldD1mdW5jdGlvbih0KXt0aGlzLl9mb3JtYXRGYWxsYmFja01lc3NhZ2VzPXR9LGF0Lm1pc3NpbmcuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21pc3Npbmd9LGF0Lm1pc3Npbmcuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX21pc3Npbmc9dH0sYXQuZm9ybWF0dGVyLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb3JtYXR0ZXJ9LGF0LmZvcm1hdHRlci5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fZm9ybWF0dGVyPXR9LGF0LnNpbGVudFRyYW5zbGF0aW9uV2Fybi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2lsZW50VHJhbnNsYXRpb25XYXJufSxhdC5zaWxlbnRUcmFuc2xhdGlvbldhcm4uc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3NpbGVudFRyYW5zbGF0aW9uV2Fybj10fSxhdC5zaWxlbnRGYWxsYmFja1dhcm4uZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NpbGVudEZhbGxiYWNrV2Fybn0sYXQuc2lsZW50RmFsbGJhY2tXYXJuLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zaWxlbnRGYWxsYmFja1dhcm49dH0sYXQucHJlc2VydmVEaXJlY3RpdmVDb250ZW50LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcmVzZXJ2ZURpcmVjdGl2ZUNvbnRlbnR9LGF0LnByZXNlcnZlRGlyZWN0aXZlQ29udGVudC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fcHJlc2VydmVEaXJlY3RpdmVDb250ZW50PXR9LGF0Lndhcm5IdG1sSW5NZXNzYWdlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl93YXJuSHRtbEluTWVzc2FnZX0sYXQud2Fybkh0bWxJbk1lc3NhZ2Uuc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLl93YXJuSHRtbEluTWVzc2FnZTtpZih0aGlzLl93YXJuSHRtbEluTWVzc2FnZT10LG4hPT10JiYoIndhcm4iPT09dHx8ImVycm9yIj09PXQpKXt2YXIgYT10aGlzLl9nZXRNZXNzYWdlcygpO09iamVjdC5rZXlzKGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuX2NoZWNrTG9jYWxlTWVzc2FnZSh0LGUuX3dhcm5IdG1sSW5NZXNzYWdlLGFbdF0pfSkpfX0sYXQucG9zdFRyYW5zbGF0aW9uLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3N0VHJhbnNsYXRpb259LGF0LnBvc3RUcmFuc2xhdGlvbi5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fcG9zdFRyYW5zbGF0aW9uPXR9LG50LnByb3RvdHlwZS5fZ2V0TWVzc2FnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdm0ubWVzc2FnZXN9LG50LnByb3RvdHlwZS5fZ2V0RGF0ZVRpbWVGb3JtYXRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZtLmRhdGVUaW1lRm9ybWF0c30sbnQucHJvdG90eXBlLl9nZXROdW1iZXJGb3JtYXRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZtLm51bWJlckZvcm1hdHN9LG50LnByb3RvdHlwZS5fd2FybkRlZmF1bHQ9ZnVuY3Rpb24odCxlLG4sYSxyLG8pe2lmKCF1KG4pKXJldHVybiBuO2lmKHRoaXMuX21pc3Npbmcpe3ZhciBzPXRoaXMuX21pc3NpbmcuYXBwbHkobnVsbCxbdCxlLGEscl0pO2lmKGkocykpcmV0dXJuIHN9aWYodGhpcy5fZm9ybWF0RmFsbGJhY2tNZXNzYWdlcyl7dmFyIHA9ZC5hcHBseSh2b2lkIDAscik7cmV0dXJuIHRoaXMuX3JlbmRlcihlLG8scC5wYXJhbXMsZSl9cmV0dXJuIGV9LG50LnByb3RvdHlwZS5faXNGYWxsYmFja1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIXQmJiF1KHRoaXMuX3Jvb3QpJiZ0aGlzLl9mYWxsYmFja1Jvb3R9LG50LnByb3RvdHlwZS5faXNTaWxlbnRGYWxsYmFja1dhcm49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3NpbGVudEZhbGxiYWNrV2FybiBpbnN0YW5jZW9mIFJlZ0V4cD90aGlzLl9zaWxlbnRGYWxsYmFja1dhcm4udGVzdCh0KTp0aGlzLl9zaWxlbnRGYWxsYmFja1dhcm59LG50LnByb3RvdHlwZS5faXNTaWxlbnRGYWxsYmFjaz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9pc1NpbGVudEZhbGxiYWNrV2FybihlKSYmKHRoaXMuX2lzRmFsbGJhY2tSb290KCl8fHQhPT10aGlzLmZhbGxiYWNrTG9jYWxlKX0sbnQucHJvdG90eXBlLl9pc1NpbGVudFRyYW5zbGF0aW9uV2Fybj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fc2lsZW50VHJhbnNsYXRpb25XYXJuIGluc3RhbmNlb2YgUmVnRXhwP3RoaXMuX3NpbGVudFRyYW5zbGF0aW9uV2Fybi50ZXN0KHQpOnRoaXMuX3NpbGVudFRyYW5zbGF0aW9uV2Fybn0sbnQucHJvdG90eXBlLl9pbnRlcnBvbGF0ZT1mdW5jdGlvbih0LGUsbixhLHIsbyxzKXtpZighZSlyZXR1cm4gbnVsbDt2YXIgZCxtPXRoaXMuX3BhdGguZ2V0UGF0aFZhbHVlKGUsbik7aWYoQXJyYXkuaXNBcnJheShtKXx8cChtKSlyZXR1cm4gbTtpZih1KG0pKXtpZighcChlKSlyZXR1cm4gbnVsbDtpZighaShkPWVbbl0pKXJldHVybiBudWxsfWVsc2V7aWYoIWkobSkpcmV0dXJuIG51bGw7ZD1tfXJldHVybihkLmluZGV4T2YoIkA6Iik+PTB8fGQuaW5kZXhPZigiQC4iKT49MCkmJihkPXRoaXMuX2xpbmsodCxlLGQsYSwicmF3IixvLHMpKSx0aGlzLl9yZW5kZXIoZCxyLG8sbil9LG50LnByb3RvdHlwZS5fbGluaz1mdW5jdGlvbih0LGUsbixhLGkscixvKXt2YXIgcz1uLHA9cy5tYXRjaChaKTtmb3IodmFyIHUgaW4gcClpZihwLmhhc093blByb3BlcnR5KHUpKXt2YXIgZD1wW3VdLG09ZC5tYXRjaChRKSxsPW1bMF0sYz1tWzFdLGY9ZC5yZXBsYWNlKGwsIiIpLnJlcGxhY2UoWCwiIik7aWYoZyhvLGYpKXJldHVybiBzO28ucHVzaChmKTt2YXIgaD10aGlzLl9pbnRlcnBvbGF0ZSh0LGUsZixhLCJyYXciPT09aT8ic3RyaW5nIjppLCJyYXciPT09aT92b2lkIDA6cixvKTtpZih0aGlzLl9pc0ZhbGxiYWNrUm9vdChoKSl7aWYoIXRoaXMuX3Jvb3QpdGhyb3cgRXJyb3IoInVuZXhwZWN0ZWQgZXJyb3IiKTt2YXIgYj10aGlzLl9yb290LiRpMThuO2g9Yi5fdHJhbnNsYXRlKGIuX2dldE1lc3NhZ2VzKCksYi5sb2NhbGUsYi5mYWxsYmFja0xvY2FsZSxmLGEsaSxyKX1oPXRoaXMuX3dhcm5EZWZhdWx0KHQsZixoLGEsQXJyYXkuaXNBcnJheShyKT9yOltyXSxpKSx0aGlzLl9tb2RpZmllcnMuaGFzT3duUHJvcGVydHkoYyk/aD10aGlzLl9tb2RpZmllcnNbY10oaCk6dHQuaGFzT3duUHJvcGVydHkoYykmJihoPXR0W2NdKGgpKSxvLnBvcCgpLHM9aD9zLnJlcGxhY2UoZCxoKTpzfXJldHVybiBzfSxudC5wcm90b3R5cGUuX3JlbmRlcj1mdW5jdGlvbih0LGUsbixhKXt2YXIgcj10aGlzLl9mb3JtYXR0ZXIuaW50ZXJwb2xhdGUodCxuLGEpO3JldHVybiByfHwocj1ldC5pbnRlcnBvbGF0ZSh0LG4sYSkpLCJzdHJpbmciIT09ZXx8aShyKT9yOnIuam9pbigiIil9LG50LnByb3RvdHlwZS5fYXBwZW5kSXRlbVRvQ2hhaW49ZnVuY3Rpb24odCxlLG4pe3ZhciBhPSExO3JldHVybiBnKHQsZSl8fChhPSEwLGUmJihhPSIhIiE9PWVbZS5sZW5ndGgtMV0sZT1lLnJlcGxhY2UoLyEvZywiIiksdC5wdXNoKGUpLG4mJm5bZV0mJihhPW5bZV0pKSksYX0sbnQucHJvdG90eXBlLl9hcHBlbmRMb2NhbGVUb0NoYWluPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYSxpPWUuc3BsaXQoIi0iKTtkb3t2YXIgcj1pLmpvaW4oIi0iKTthPXRoaXMuX2FwcGVuZEl0ZW1Ub0NoYWluKHQscixuKSxpLnNwbGljZSgtMSwxKX13aGlsZShpLmxlbmd0aCYmITA9PT1hKTtyZXR1cm4gYX0sbnQucHJvdG90eXBlLl9hcHBlbmRCbG9ja1RvQ2hhaW49ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgYT0hMCxyPTA7cjxlLmxlbmd0aCYmImJvb2xlYW4iPT10eXBlb2YgYTtyKyspe3ZhciBvPWVbcl07aShvKSYmKGE9dGhpcy5fYXBwZW5kTG9jYWxlVG9DaGFpbih0LG8sbikpfXJldHVybiBhfSxudC5wcm90b3R5cGUuX2dldExvY2FsZUNoYWluPWZ1bmN0aW9uKHQsZSl7aWYoIiI9PT10KXJldHVybltdO3RoaXMuX2xvY2FsZUNoYWluQ2FjaGV8fCh0aGlzLl9sb2NhbGVDaGFpbkNhY2hlPXt9KTt2YXIgcj10aGlzLl9sb2NhbGVDaGFpbkNhY2hlW3RdO2lmKCFyKXtlfHwoZT10aGlzLmZhbGxiYWNrTG9jYWxlKSxyPVtdO2Zvcih2YXIgbyxzPVt0XTtuKHMpOylzPXRoaXMuX2FwcGVuZEJsb2NrVG9DaGFpbihyLHMsZSk7KHM9aShvPW4oZSk/ZTphKGUpP2UuZGVmYXVsdD9lLmRlZmF1bHQ6bnVsbDplKT9bb106bykmJnRoaXMuX2FwcGVuZEJsb2NrVG9DaGFpbihyLHMsbnVsbCksdGhpcy5fbG9jYWxlQ2hhaW5DYWNoZVt0XT1yfXJldHVybiByfSxudC5wcm90b3R5cGUuX3RyYW5zbGF0ZT1mdW5jdGlvbih0LGUsbixhLGkscixvKXtmb3IodmFyIHMscD10aGlzLl9nZXRMb2NhbGVDaGFpbihlLG4pLGQ9MDtkPHAubGVuZ3RoO2QrKyl7dmFyIG09cFtkXTtpZighdShzPXRoaXMuX2ludGVycG9sYXRlKG0sdFttXSxhLGkscixvLFthXSkpKXJldHVybiBzfXJldHVybiBudWxsfSxudC5wcm90b3R5cGUuX3Q9ZnVuY3Rpb24odCxlLG4sYSl7Zm9yKHZhciBpLHI9W10sbz1hcmd1bWVudHMubGVuZ3RoLTQ7by0tID4wOylyW29dPWFyZ3VtZW50c1tvKzRdO2lmKCF0KXJldHVybiIiO3ZhciBzPWQuYXBwbHkodm9pZCAwLHIpLHA9cy5sb2NhbGV8fGUsdT10aGlzLl90cmFuc2xhdGUobixwLHRoaXMuZmFsbGJhY2tMb2NhbGUsdCxhLCJzdHJpbmciLHMucGFyYW1zKTtpZih0aGlzLl9pc0ZhbGxiYWNrUm9vdCh1KSl7aWYoIXRoaXMuX3Jvb3QpdGhyb3cgRXJyb3IoInVuZXhwZWN0ZWQgZXJyb3IiKTtyZXR1cm4oaT10aGlzLl9yb290KS4kdC5hcHBseShpLFt0XS5jb25jYXQocikpfXJldHVybiB1PXRoaXMuX3dhcm5EZWZhdWx0KHAsdCx1LGEsciwic3RyaW5nIiksdGhpcy5fcG9zdFRyYW5zbGF0aW9uJiZudWxsIT11JiYodT10aGlzLl9wb3N0VHJhbnNsYXRpb24odSx0KSksdX0sbnQucHJvdG90eXBlLnQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49W10sYT1hcmd1bWVudHMubGVuZ3RoLTE7YS0tID4wOyluW2FdPWFyZ3VtZW50c1thKzFdO3JldHVybihlPXRoaXMpLl90LmFwcGx5KGUsW3QsdGhpcy5sb2NhbGUsdGhpcy5fZ2V0TWVzc2FnZXMoKSxudWxsXS5jb25jYXQobikpfSxudC5wcm90b3R5cGUuX2k9ZnVuY3Rpb24odCxlLG4sYSxpKXt2YXIgcj10aGlzLl90cmFuc2xhdGUobixlLHRoaXMuZmFsbGJhY2tMb2NhbGUsdCxhLCJyYXciLGkpO2lmKHRoaXMuX2lzRmFsbGJhY2tSb290KHIpKXtpZighdGhpcy5fcm9vdCl0aHJvdyBFcnJvcigidW5leHBlY3RlZCBlcnJvciIpO3JldHVybiB0aGlzLl9yb290LiRpMThuLmkodCxlLGkpfXJldHVybiB0aGlzLl93YXJuRGVmYXVsdChlLHQscixhLFtpXSwicmF3Iil9LG50LnByb3RvdHlwZS5pPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdD8oaShlKXx8KGU9dGhpcy5sb2NhbGUpLHRoaXMuX2kodCxlLHRoaXMuX2dldE1lc3NhZ2VzKCksbnVsbCxuKSk6IiJ9LG50LnByb3RvdHlwZS5fdGM9ZnVuY3Rpb24odCxlLG4sYSxpKXtmb3IodmFyIHIsbz1bXSxzPWFyZ3VtZW50cy5sZW5ndGgtNTtzLS0gPjA7KW9bc109YXJndW1lbnRzW3MrNV07aWYoIXQpcmV0dXJuIiI7dm9pZCAwPT09aSYmKGk9MSk7dmFyIHA9e2NvdW50OmksbjppfSx1PWQuYXBwbHkodm9pZCAwLG8pO3JldHVybiB1LnBhcmFtcz1PYmplY3QuYXNzaWduKHAsdS5wYXJhbXMpLG89bnVsbD09PXUubG9jYWxlP1t1LnBhcmFtc106W3UubG9jYWxlLHUucGFyYW1zXSx0aGlzLmZldGNoQ2hvaWNlKChyPXRoaXMpLl90LmFwcGx5KHIsW3QsZSxuLGFdLmNvbmNhdChvKSksaSl9LG50LnByb3RvdHlwZS5mZXRjaENob2ljZT1mdW5jdGlvbih0LGUpe2lmKCF0JiYhaSh0KSlyZXR1cm4gbnVsbDt2YXIgbj10LnNwbGl0KCJ8Iik7cmV0dXJuIG5bZT10aGlzLmdldENob2ljZUluZGV4KGUsbi5sZW5ndGgpXT9uW2VdLnRyaW0oKTp0fSxudC5wcm90b3R5cGUudGM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4sYT1bXSxpPWFyZ3VtZW50cy5sZW5ndGgtMjtpLS0gPjA7KWFbaV09YXJndW1lbnRzW2krMl07cmV0dXJuKG49dGhpcykuX3RjLmFwcGx5KG4sW3QsdGhpcy5sb2NhbGUsdGhpcy5fZ2V0TWVzc2FnZXMoKSxudWxsLGVdLmNvbmNhdChhKSl9LG50LnByb3RvdHlwZS5fdGU9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgYT1bXSxpPWFyZ3VtZW50cy5sZW5ndGgtMztpLS0gPjA7KWFbaV09YXJndW1lbnRzW2krM107dmFyIHI9ZC5hcHBseSh2b2lkIDAsYSkubG9jYWxlfHxlO3JldHVybiB0aGlzLl9leGlzdChuW3JdLHQpfSxudC5wcm90b3R5cGUudGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdGUodCx0aGlzLmxvY2FsZSx0aGlzLl9nZXRNZXNzYWdlcygpLGUpfSxudC5wcm90b3R5cGUuZ2V0TG9jYWxlTWVzc2FnZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0aGlzLl92bS5tZXNzYWdlc1t0XXx8e30pfSxudC5wcm90b3R5cGUuc2V0TG9jYWxlTWVzc2FnZT1mdW5jdGlvbih0LGUpeyJ3YXJuIiE9PXRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlJiYiZXJyb3IiIT09dGhpcy5fd2Fybkh0bWxJbk1lc3NhZ2V8fHRoaXMuX2NoZWNrTG9jYWxlTWVzc2FnZSh0LHRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlLGUpLHRoaXMuX3ZtLiRzZXQodGhpcy5fdm0ubWVzc2FnZXMsdCxlKX0sbnQucHJvdG90eXBlLm1lcmdlTG9jYWxlTWVzc2FnZT1mdW5jdGlvbih0LGUpeyJ3YXJuIiE9PXRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlJiYiZXJyb3IiIT09dGhpcy5fd2Fybkh0bWxJbk1lc3NhZ2V8fHRoaXMuX2NoZWNrTG9jYWxlTWVzc2FnZSh0LHRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlLGUpLHRoaXMuX3ZtLiRzZXQodGhpcy5fdm0ubWVzc2FnZXMsdCxmKHt9LHRoaXMuX3ZtLm1lc3NhZ2VzW3RdfHx7fSxlKSl9LG50LnByb3RvdHlwZS5nZXREYXRlVGltZUZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gbSh0aGlzLl92bS5kYXRlVGltZUZvcm1hdHNbdF18fHt9KX0sbnQucHJvdG90eXBlLnNldERhdGVUaW1lRm9ybWF0PWZ1bmN0aW9uKHQsZSl7dGhpcy5fdm0uJHNldCh0aGlzLl92bS5kYXRlVGltZUZvcm1hdHMsdCxlKSx0aGlzLl9jbGVhckRhdGVUaW1lRm9ybWF0KHQsZSl9LG50LnByb3RvdHlwZS5tZXJnZURhdGVUaW1lRm9ybWF0PWZ1bmN0aW9uKHQsZSl7dGhpcy5fdm0uJHNldCh0aGlzLl92bS5kYXRlVGltZUZvcm1hdHMsdCxmKHRoaXMuX3ZtLmRhdGVUaW1lRm9ybWF0c1t0XXx8e30sZSkpLHRoaXMuX2NsZWFyRGF0ZVRpbWVGb3JtYXQodCxlKX0sbnQucHJvdG90eXBlLl9jbGVhckRhdGVUaW1lRm9ybWF0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpe3ZhciBhPXQrIl9fIituO3RoaXMuX2RhdGVUaW1lRm9ybWF0dGVycy5oYXNPd25Qcm9wZXJ0eShhKSYmZGVsZXRlIHRoaXMuX2RhdGVUaW1lRm9ybWF0dGVyc1thXX19LG50LnByb3RvdHlwZS5fbG9jYWxpemVEYXRlVGltZT1mdW5jdGlvbih0LGUsbixhLGkpe2Zvcih2YXIgcj1lLG89YVtyXSxzPXRoaXMuX2dldExvY2FsZUNoYWluKGUsbikscD0wO3A8cy5sZW5ndGg7cCsrKXt2YXIgZD1zW3BdO2lmKHI9ZCwhdShvPWFbZF0pJiYhdShvW2ldKSlicmVha31pZih1KG8pfHx1KG9baV0pKXJldHVybiBudWxsO3ZhciBtPW9baV0sZz1yKyJfXyIraSxsPXRoaXMuX2RhdGVUaW1lRm9ybWF0dGVyc1tnXTtyZXR1cm4gbHx8KGw9dGhpcy5fZGF0ZVRpbWVGb3JtYXR0ZXJzW2ddPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHIsbSkpLGwuZm9ybWF0KHQpfSxudC5wcm90b3R5cGUuX2Q9ZnVuY3Rpb24odCxlLG4pe2lmKCFuKXJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChlKS5mb3JtYXQodCk7dmFyIGE9dGhpcy5fbG9jYWxpemVEYXRlVGltZSh0LGUsdGhpcy5mYWxsYmFja0xvY2FsZSx0aGlzLl9nZXREYXRlVGltZUZvcm1hdHMoKSxuKTtpZih0aGlzLl9pc0ZhbGxiYWNrUm9vdChhKSl7aWYoIXRoaXMuX3Jvb3QpdGhyb3cgRXJyb3IoInVuZXhwZWN0ZWQgZXJyb3IiKTtyZXR1cm4gdGhpcy5fcm9vdC4kaTE4bi5kKHQsbixlKX1yZXR1cm4gYXx8IiJ9LG50LnByb3RvdHlwZS5kPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPWFyZ3VtZW50cy5sZW5ndGgtMTtuLS0gPjA7KWVbbl09YXJndW1lbnRzW24rMV07dmFyIHI9dGhpcy5sb2NhbGUsbz1udWxsO3JldHVybiAxPT09ZS5sZW5ndGg/aShlWzBdKT9vPWVbMF06YShlWzBdKSYmKGVbMF0ubG9jYWxlJiYocj1lWzBdLmxvY2FsZSksZVswXS5rZXkmJihvPWVbMF0ua2V5KSk6Mj09PWUubGVuZ3RoJiYoaShlWzBdKSYmKG89ZVswXSksaShlWzFdKSYmKHI9ZVsxXSkpLHRoaXMuX2QodCxyLG8pfSxudC5wcm90b3R5cGUuZ2V0TnVtYmVyRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiBtKHRoaXMuX3ZtLm51bWJlckZvcm1hdHNbdF18fHt9KX0sbnQucHJvdG90eXBlLnNldE51bWJlckZvcm1hdD1mdW5jdGlvbih0LGUpe3RoaXMuX3ZtLiRzZXQodGhpcy5fdm0ubnVtYmVyRm9ybWF0cyx0LGUpLHRoaXMuX2NsZWFyTnVtYmVyRm9ybWF0KHQsZSl9LG50LnByb3RvdHlwZS5tZXJnZU51bWJlckZvcm1hdD1mdW5jdGlvbih0LGUpe3RoaXMuX3ZtLiRzZXQodGhpcy5fdm0ubnVtYmVyRm9ybWF0cyx0LGYodGhpcy5fdm0ubnVtYmVyRm9ybWF0c1t0XXx8e30sZSkpLHRoaXMuX2NsZWFyTnVtYmVyRm9ybWF0KHQsZSl9LG50LnByb3RvdHlwZS5fY2xlYXJOdW1iZXJGb3JtYXQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSl7dmFyIGE9dCsiX18iK247dGhpcy5fbnVtYmVyRm9ybWF0dGVycy5oYXNPd25Qcm9wZXJ0eShhKSYmZGVsZXRlIHRoaXMuX251bWJlckZvcm1hdHRlcnNbYV19fSxudC5wcm90b3R5cGUuX2dldE51bWJlckZvcm1hdHRlcj1mdW5jdGlvbih0LGUsbixhLGkscil7Zm9yKHZhciBvPWUscz1hW29dLHA9dGhpcy5fZ2V0TG9jYWxlQ2hhaW4oZSxuKSxkPTA7ZDxwLmxlbmd0aDtkKyspe3ZhciBtPXBbZF07aWYobz1tLCF1KHM9YVttXSkmJiF1KHNbaV0pKWJyZWFrfWlmKHUocyl8fHUoc1tpXSkpcmV0dXJuIG51bGw7dmFyIGcsbD1zW2ldO2lmKHIpZz1uZXcgSW50bC5OdW1iZXJGb3JtYXQobyxPYmplY3QuYXNzaWduKHt9LGwscikpO2Vsc2V7dmFyIGM9bysiX18iK2k7KGc9dGhpcy5fbnVtYmVyRm9ybWF0dGVyc1tjXSl8fChnPXRoaXMuX251bWJlckZvcm1hdHRlcnNbY109bmV3IEludGwuTnVtYmVyRm9ybWF0KG8sbCkpfXJldHVybiBnfSxudC5wcm90b3R5cGUuX249ZnVuY3Rpb24odCxlLG4sYSl7aWYoIW50LmF2YWlsYWJpbGl0aWVzLm51bWJlckZvcm1hdClyZXR1cm4iIjtpZighbilyZXR1cm4oYT9uZXcgSW50bC5OdW1iZXJGb3JtYXQoZSxhKTpuZXcgSW50bC5OdW1iZXJGb3JtYXQoZSkpLmZvcm1hdCh0KTt2YXIgaT10aGlzLl9nZXROdW1iZXJGb3JtYXR0ZXIodCxlLHRoaXMuZmFsbGJhY2tMb2NhbGUsdGhpcy5fZ2V0TnVtYmVyRm9ybWF0cygpLG4sYSkscj1pJiZpLmZvcm1hdCh0KTtpZih0aGlzLl9pc0ZhbGxiYWNrUm9vdChyKSl7aWYoIXRoaXMuX3Jvb3QpdGhyb3cgRXJyb3IoInVuZXhwZWN0ZWQgZXJyb3IiKTtyZXR1cm4gdGhpcy5fcm9vdC4kaTE4bi5uKHQsT2JqZWN0LmFzc2lnbih7fSx7a2V5Om4sbG9jYWxlOmV9LGEpKX1yZXR1cm4gcnx8IiJ9LG50LnByb3RvdHlwZS5uPWZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1bXSxyPWFyZ3VtZW50cy5sZW5ndGgtMTtyLS0gPjA7KW5bcl09YXJndW1lbnRzW3IrMV07dmFyIG89dGhpcy5sb2NhbGUscz1udWxsLHA9bnVsbDtyZXR1cm4gMT09PW4ubGVuZ3RoP2koblswXSk/cz1uWzBdOmEoblswXSkmJihuWzBdLmxvY2FsZSYmKG89blswXS5sb2NhbGUpLG5bMF0ua2V5JiYocz1uWzBdLmtleSkscD1PYmplY3Qua2V5cyhuWzBdKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsYSl7dmFyIGk7cmV0dXJuIGcodCxhKT9PYmplY3QuYXNzaWduKHt9LGUsKChpPXt9KVthXT1uWzBdW2FdLGkpKTplfSksbnVsbCkpOjI9PT1uLmxlbmd0aCYmKGkoblswXSkmJihzPW5bMF0pLGkoblsxXSkmJihvPW5bMV0pKSx0aGlzLl9uKGUsbyxzLHApfSxudC5wcm90b3R5cGUuX250cD1mdW5jdGlvbih0LGUsbixhKXtpZighbnQuYXZhaWxhYmlsaXRpZXMubnVtYmVyRm9ybWF0KXJldHVybltdO2lmKCFuKXJldHVybihhP25ldyBJbnRsLk51bWJlckZvcm1hdChlLGEpOm5ldyBJbnRsLk51bWJlckZvcm1hdChlKSkuZm9ybWF0VG9QYXJ0cyh0KTt2YXIgaT10aGlzLl9nZXROdW1iZXJGb3JtYXR0ZXIodCxlLHRoaXMuZmFsbGJhY2tMb2NhbGUsdGhpcy5fZ2V0TnVtYmVyRm9ybWF0cygpLG4sYSkscj1pJiZpLmZvcm1hdFRvUGFydHModCk7aWYodGhpcy5faXNGYWxsYmFja1Jvb3Qocikpe2lmKCF0aGlzLl9yb290KXRocm93IEVycm9yKCJ1bmV4cGVjdGVkIGVycm9yIik7cmV0dXJuIHRoaXMuX3Jvb3QuJGkxOG4uX250cCh0LGUsbixhKX1yZXR1cm4gcnx8W119LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG50LnByb3RvdHlwZSxhdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KG50LCJhdmFpbGFiaWxpdGllcyIse2dldDpmdW5jdGlvbigpe2lmKCFZKXt2YXIgdD0idW5kZWZpbmVkIiE9dHlwZW9mIEludGw7WT17ZGF0ZVRpbWVGb3JtYXQ6dCYmdm9pZCAwIT09SW50bC5EYXRlVGltZUZvcm1hdCxudW1iZXJGb3JtYXQ6dCYmdm9pZCAwIT09SW50bC5OdW1iZXJGb3JtYXR9fXJldHVybiBZfX0pLG50Lmluc3RhbGw9VCxudC52ZXJzaW9uPSI4LjIwLjAiLG50fSwib2JqZWN0Ij09byhlKSYmInVuZGVmaW5lZCIhPXR5cGVvZiB0P3QuZXhwb3J0cz1yKCk6KGE9cixpPSJmdW5jdGlvbiI9PT10eXBlb2YgYT9hLmNhbGwoZSxuLGUsdCk6YSx2b2lkIDA9PT1pfHwodC5leHBvcnRzPWkpKX0sZDA3YzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oIjdhODIiKTt2YXIgYT1uKCI0ZWE0IikuZGVmYXVsdDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXZvaWQgMDt2YXIgaT1hKG4oIjU1MzAiKSk7bigiZDNiNyIpO3ZhciByPWEobigiNDM2MCIpKSxvPWEobigiYmFmNiIpKTtvLmRlZmF1bHQubWVzc2FnZXNbby5kZWZhdWx0LmxvY2FsZV0sZS5kZWZhdWx0PXtwb3N0OmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxhPXIuZGVmYXVsdC5zdGF0ZS51aWQ7cmV0dXJuIGF8fChhPXVuaS5nZXRTdG9yYWdlU3luYygidXNlcl9pZCIpKSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24obyxzKXt1bmkucmVxdWVzdCh7dXJsOnQsZGF0YTplLG1ldGhvZDoiUE9TVCIsaGVhZGVyOigwLGkuZGVmYXVsdCkoKDAsaS5kZWZhdWx0KSh7fSxuKSx7fSx7QXV0aG9yaXphdGlvbjphfSksc3VjY2VzczpmdW5jdGlvbih0KXtvKHQpfSxmYWlsOmZ1bmN0aW9uKHQpe3ModCl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQpezQwMT09PXQuZGF0YS5jb2RlJiYoci5kZWZhdWx0LmNvbW1pdCgic2V0VG9rZW4iLCIiKSxyLmRlZmF1bHQuY29tbWl0KCJzZXRVaWQiLCIiKSx1bmkuc2V0U3RvcmFnZVN5bmMoInVzZXJfaWQiLCIiKSx1bmkucmVMYXVuY2goe3VybDoiL3BhZ2VzL2xvZ2luL2luZGV4In0pKX19KX0pKX0sZ2V0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1yLmRlZmF1bHQuc3RhdGUudWlkO3JldHVybiBhfHwoYT11bmkuZ2V0U3RvcmFnZVN5bmMoInVzZXJfaWQiKSksbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8scyl7dW5pLnJlcXVlc3Qoe3VybDp0LGRhdGE6ZSxtZXRob2Q6IkdFVCIsaGVhZGVyOigwLGkuZGVmYXVsdCkoKDAsaS5kZWZhdWx0KSh7fSxuKSx7fSx7QXV0aG9yaXphdGlvbjphfSksc3VjY2VzczpmdW5jdGlvbih0KXtvKHQpfSxmYWlsOmZ1bmN0aW9uKHQpe3ModCl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQpe2NvbnNvbGUubG9nKHQpLHVuaS5oaWRlTG9hZGluZygpLC0xPT09dC5kYXRhLmNvZGU/dW5pLnNob3dUb2FzdCh7dGl0bGU6dC5kYXRhLm1zZyxpY29uOiJub25lIixkdXJhdGlvbjozZTN9KTo0ZTQ9PT10LmRhdGEuY29kZSYmKHIuZGVmYXVsdC5jb21taXQoInNldFRva2VuIiwiIiksci5kZWZhdWx0LmNvbW1pdCgic2V0VWlkIiwiIiksdW5pLnJlTGF1bmNoKHt1cmw6Ii9wYWdlcy9sb2dpbi9pbmRleCJ9KSl9fSl9KSl9LHVwbG9hZDpmdW5jdGlvbih0LGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTt1bmkuc2hvd0xvYWRpbmcoe3RpdGxlOnRpdGxlTXNnLG1hc2s6ITB9KTt2YXIgYT1yLmRlZmF1bHQuc3RhdGUudWlkO3JldHVybiBhfHwoYT11bmkuZ2V0U3RvcmFnZVN5bmMoInVzZXJfaWQiKSksbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dW5pLnVwbG9hZEZpbGUoe3VybDp0LGZpbGVQYXRoOmUsaGVhZGVyOigwLGkuZGVmYXVsdCkoKDAsaS5kZWZhdWx0KSh7fSxuKSx7fSx7QXV0aG9yaXphdGlvbjphfSksZm9ybURhdGE6e2RpcmVjdG9yeToiYXV0aG9yaXphdGlvbiJ9LG5hbWU6ImltZ1BhdGgiLHN1Y2Nlc3M6ZnVuY3Rpb24odCl7cih0KX0sZmFpbDpmdW5jdGlvbih0KXtvKHQpfSxjb21wbGV0ZTpmdW5jdGlvbih0KXtyKHQpfX0pfSkpfX19LGRkNjI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDA7ZS5kZWZhdWx0PXtuYXY6WyLYp9mE2LHYptmK2LPZitipIiwi2KfZhNiz2KzZhNin2KoiLCLYp9mE2KjYr9ihIiwi2KfZhNiu2K/ZhdipIiwi2KfZhNit2LPYp9ioIl0scmVjb3Jkc19uYXY6WyLYp9mE2YPZhCIsItin2YTZhdmC2K/ZhdipIiwi2KfZhNmF2YPYqtmF2YTYqSIsItin2YTZhdis2YXYr9ipIl0sYmlsbHNfbmF2Olsi2KfZhNmD2YQiLCLYp9mE2K/YrtmEIiwi2KfZhNmG2YHZgtin2KoiXSwiQmFuay5hY2NvdW50Ijoi2K3Ys9in2KgiLCJCYW5rLmVudGVyLmFjY291bnQiOiLZitix2KzZiSDYpdiv2K7Yp9mEINin2YTYrdiz2KfYqCIsIkJhbmsudXNlcm5hbWUiOiLYp9iz2YUg2KfZhNmF2LPYqtiu2K/ZhSIsIkJhbmsuZW50ZXIudXNlcm5hbWUiOiLZitix2KzZiSDYpdiv2K7Yp9mEINin2LPZhSDYp9mE2YXYs9iq2K7Yr9mFIiwiQmFuay50eXBlIjoi2YbZiNi5INin2YTYqNmD2LPZhCIsIkJhbmsuZW50ZXIudHlwZSI6ItmK2LHYrNmJINiq2K3Yr9mK2K8g2YbZiNi5INin2YTYqNmD2LPZhCIsIkJhbmsuY3BmIjoiQ3BmIiwiQmFuay5lbnRlci5jcGYiOiLZitix2KzZiSDYpdiv2K7Yp9mEIGNwZiIsIkJhbmsuc3VibWl0Ijoi2KrYo9mD2YrYryIsIkJhbmsuYmluZC5iYW5rIjoi2YrYsdis2Ykg2LHYqNi3INin2YTYqNmG2YMg2KfZhNiu2KfYtSDYqNmDIiwiQ29tbW9uLmxvYWRpbmciOiLYrNin2LEg2KfZhNiq2K3ZhdmK2YQuLi4iLCJDb21tb24ubm9fZGF0YSI6ItmE2Kcg2KrZiNis2K8g2LPYrNmE2KfYqiIsIkNvbW1vbi5jb3B5Ijoi2YbYs9iuIiwiQ29tbW9uLnNpZ24iOiLYudmE2KfZhdipIiwiQ29tbW9uLmNyZWRpdF9zY29yZSI6Itiv2LHYrNipINin2YTYp9im2KrZhdin2YYiLCJJbmRleC5jb21tb2RpdGllcyI6Itin2YTYs9mE2LkiLCJJbmRleC5hYm91dCI6Iti52YbYpyIsIkluZGV4LmNvbXBhbnkiOiLYtNix2YPYqSDYp9mE2KrYs9mI2YrZgiDYp9mE2YbYp9mF2YrYqSIsIkluZGV4LmludHJvZHVjdGlvbiI6Itin2YbZgtixINmE2LnYsdi2INin2YTZhdmC2K/ZhdipIiwiSW5kZXguY29tbWlzc2lvbiI6Itin2YTYudmF2YjZhNipIiwiSW5kZXguZ2V0Ijoi2KfYrdi12YQg2LnZhNmJINi52YXZiNmE2KkiLCJPcmRlci50b3RhbF92YWx1ZSI6Itin2YTZgtmK2YXYqSDYp9mE2KXYrNmF2KfZhNmK2KkiLCJPcmRlci5jb21taXNzaW9uIjoi2KfZhNi52YXZiNmE2KkiLCJPcmRlci5zdWJtaXQiOiLYpdix2LPYp9mEIiwiT3JkZXIudGltZSI6ItmI2YLYqiDYp9mE2LfZhNioIiwiT3JkZXIubnVtYmVyIjoi2LHZgtmFINin2YTYt9mE2KgiLCJPcmRlci50b3RhbCI6Itil2KzZhdin2YTZiiDYp9mE2LfZhNioIiwiT3JkZXIuZXhwZWN0ZWQiOiLYp9mE2LnYp9im2K8g2KfZhNmF2KrZiNmC2LkiLCJSZWNoYXJnZS5iYWxhbmNlIjoi2KfZhNix2LXZitivIiwiUmVjaGFyZ2UuYWRkcmVzcyI6Iti52YbZiNin2YYg2KfZhNi02K3ZhiIsIlJlY2hhcmdlLmFtb3VudCI6ItmF2KjZhNi6INin2YTYtNit2YYiLCJSZWNoYXJnZS5lbnRlci5hbW91bnQiOiLYp9mE2LHYrNin2KEg2KXYr9iu2KfZhCDZhdio2YTYuiDYp9mE2LTYrdmGIiwiUmVjaGFyZ2UudXBsb2FkIjoi2KrYrdmF2YrZhCDYtdmI2LHYqSDYp9mE2K/Zgdi5IiwiUmVjaGFyZ2UucGxlYXNlIjoi2KfZhNix2KzYp9ihINiq2K3ZhdmK2YQg2LXZiNix2Kkg2KfZhNiv2YHYuSIsIlJlY2hhcmdlLnVwbG9hZDEiOiLYqtit2YXZitmEIiwiUmVjaGFyZ2Uuc3VibWl0Ijoi2YTZgtivINij2YPZhdmE2Kog2LnZhdmE2YrYqSDYp9mE2LTYrdmGIiwiUmVjaGFyZ2UudGlwcyI6ItmG2LXYp9im2K0iLCJSZWNoYXJnZS50aXBzMSI6IjEuINmK2LHYrNmJINmG2LPYriDYudmG2YjYp9mGINin2YTZhdit2YHYuNipIFRSQy0yMCDZhNmE2K/Zgdi5INmB2Yog2YfYsNinINin2YTZhdiq2KzYsS4iLCJSZWNoYXJnZS50aXBzMiI6IjIuINmC2YUg2KjYp9mE2KrYrdmI2YrZhCDYqNi52K8g2KfZhNiq2K3ZgtmCLiDYpdiw2Kcg2YLZhdiqINio2K7Yt9ij2Iwg2YHYpdmGINmH2LDYpyDYp9mE2YXYqtis2LEg2YTZhiDZitiq2K3ZhdmEINiu2LPYp9ix2KrZgy4iLCJSZWNoYXJnZS50aXBzMyI6IjMuINi52YbYr9mF2Kcg2YrZg9mI2YYg2K/Zgdi52YMg2YbYp9is2K3Zi9in2Iwg2YrYsdis2Ykg2KrYrdmF2YrZhCDYpdmK2LXYp9mEINin2YTYr9mB2LkuIiwiUmVjaGFyZ2UudGlwczQiOiI0LiDYudmG2K8g2KfZhNin2YbYqtmH2KfYoSDZhdmGINmH2LDYp9iMINin2YbZgtixOiDZhNmC2K8g2KPZg9mF2YTYqiDYudmF2YTZitipINin2YTYr9mB2LkuIiwiUmVjaGFyZ2UudGlwczUiOiI1LiDYpdiw2Kcg2YjYp9is2YfYqiDYo9mKINmF2LTYp9mD2YTYjCDYqtij2YPYryDZhdmGINin2YTYp9iq2LXYp9mEINio2K7Yr9mF2Kkg2KfZhNi52YXZhNin2KEg2LnYqNixINin2YTYpdmG2KrYsdmG2Kog2YHZiiDYp9mE2YjZgtiqINin2YTZhdmG2KfYs9ioINmE2YXYs9in2LnYr9iq2YMg2YHZiiDYrdmE2YfYpy4iLCJSZWNoYXJnZS5zZWxlY3QiOiLYp9iu2KrZitin2LEg2LfYsdmK2YLYqSDYpdi52KfYr9ipINin2YTYtNit2YYiLCJXaXRoZHJhdy5iaW5kLmFkZHJlc3MiOiLYp9mE2LHYrNin2KEg2LHYqNi3INi52YbZiNin2YYg2YXYrdmB2LjYqtmDIiwiV2l0aGRyYXcuYmFsYW5jZSI6Itin2YTYsdi12YrYryIsIldpdGhkcmF3LmFtb3VudCI6ItmF2KjZhNi6INin2YTYs9it2KgiLCJXaXRoZHJhdy5lbnRlci5hbW91bnQiOiLYp9mE2LHYrNin2KEg2KXYr9iu2KfZhCDZhdio2YTYuiDYp9mE2LPYrdioIiwiV2l0aGRyYXcubWluLmFtb3VudCI6Itin2YTYrdivINin2YTYo9iv2YbZiSDZhNmE2LPYrdioIiwiV2l0aGRyYXcucGF5LnBhc3N3b3JkIjoi2YPZhNmF2Kkg2YXYsdmI2LEg2KfZhNiv2YHYuSIsIldpdGhkcmF3LmVudGVyLnBheS5wYXNzd29yZCI6Itin2YTYsdis2KfYoSDYpdiv2K7Yp9mEINmD2YTZhdipINmF2LHZiNixINin2YTYr9mB2LkiLCJXaXRoZHJhdy5zdWJtaXQiOiLYqtij2YPZitivIiwiV2FsbGV0Lm5ldHdvcmsiOiLYp9mE2LTYqNmD2KkiLCJXYWxsZXQud2FsbGV0Ijoi2KfZhNmF2K3Zgdi42KkiLCJXYWxsZXQuZW50ZXIud2FsbGV0Ijoi2KfZhNix2KzYp9ihINil2K/Yrtin2YQg2KfZhNmF2K3Zgdi42KkiLCJXYWxsZXQucGF5bWVudCI6Itin2YTYr9mB2LkiLCJXYWxsZXQuZW50ZXIucGF5bWVudCI6Itin2YTYsdis2KfYoSDYpdiv2K7Yp9mEINin2YTYr9mB2LkiLCJXYWxsZXQuc3VibWl0Ijoi2KrYo9mD2YrYryIsIlBhc3N3b3JkLm9sZCI6ItmD2YTZhdipINin2YTZhdix2YjYsSDYp9mE2YLYr9mK2YXYqSIsIlBhc3N3b3JkLm9sZC5lbnRlciI6Itin2YTYsdis2KfYoSDYpdiv2K7Yp9mEINmD2YTZhdipINin2YTZhdix2YjYsSDYp9mE2YLYr9mK2YXYqSIsIlBhc3N3b3JkLm5ldyI6ItmD2YTZhdipINin2YTZhdix2YjYsSDYp9mE2KzYr9mK2K/YqSIsIlBhc3N3b3JkLm5ldy5lbnRlciI6Itin2YTYsdis2KfYoSDYpdiv2K7Yp9mEINmD2YTZhdipINin2YTZhdix2YjYsSDYp9mE2KzYr9mK2K/YqSIsIlBhc3N3b3JkLnN1Ym1pdCI6Itiq2KPZg9mK2K8iLCJQYXltZW50Lm9sZCI6ItmD2YTZhdipINin2YTZhdix2YjYsSDYp9mE2YLYr9mK2YXYqSIsIlBheW1lbnQub2xkLmVudGVyIjoi2KfZhNix2KzYp9ihINil2K/Yrtin2YQg2YPZhNmF2Kkg2KfZhNmF2LHZiNixINin2YTZgtiv2YrZhdipIiwiUGF5bWVudC5uZXciOiLZg9mE2YXYqSDYp9mE2YXYsdmI2LEg2KfZhNis2K/Zitiv2KkiLCJQYXltZW50Lm5ldy5lbnRlciI6Itin2YTYsdis2KfYoSDYpdiv2K7Yp9mEINmD2YTZhdipINin2YTZhdix2YjYsSDYp9mE2KzYr9mK2K/YqSIsIlBheW1lbnQuc3VibWl0Ijoi2KrYo9mD2YrYryIsIlJ1bGUudGl0bGUiOiLYp9mE2YLZiNin2LnYryIsIlJ1bGUudGV4dDEiOiLYqtmFINiq2LXZhdmK2YUg2K7Yp9iv2YUg2KrYrNin2LHYqSDZhdiq2KzYsSBUaWtUb2sg2YTZhdiz2KfYudiv2Kkg2KfZhNiq2KzYp9ixINi52YTZiSDYstmK2KfYr9ipINix2KTZitipINmF2YbYqtis2KfYqtmH2YXYjCDZiNio2KfZhNiq2KfZhNmKINiy2YrYp9iv2Kkg2YXYqNmK2LnYp9iqINin2YTZhdiq2KzYsS4iLCJSdWxlLnRleHQyIjoi2YbYs9iq2K7Yr9mFINmG2LjYp9mF2YvYpyDYotmE2YrZi9inINmC2KfYptmF2YvYpyDYudmE2Ykg2KfZhNiz2K3Yp9io2Kkg2YTZhdiz2KfYudiv2Kkg2YPZhCDZhdiq2KzYsSDZgdmKINiq2YjYstmK2Lkg2LfZhNio2KfYqiDYp9mE2YXZhtiq2KzYp9iqINmI2LbZhdin2YYg2KfZhNmF2LnYp9mF2YTYqSDYp9mE2LnYp9iv2YTYqSDZiNin2YTZhdiq2LPYp9mI2YrYqSDZhNmD2YQg2KrYp9is2LEuIiwiUnVsZS50ZXh0MyI6ItmK2YXZg9mGINmE2YjZg9mE2KfYoSDYp9mE2KrYrNin2LEg2KXZg9mF2KfZhCAxLTMg2KPZhti02LfYqSDZhNin2YTYqtmC2KfYtyDYp9mE2LfZhNio2KfYqiDZitmI2YXZitmL2KcuIiwiUnVsZS50ZXh0NCI6Itiq2LPYqtmH2K/ZgSDZg9mEINit2YXZhNipIDQwINi32YTYqNmL2Kcg2YTZhNmF2YbYqtisLiIsIlJ1bGUudGV4dDUiOiLYudmG2K8g2KfZhNin2YbYqtmH2KfYodiMINiz2YrYqtmFINmF2YPYp9mB2KPYqtmH2YUg2KjYp9mE2LnZhdmI2YTYp9iqINin2YTYqtmKINmK2YjZgdix2YfYpyDYp9mE2KrYp9is2LEuIiwiUnVsZS50ZXh0NiI6ItmK2KrYudmK2YYg2LnZhNmJINin2YTZhdmI2LjZgdmK2YYg2KXZg9mF2KfZhCDYo9mG2LTYt9ipINin2YTYt9mE2Kgg2YHZiiDYp9mE2YjZgtiqINin2YTZhdmG2KfYs9ioLiIsIlJ1bGUudGV4dDciOiLYpdiw2Kcg2YTZhSDYqtmD2KrZhdmEINmF2YfYp9mFINin2YTYt9mE2Kgg2KfZhNmF2K3Yr9iv2Kkg2YTZhNmF2YbYqtis2Iwg2YHZhNmGINiq2KrZhdmD2YYg2YXZhiDYs9it2Kgg2KfZhNij2YXZiNin2YQg2YjZhNmGINiq2KrZhdmD2YYg2YXZhiDYp9iz2KrZhNin2YUg2YXZg9in2YHYotiqINin2YTYudmF2YjZhNipLiIsIlJ1bGUudGV4dDgiOiLZhNmC2K8g2K7Yr9mF2YbYpyDYp9mE2KrYrNin2LEg2YTZhdiv2Kkg2LnYp9mF2YrZhi4iLCJSdWxlLnRleHQ5Ijoi2YfYsNinINmH2Ygg2KjZitim2Kkg2LnZhdmEINii2YXZhtipINmI2YXYs9iq2YLYsdipLiIsIlJ1bGUudGV4dDEwIjoi2YrZhdmD2YYg2YTZhNmF2YjYuNmB2YrZhiDYo9mGINmK2KPYqtmI2Kcg2YfZhtinINmD2YQg2YrZiNmFINmE2YTYudmF2YQg2YTYtdin2YTYrSDYp9mE2KrYrNin2LEg2KPYq9mG2KfYoSDYp9iz2KrYsdin2K3Yp9iq2YfZhS4iLCJSdWxlLnRleHQxMSI6Iti32KfZhNmF2Kcg2KfYqtio2LnYqiDZgtmI2KfYudivINi32YTYqCDYp9mE2YXZhtiq2KzYjCDYs9iq2YPZiNmGINmH2LDZhyDYr9iu2YQg2KvYp9io2Kog2YTZgy4iLCJBYm91dC50aXRsZSI6Iti52YbYpyIsIkFib3V0LnRleHQxIjoi2LnZhtinINmF2KrYrNixIFRpayBUb2sg2YfZiiDYtNix2YPYqSDYqtiz2YjZitmCINmG2KfZhdmK2KkuIiwiQWJvdXQudGV4dDIiOiLZhdmE2KrYstmF2YjZhiDYqNiq2YjYs9mK2Lkg2KXZitix2KfYr9in2Kog2LTYsdmD2KfYqiDYp9mE2LnZhdmE2KfYodiMINmK2LPYqtiu2K/ZhSDYp9mE2KrYs9mI2YrZgiDYp9mE2YbYp9mF2Yog2KfZhNio2YrYp9mG2KfYqiDZiNin2YTYo9iz2KfZhNmK2Kgg2KfZhNix2YLZhdmK2Kkg2YTYrNi52YQg2YbYqtin2KbYrCDYp9mE2KrYs9mI2YrZgiDZgtin2KjZhNipINmE2YTYqtmG2KjYpCDZiNmF2LnYuNmF2YfYpy4iLCJBYm91dC50ZXh0MyI6Itiv2Lkg2KrZg9in2YTZitmBINin2YTYqtiz2YjZitmCINin2YTYrtin2LXYqSDYqNmDINmE2YUg2KrYudivINiq2YbZgdmCINi52YTZiSDYrti32Kkg2LrZitixINmF2KrZiNmC2LnYqdiMINmI2KrZiNiz2YrYuSDYudin2KbYryDYp9mE2KfYs9iq2KvZhdin2LEg2YXYuSDYqtmD2KfZhNmK2YEg2K/ZhtmK2KcuINmK2LPZhditINmE2YMg2KfZhNij2LPZhNmI2Kgg2KfZhNiq2LPZiNmK2YLZiiDYp9mE2KzYr9mK2K8g2KjYtNix2YPYqtmDINio2YPYs9ixINin2YTYrdi12KfYsSDZiNin2YTZhtmF2Ygg2LbYryDYp9mE2LPZiNmCLiIsIkFib3V0LnRleHQ0Ijoi2YXYtNin2YPZhCDZitmF2YPZhiDYo9mGINiq2K3ZhNmH2Kcg2YXYqtis2LEgVGlrIFRvazog2YTYpyDZitmI2KzYryDYqtij2KvZitixINio2LnYryDYpdi32YTYp9mCINin2YTYqti32KjZitmC2Iwg2YjZh9mG2KfZgyDYudiv2K8g2YLZhNmK2YQg2KzYr9mL2Kcg2YXZhiDYp9mE2YXYs9iq2K7Yr9mF2YrZhiDYp9mE2LfYqNmK2LnZitmK2YYuIiwiQWJvdXQudGV4dDUiOiLYqti12YbZitmBINmF2YbYrtmB2LY6INmE2Kcg2KrZiNis2K8g2YPZhNmF2KfYqiDZhdmB2KrYp9it2YrYqSDZgdmKINin2YTZhdix2KrYqNipINin2YTYq9mE2KfYq9ipINin2YTYo9mI2YTZiSDZgdmKINin2YTYqti12YbZitmB2Iwg2YjZhNinINmK2YXZg9mGINmE2YTYudmF2YTYp9ihINin2YTZhdit2KrZhdmE2YrZhiDYp9mE2LnYq9mI2LEg2LnZhNmJINin2YTYqti32KjZitmCLiDYqti62LfZitipINmF2YbYrtmB2LbYqTog2YjYstmGINin2YTYqti32KjZitmCINin2YTZg9mE2Yog2YXZhtiu2YHYttiMINmF2YXYpyDZitik2K/ZiiDYpdmE2Ykg2KrYuti32YrYqSDZg9mE2YXYp9iqINmF2YHYqtin2K3ZitipINiz2YrYptipLiIsIkFib3V0LnRleHQ2Ijoi2KrZg9mE2YHYqSDYudin2YTZitipOiDYqtmD2KfZhNmK2YEg2YjYtti5INin2YTZg9mE2YXYp9iqINin2YTYsdim2YrYs9mK2Kkg2KfZhNmF2LLYp9mK2K/YqSDZhdix2KrZgdi52KkuIiwiU3RhcnRpbmcuYmFsYW5jZSI6Itin2YTYsdi12YrYryDYp9mE2K3Yp9mE2YoiLCJTdGFydGluZy5pbmNvbWUiOiLYp9mE2K/YrtmEINin2YTYpdis2YXYp9mE2YoiLCJTdGFydGluZy5vcmRlci50aXRsZSI6Itiq2YUg2KfZhNit2KzYsiEiLCJTdGFydGluZy5zdWJtaXQuYnV0dG9uIjoi2KfZhNmF2LfYp9io2YLYqSDYp9mE2KrZhNmC2KfYptmK2KkiLCJTdGFydGluZy5zdGVwcyI6Itin2YTYrti32YjYp9iqIiwiU3RhcnRpbmcuc3RlcHMxIjonMS4g2KfZhtmC2LEg2LnZhNmJINiy2LEgItin2YTZhdi32KfYqNmC2Kkg2KfZhNiq2YTZgtin2KbZitipIiDZiNin2KrYqNi5INin2YTYqti52YTZitmF2KfYqiDZhNil2YPZhdin2YQg2KfZhNmF2YfZhdipLicsIlN0YXJ0aW5nLnN0ZXBzMiI6IjIuINio2LnYryDYpdmD2YXYp9mEINin2YTZhdmH2YXYqdiMINmK2YXZg9mG2YMg2KrYs9mI2YrYqSDYp9mE2LnZhdmI2YTYqSDYpdmE2Ykg2KfZhNix2LXZitivLiIsIkFjY291bnQuaW5kZXgucGhvbmUiOiLYp9mE2YfYp9iq2YEiLCJBY2NvdW50LmluZGV4Lmludml0ZV9jb2RlIjoi2LHZhdiyINin2YTYr9i52YjYqSIsIkFjY291bnQuaW5kZXguYmFsYW5jZSI6Itin2YTYsdi12YrYryIsIkFjY291bnQuaW5kZXgucmVjaGFyZ2UiOiLYtNit2YYiLCJBY2NvdW50LmluZGV4LndpdGhkcmF3YWwiOiLYs9it2KgiLCJBY2NvdW50LmluZGV4LnNlcnZpY2VzIjoi2KfZhNiu2K/Zhdin2KoiLCJBY2NvdW50LmluZGV4LmRldGFpbGVkIjoi2KfZhNiq2YHYp9i12YrZhCIsIkFjY291bnQuaW5kZXgud2FsbGV0Ijoi2KfZhNmF2K3Zgdi42KkiLCJBY2NvdW50LmluZGV4LnBhc3N3b3JkIjoi2YPZhNmF2Kkg2KfZhNmF2LHZiNixIiwiQWNjb3VudC5pbmRleC5wYXltZW50Ijoi2KfZhNiv2YHYuSIsIkFjY291bnQuaW5kZXgucnVsZSI6Itin2YTZgtmI2KfYudivIiwiQWNjb3VudC5pbmRleC5hYm91dCI6Iti52YbYpyIsIkFjY291bnQuaW5kZXgubG9nb3V0Ijoi2KrYs9is2YrZhCDYp9mE2K7YsdmI2KwiLCJBY2NvdW50LmluZGV4Lm1lc3NhZ2UiOiLYsdiz2KfZhNipIiwiTG9naW4udGl0bGUiOiLYqtiz2KzZitmEINin2YTYr9iu2YjZhCIsIkxvZ2luLnRpcHMiOiLYp9mE2LHYrNin2KEg2KrYs9is2YrZhCDYp9mE2K/YrtmI2YQg2KXZhNmJINit2LPYp9io2YMiLCJMb2dpbi5lbnRlci5waG9uZSI6Itin2YTYsdis2KfYoSDYpdiv2K7Yp9mEINix2YLZhSDYp9mE2YfYp9iq2YEiLCJMb2dpbi5lbnRlci5wYXNzd29yZCI6Itin2YTYsdis2KfYoSDYpdiv2K7Yp9mEINmD2YTZhdipINin2YTZhdix2YjYsSIsIkxvZ2luLmZvcmdldCI6ItmG2LPZitiqINmD2YTZhdipINin2YTZhdix2YjYsdifIiwiTG9naW4ucmVnaXN0ZXIiOiLYs9is2YQg2KfZhNii2YYiLCJSZWdpc3Rlci50aXRsZSI6Itin2YTYqtiz2KzZitmEIiwiUmVnaXN0ZXIudGlwcyI6ItmH2YQg2YTYr9mK2YMg2K3Ys9in2Kgg2KjYp9mE2YHYudmE2J8iLCJSZWdpc3Rlci5lbnRlci5waG9uZSI6Itin2YTYsdis2KfYoSDYpdiv2K7Yp9mEINix2YLZhSDYp9mE2YfYp9iq2YEiLCJSZWdpc3Rlci5lbnRlci5wYXNzd29yZCI6Itin2YTYsdis2KfYoSDYpdiv2K7Yp9mEINmD2YTZhdipINin2YTZhdix2YjYsSIsIlJlZ2lzdGVyLmVudGVyLnBheS5wYXNzd29yZCI6Itin2YTYsdis2KfYoSDYpdiv2K7Yp9mEINmD2YTZhdipINin2YTZhdix2YjYsSDYp9mE2K/Zgdi52YrYqSDYp9mE2YXZg9mI2YbYqSDZhdmGIDYg2KPYsdmC2KfZhSIsIlJlZ2lzdGVyLmVudGVyLmludml0ZV9jb2RlIjoi2KfZhNix2KzYp9ihINil2K/Yrtin2YQg2LHZhdiyINin2YTYr9i52YjYqSIsIlJlZ2lzdGVyLnJlYWQiOiLYp9mC2LHYoyDZiNmI2KfZgdmCIiwiUmVnaXN0ZXIucHJpdmFjeSI6Itin2KrZgdin2YLZitipINin2YTYrti12YjYtdmK2KkiLCJSZWdpc3Rlci5hZ3JlZSI6Itin2YTYsdis2KfYoSDZgtix2KfYodipINmI2KfZhNmF2YjYp9mB2YLYqSDYudmE2Ykg2KfYqtmB2KfZgtmK2Kkg2KfZhNiu2LXZiNi12YrYqSJ9fSxlNDg3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bigiN2E4MiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmRlZmF1bHQ9dm9pZCAwO2UuZGVmYXVsdD17bmF2OlsiSG9tZSIsIlJlY29yZCIsIlN0YXJ0IiwiU2VydmljZSIsIkFjY291bnQiXSxyZWNvcmRzX25hdjpbIkFsbGUiLCJTZW5kZW4iLCJBYmdlc2NobG9zc2VuIiwiRWluZnJpZXJlbiJdLGJpbGxzX25hdjpbImFsbCIsImluY29tZSIsImV4cGVuc2UiXSwiQmFuay5hY2NvdW50IjoiS29udG8iLCJCYW5rLmVudGVyLmFjY291bnQiOiJCaXR0ZSBLb250byBlaW5nZWJlbiIsIkJhbmsudXNlcm5hbWUiOiJCZW51dHplcm5hbWUiLCJCYW5rLmVudGVyLnVzZXJuYW1lIjoiQml0dGUgQmVudXR6ZXJuYW1lbiBlaW5nZWJlbiIsIkJhbmsudHlwZSI6IkJpbGR0eXAiLCJCYW5rLmVudGVyLnR5cGUiOiJCaXR0ZSBCaWxkdHlwIGF1c3fDpGhsZW4iLCJCYW5rLmNwZiI6IkNwZiIsIkJhbmsuZW50ZXIuY3BmIjoiQml0dGUgQ3BmIGVpbmdlYmVuIiwiQmFuay5zdWJtaXQiOiJCZXN0w6R0aWdlbiIsIkJhbmsuYmluZC5iYW5rIjoiQml0dGUgSWhyZSBCYW5rIGJpbmRlbiIsIkNvbW1vbi5sb2FkaW5nIjoiV2lyZCBnZWxhZGVuLi4uIiwiQ29tbW9uLm5vX2RhdGEiOiJLZWluIEVpbnRyYWciLCJDb21tb24uY29weSI6IktvcGllcmVuIiwiQ29tbW9uLnNpZ24iOiJaZWljaGVuIiwiQ29tbW9uLmNyZWRpdF9zY29yZSI6IktyZWRpdC1TY29yZSIsIkluZGV4LmNvbW1vZGl0aWVzIjoiV2FyZW4iLCJJbmRleC5hYm91dCI6IsOcYmVyIHVucyIsIkluZGV4LmNvbXBhbnkiOiJHcm93dGggTWFya2V0aW5nIENvbXBhbnkiLCJJbmRleC5pbnRyb2R1Y3Rpb24iOiJLbGlja2VuIFNpZSBoaWVyLCB1bSBkaWUgRWluZsO8aHJ1bmcgYW56dXplaWdlbiIsIkluZGV4LmNvbW1pc3Npb24iOiJQcm92aXNpb24iLCJJbmRleC5nZXQiOiJQcm92aXNpb24gZXJoYWx0ZW4iLCJPcmRlci50b3RhbF92YWx1ZSI6Ikdlc2FtdHdlcnQiLCJPcmRlci5jb21taXNzaW9uIjoiUHJvdmlzaW9uIiwiT3JkZXIuc3VibWl0IjoiU2VuZGVuIiwiT3JkZXIudGltZSI6IkJlc3RlbGx6ZWl0IiwiT3JkZXIubnVtYmVyIjoiQmVzdGVsbG51bW1lciIsIk9yZGVyLnRvdGFsIjoiQmVzdGVsbHN1bW1lIiwiT3JkZXIuZXhwZWN0ZWQiOiJFcndhcnRldGUgUmVuZGl0ZSIsIlJlY2hhcmdlLmJhbGFuY2UiOiJHdXRoYWJlbiIsIlJlY2hhcmdlLmFkZHJlc3MiOiJBdWZsYWRlYWRyZXNzZSIsIlJlY2hhcmdlLmFtb3VudCI6IkF1ZmxhZGViZXRyYWciLCJSZWNoYXJnZS5lbnRlci5hbW91bnQiOiJCaXR0ZSBnZWJlbiBTaWUgZGVuIEF1ZmxhZGViZXRyYWcgZWluIiwiUmVjaGFyZ2UudXBsb2FkIjoiWmFobHVuZ3MtU2NyZWVuc2hvdCBob2NobGFkZW4iLCJSZWNoYXJnZS5wbGVhc2UiOiJCaXR0ZSBaYWhsdW5ncy1TY3JlZW5zaG90IGhvY2hsYWRlbiIsIlJlY2hhcmdlLnVwbG9hZDEiOiJIb2NobGFkZW4iLCJSZWNoYXJnZS5zdWJtaXQiOiJJY2ggaGFiZSBkaWUgQXVmbGFkdW5nIGFiZ2VzY2hsb3NzZW4iLCJSZWNoYXJnZS50aXBzIjoiVGlwcHMiLCJSZWNoYXJnZS50aXBzMSI6IjEuIEJpdHRlIGtvcGllcmVuIFNpZSBkaWUgVFJDLTIwLVdhbGxldC1BZHJlc3NlIGbDvHIgZGllIFphaGx1bmcgaW4gZGllc2VtIEVpbmthdWZzemVudHJ1bS4iLCJSZWNoYXJnZS50aXBzMiI6IjIuIEbDvGhyZW4gU2llIGRpZSDDnGJlcndlaXN1bmcgbmFjaCBkZXIgw5xiZXJwcsO8ZnVuZyBkdXJjaC4gV2VubiBpY2ggZWluZW4gRmVobGVyIG1hY2hlLCB0csOkZ3QgZGllc2VzIEVpbmthdWZzemVudHJ1bSBJaHJlbiBWZXJsdXN0IG5pY2h0LiIsIlJlY2hhcmdlLnRpcHMzIjoiMy4gV2VubiBJaHJlIFphaGx1bmcgZXJmb2xncmVpY2ggd2FyLCBsYWRlbiBTaWUgYml0dGUgZGVuIFphaGx1bmdzYmVsZWcgaG9jaC4iLCJSZWNoYXJnZS50aXBzNCI6IjQuIFdlbm4gU2llIGRhbWl0IGZlcnRpZyBzaW5kLCBrbGlja2VuIFNpZSBhdWYgOiBJY2ggaGFiZSBkaWUgWmFobHVuZyBhYmdlc2NobG9zc2VuLiIsIlJlY2hhcmdlLnRpcHM1IjoiNS4gV2VubiBTaWUgYXVmIFByb2JsZW1lIHN0b8OfZW4sIHdlbmRlbiBTaWUgc2ljaCByZWNodHplaXRpZyBhbiB1bnNlcmVuIE9ubGluZS1LdW5kZW5kaWVuc3QsIGRhbWl0IHdpciBJaG5lbiBiZWkgZGVyIEzDtnN1bmcgaGVsZmVuIGvDtm5uZW4uIiwiUmVjaGFyZ2Uuc2VsZWN0IjoiQXVzd2FobCBkZXIgQXVmbGFkZW1ldGhvZGUiLCJXaXRoZHJhdy5iaW5kLmFkZHJlc3MiOiJCaXR0ZSBiaW5kZW4gU2llIElocmUgV2FsbGV0LUFkcmVzc2UiLCJXaXRoZHJhdy5iYWxhbmNlIjoiR3V0aGFiZW4iLCJXaXRoZHJhdy5hbW91bnQiOiJBdXN6YWhsdW5nc2JldHJhZyIsIldpdGhkcmF3LmVudGVyLmFtb3VudCI6IkJpdHRlIGdlYmVuIFNpZSBkZW4gQXVzemFobHVuZ3NiZXRyYWcgZWluIiwiV2l0aGRyYXcubWluLmFtb3VudCI6Ik1pbmRlc3RhdXN6YWhsdW5nc2JldHJhZyIsIldpdGhkcmF3LnBheS5wYXNzd29yZCI6IlphaGx1bmdzcGFzc3dvcnQiLCJXaXRoZHJhdy5lbnRlci5wYXkucGFzc3dvcmQiOiJCaXR0ZSBnZWJlbiBTaWUgZGFzIFphaGx1bmdzcGFzc3dvcnQgZWluIiwiV2l0aGRyYXcuc3VibWl0IjoiQmVzdMOkdGlnZW4iLCJXYWxsZXQubmV0d29yayI6Ik5ldHp3ZXJrIiwiV2FsbGV0LndhbGxldCI6IldhbGxldCIsIldhbGxldC5lbnRlci53YWxsZXQiOiJCaXR0ZSBnZWJlbiBTaWUgV2FsbGV0IGVpbiIsIldhbGxldC5wYXltZW50IjoiWmFobHVuZyIsIldhbGxldC5lbnRlci5wYXltZW50IjoiQml0dGUgZ2ViZW4gU2llIGRpZSBaYWhsdW5nIGVpbiIsIldhbGxldC5zdWJtaXQiOiJCZXN0w6R0aWdlbiIsIlBhc3N3b3JkLm9sZCI6IkFsdGVzIFBhc3N3b3J0IiwiUGFzc3dvcmQub2xkLmVudGVyIjoiQml0dGUgZ2ViZW4gU2llIGRhcyBhbHRlIFBhc3N3b3J0IGVpbiIsIlBhc3N3b3JkLm5ldyI6Ik5ldWVzIFBhc3N3b3J0IiwiUGFzc3dvcmQubmV3LmVudGVyIjoiQml0dGUgZ2ViZW4gU2llIGRhcyBuZXVlIFBhc3N3b3J0IGVpbiIsIlBhc3N3b3JkLnN1Ym1pdCI6IkJlc3TDpHRpZ2VuIiwiUGF5bWVudC5vbGQiOiJBbHRlcyBQYXNzd29ydCIsIlBheW1lbnQub2xkLmVudGVyIjoiQml0dGUgZ2ViZW4gU2llIGRhcyBhbHRlIFBhc3N3b3J0IGVpbiIsIlBheW1lbnQubmV3IjoiTmV1ZXMgUGFzc3dvcnQiLCJQYXltZW50Lm5ldy5lbnRlciI6IkJpdHRlIGdlYmVuIFNpZSBkYXMgbmV1ZSBQYXNzd29ydCBlaW4iLCJQYXltZW50LnN1Ym1pdCI6IkJlc3TDpHRpZ2VuIiwiUnVsZS50aXRsZSI6IlJlZ2VsIiwiUnVsZS50ZXh0MSI6IkRlciBUaWtUb2stU2hvcC1Iw6RuZGxlcnNlcnZlciB3dXJkZSBlbnR3aWNrZWx0LCB1bSBIw6RuZGxlcm4gZGFiZWkgenUgaGVsZmVuLCBkaWUgU2ljaHRiYXJrZWl0IGlocmVyIFByb2R1a3RlIHp1IGVyaMO2aGVuIHVuZCBzbyBkZW4gTGFkZW51bXNhdHogenUgc3RlaWdlcm4uIiwiUnVsZS50ZXh0MiI6IldpciB2ZXJ3ZW5kZW4gZWluIGF1dG9tYXRpc2llcnRlcyBDbG91ZC1iYXNpZXJ0ZXMgU3lzdGVtLCB1bSBqZWRlbSBMYWRlbiBiZWkgZGVyIFZlcnRlaWx1bmcgdm9uIFByb2R1a3RiZXN0ZWxsdW5nZW4genUgaGVsZmVuIHVuZCBlaW5lIGZhaXJlIHVuZCBnZXJlY2h0ZSBCZWhhbmRsdW5nIGplZGVzIEjDpG5kbGVycyBzaWNoZXJ6dXN0ZWxsZW4uIiwiUnVsZS50ZXh0MyI6IkjDpG5kbGVyYWdlbnRlbiBrw7ZubmVuIHTDpGdsaWNoIDEtMyBBa3Rpdml0w6R0ZW4genVyIEF1ZnRyYWdzZXJmYXNzdW5nIGR1cmNoZsO8aHJlbi4iLCJSdWxlLnRleHQ0IjoiSmVkZSBLYW1wYWduZSB6aWVsdCBhdWYgNDAgUHJvZHVrdGJlc3RlbGx1bmdlbiBhYi4iLCJSdWxlLnRleHQ1IjoiTmFjaCBBYnNjaGx1c3Mgd2VyZGVuIHNpZSBtaXQgUHJvdmlzaW9uZW4gYmVsb2hudCwgZGllIHZvbSBIw6RuZGxlciBiZXJlaXRnZXN0ZWxsdCB3ZXJkZW4uIiwiUnVsZS50ZXh0NiI6Ik1pdGFyYmVpdGVyIHNpbmQgdmVycGZsaWNodGV0LCBCZXN0ZWxsYWt0aXZpdMOkdGVuIHJlY2h0emVpdGlnIGFienVzY2hsaWXDn2VuLiIsIlJ1bGUudGV4dDciOiJXZW5uIFNpZSBkaWUgYW5nZWdlYmVuZW4gUHJvZHVrdGJlc3RlbGxhdWZnYWJlbiBuaWNodCBhYnNjaGxpZcOfZW4sIGvDtm5uZW4gU2llIGtlaW4gR2VsZCBhYmhlYmVuIHVuZCBrZWluZSBQcm92aXNpb25zcHLDpG1pZW4gZXJoYWx0ZW4uIiwiUnVsZS50ZXh0OCI6IldpciBiZWRpZW5lbiBIw6RuZGxlciBzZWl0IHp3ZWkgSmFocmVuLiIsIlJ1bGUudGV4dDkiOiJEaWVzIGlzdCBlaW5lIHNpY2hlcmUgdW5kIHN0YWJpbGUgQXJiZWl0c3VtZ2VidW5nLiIsIlJ1bGUudGV4dDEwIjoiTWl0YXJiZWl0ZXIga8O2bm5lbiBqZWRlbiBUYWcgaGllcmhlciBrb21tZW4sIHVtIHfDpGhyZW5kIGlocmVyIFBhdXNlbiBmw7xyIEjDpG5kbGVyIHp1IGFyYmVpdGVuLiIsIlJ1bGUudGV4dDExIjoiU29sYW5nZSBTaWUgZGllIFByb2R1a3RiZXN0ZWxscmVnZWxuIGVpbmhhbHRlbiwgd2lyZCBkaWVzIGVpbiBzdGFiaWxlcyBFaW5rb21tZW4gZsO8ciBTaWUgc2Vpbi4iLCJBYm91dC50aXRsZSI6IsOcYmVyIHVucyIsIkFib3V0LnRleHQxIjoiw5xiZXIgdW5zIFRpayBUb2sgU2hvcCBpc3QgZWluIFdhY2hzdHVtc21hcmtldGluZ3VudGVybmVobWVuLiIsIkFib3V0LnRleHQyIjoiRGFzIFdhY2hzdHVtc21hcmtldGluZyBoYXQgc2ljaCBkZXIgU3RlaWdlcnVuZyBkZXMgVW1zYXR6ZXMgdm9uIEt1bmRlbnVudGVybmVobWVuIHZlcnNjaHJpZWJlbiB1bmQgdmVyd2VuZGV0IERhdGVuIHVuZCBkaWdpdGFsZSBNZXRob2RlbiwgdW0gTWFya2V0aW5nZXJnZWJuaXNzZSB2b3JoZXJzZWhiYXIgdW5kIHp1IG1heGltaWVyZW4uIiwiQWJvdXQudGV4dDMiOiJHZWJlbiBTaWUgSWhyZSBNYXJrZXRpbmdhdXNnYWJlbiBuaWNodCBsw6RuZ2VyIGbDvHIgZWluZW4gdW52b3JoZXJzZWhiYXJlbiBQbGFuIGF1cyB1bmQgc3RlaWdlcm4gU2llIGRpZSBLYXBpdGFscmVuZGl0ZSBtaXQgbWluaW1hbGVuIEF1c2dhYmVuLiBEaWUgbmV1ZSBNYXJrZXRpbmdtZXRob2RlIGVybcO2Z2xpY2h0IGVzIElocmVtIFVudGVybmVobWVuLCBkaWUgQmVsYWdlcnVuZyB6dSBkdXJjaGJyZWNoZW4gdW5kIGdlZ2VuIGRlbiBNYXJrdCB6dSB3YWNoc2VuLiIsIkFib3V0LnRleHQ0IjoiUHJvYmxlbWUsIGRpZSBUaWsgVG9rIFNob3AgbMO2c2VuIGthbm4gOiBEaWUgQVBQIGhhdCBuYWNoIGRlbSBTdGFydCBrZWluZSBXaXJrdW5nIHVuZCBlcyBnaWJ0IG51ciBzZWhyIHdlbmlnZSBuYXTDvHJsaWNoZSBCZW51dHplci4iLCJBYm91dC50ZXh0NSI6Ik5pZWRyaWdlcyBSYW5raW5nIDogRXMgZ2lidCBrZWluZSBUb3AtMy1LZXl3b3JkcyBpbSBSYW5raW5nIHVuZCBwb3RlbnppZWxsZSBLdW5kZW4ga8O2bm5lbiBkaWUgQVBQIG5pY2h0IGZpbmRlbi4gR2VyaW5nZSBBYmRlY2t1bmcgOiBEYXMgR2VzYW10Z2V3aWNodCBkZXIgQVBQIGlzdCBnZXJpbmcsIHdhcyB6dSBlaW5lciBzY2hsZWNodGVuIEtleXdvcmQtQWJkZWNrdW5nIGbDvGhydC4iLCJBYm91dC50ZXh0NiI6IkhvaGUgS29zdGVuIDogRGllIEtvc3RlbiBmw7xyIGRhcyBQbGF0emllcmVuIHZvbiBHZWJvdHMtS2V5d29yZHMgc2luZCBob2NoLiIsIlN0YXJ0aW5nLmJhbGFuY2UiOiJBa3R1ZWxsZXIgS29udG9zdGFuZCIsIlN0YXJ0aW5nLmluY29tZSI6Ikdlc2FtdGUgRWlubmFobWVuIiwiU3RhcnRpbmcub3JkZXIudGl0bGUiOiJCdWNodW5nIGFiZ2VzY2hsb3NzZW4hIiwiU3RhcnRpbmcuc3VibWl0LmJ1dHRvbiI6IkF1dG9tYXRpc2NoZXIgQWJnbGVpY2giLCJTdGFydGluZy5zdGVwcyI6IkRpZSBTY2hyaXR0ZSIsIlN0YXJ0aW5nLnN0ZXBzMSI6IjEuIEtsaWNrZW4gU2llIGF1ZiBkaWUgU2NoYWx0ZmzDpGNoZSBBdXRvbWF0aXNjaGVyIEFiZ2xlaWNoIHVuZCBmb2xnZW4gU2llIGRlbiBBbndlaXN1bmdlbiwgdW0gZGllIEF1ZmdhYmUgYWJ6dXNjaGxpZcOfZW4uIiwiU3RhcnRpbmcuc3RlcHMyIjoiMi4gTmFjaCBBYnNjaGx1c3MgZGVyIEF1ZmdhYmUga8O2bm5lbiBTaWUgZGllIFByb3Zpc2lvbiBhdWYgZGFzIEd1dGhhYmVuIGFicmVjaG5lbi4iLCJBY2NvdW50LmluZGV4LnBob25lIjoiVGVsZWZvbiIsIkFjY291bnQuaW5kZXguaW52aXRlX2NvZGUiOiJFaW5sYWR1bmdzY29kZSIsIkFjY291bnQuaW5kZXguYmFsYW5jZSI6Ikd1dGhhYmVuIiwiQWNjb3VudC5pbmRleC5yZWNoYXJnZSI6IkF1ZmxhZGVuIiwiQWNjb3VudC5pbmRleC53aXRoZHJhd2FsIjoiQWJoZWJ1bmciLCJBY2NvdW50LmluZGV4LnNlcnZpY2VzIjoiRGllbnN0ZSIsIkFjY291bnQuaW5kZXguZGV0YWlsZWQiOiJEZXRhaWxsaWVydCIsIkFjY291bnQuaW5kZXgud2FsbGV0IjoiR2VsZGLDtnJzZSIsIkFjY291bnQuaW5kZXgucGFzc3dvcmQiOiJQYXNzd29ydCIsIkFjY291bnQuaW5kZXgucGF5bWVudCI6IlphaGx1bmciLCJBY2NvdW50LmluZGV4LnJ1bGUiOiJSZWdlbG4iLCJBY2NvdW50LmluZGV4LmFib3V0Ijoiw5xiZXIgdW5zIiwiQWNjb3VudC5pbmRleC5sb2dvdXQiOiJBYm1lbGRlbiIsIkFjY291bnQuaW5kZXgubWVzc2FnZSI6Ik5hY2hyaWNodCIsIkxvZ2luLnRpdGxlIjoiQW5tZWxkZW4iLCJMb2dpbi50aXBzIjoiQml0dGUgbWVsZGVuIFNpZSBzaWNoIGJlaSBJaHJlbSBLb250byBhbiIsIkxvZ2luLmVudGVyLnBob25lIjoiQml0dGUgZ2ViZW4gU2llIElocmUgVGVsZWZvbm51bW1lciBlaW4iLCJMb2dpbi5lbnRlci5wYXNzd29yZCI6IkJpdHRlIGdlYmVuIFNpZSBJaHIgUGFzc3dvcnQgZWluIiwiTG9naW4uZm9yZ2V0IjoiUGFzc3dvcnQgdmVyZ2Vzc2VuPyIsIkxvZ2luLnJlZ2lzdGVyIjoiSmV0enQgcmVnaXN0cmllcmVuIiwiUmVnaXN0ZXIudGl0bGUiOiJSZWdpc3RyaWVyZW4iLCJSZWdpc3Rlci50aXBzIjoiU2llIGhhYmVuIGJlcmVpdHMgZWluIEtvbnRvPyIsIlJlZ2lzdGVyLmVudGVyLnBob25lIjoiQml0dGUgZ2ViZW4gU2llIElocmUgVGVsZWZvbm51bW1lciBlaW4iLCJSZWdpc3Rlci5lbnRlci5wYXNzd29yZCI6IkJpdHRlIGdlYmVuIFNpZSBJaHIgUGFzc3dvcnQgZWluIiwiUmVnaXN0ZXIuZW50ZXIucGF5LnBhc3N3b3JkIjoiQml0dGUgZ2ViZW4gU2llIGRhcyA2LXN0ZWxsaWdlIFphaGx1bmdzcGFzc3dvcnQgZWluIiwiUmVnaXN0ZXIuZW50ZXIuaW52aXRlX2NvZGUiOiJCaXR0ZSBnZWJlbiBTaWUgZGVuIEVpbmxhZHVuZ3Njb2RlIGVpbiIsIlJlZ2lzdGVyLnJlYWQiOiJMZXNlbiB1bmQgenVzdGltbWVuIiwiUmVnaXN0ZXIucHJpdmFjeSI6IkRhdGVuc2NodXR6dmVyZWluYmFydW5nIiwiUmVnaXN0ZXIuYWdyZWUiOiJCaXR0ZSBsZXNlbiB1bmQgenVzdGltbWVuIn19LGU0YjI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDA7ZS5kZWZhdWx0PXtuYXY6WyLQlNC+0LzQvtC5Iiwi0JfQsNC/0LjRgdC4Iiwi0JfQsNC/0YPRgdC6Iiwi0KHQtdGA0LLQuNGBIiwi0KPRh9C10YLQvdCw0Y8g0LfQsNC/0LjRgdGMIl0scmVjb3Jkc19uYXY6WyLQktGB0LUiLCLQntGC0L/RgNCw0LLQutCwIiwi0JfQsNCy0LXRgNGI0LXQvdC+Iiwi0JfQsNC80L7RgNC+0LbQtdC90L4iXSxiaWxsc19uYXY6WyLQktGB0LUiLCLQlNC+0YXQvtC00YsiLCLQoNCw0YHRhdC+0LTRiyJdLCJCYW5rLmFjY291bnQiOiLQodGH0LXRgiIsIkJhbmsuZW50ZXIuYWNjb3VudCI6ItCf0L7QttCw0LvRg9C50YHRgtCwLCDQstCy0LXQtNC40YLQtSDRgdGH0LXRgiIsIkJhbmsudXNlcm5hbWUiOiLQmNC80Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPIiwiQmFuay5lbnRlci51c2VybmFtZSI6ItCf0L7QttCw0LvRg9C50YHRgtCwLCDQstCy0LXQtNC40YLQtSDQuNC80Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPIiwiQmFuay50eXBlIjoi0KLQuNC/IFBpeCIsIkJhbmsuZW50ZXIudHlwZSI6ItCf0L7QttCw0LvRg9C50YHRgtCwLCDQstGL0LHQtdGA0LjRgtC1INGC0LjQvyBQaXgiLCJCYW5rLmNwZiI6IkNwZiIsIkJhbmsuZW50ZXIuY3BmIjoi0J/QvtC20LDQu9GD0LnRgdGC0LAsINCy0LLQtdC00LjRgtC1IGNwZiIsIkJhbmsuc3VibWl0Ijoi0J/QvtC00YLQstC10YDQtNC40YLRjCIsIkJhbmsuYmluZC5iYW5rIjoi0J/QvtC20LDQu9GD0LnRgdGC0LAsINC/0YDQuNCy0Y/QttC40YLQtSDRgdCy0L7QuSDQsdCw0L3QuiIsIkNvbW1vbi5sb2FkaW5nIjoi0JfQsNCz0YDRg9C30LrQsC4uLiIsIkNvbW1vbi5ub19kYXRhIjoi0J3QtdGCINC30LDQv9C40YHQuCIsIkNvbW1vbi5jb3B5Ijoi0JrQvtC/0LjRgNC+0LLQsNGC0YwiLCLQntCx0YnQuNC5LtC30L3QsNC6Ijoi0JfQvdCw0LoiLCJDb21tb24uY3JlZGl0X3Njb3JlIjoi0JrRgNC10LTQuNGC0L3Ri9C5INGA0LXQudGC0LjQvdCzIiwiSW5kZXguY29tbW9kaXRpZXMiOiLQotC+0LLQsNGA0YsiLCJJbmRleC5hYm91dCI6ItCeINC90LDRgSIsIkluZGV4LmNvbXBhbnkiOiLQnNCw0YDQutC10YLQuNC90LPQvtCy0LDRjyDQutC+0LzQv9Cw0L3QuNGPINGA0L7RgdGC0LAiLCJJbmRleC5pbnRyb2R1Y3Rpb24iOiLQndCw0LbQvNC40YLQtSwg0YfRgtC+0LHRiyDQv9GA0L7RgdC80L7RgtGA0LXRgtGMINCy0LLQtdC00LXQvdC40LUiLCJJbmRleC5jb21taXNzaW9uIjoi0JrQvtC80LjRgdGB0LjRjyIsIkluZGV4LmdldCI6ItCf0L7Qu9GD0YfQuNGC0Ywg0LrQvtC80LjRgdGB0LjRjiIsIk9yZGVyLnRvdGFsX3ZhbHVlIjoi0J7QsdGJ0LDRjyDRgdGC0L7QuNC80L7RgdGC0YwiLCJPcmRlci5jb21taXNzaW9uIjoi0JrQvtC80LjRgdGB0LjRjyIsIk9yZGVyLnN1Ym1pdCI6ItCf0YDQtdC00YHRgtCw0LLQu9GP0YLRjCDQvdCwINGA0LDRgdGB0LzQvtGC0YDQtdC90LjQtSIsIk9yZGVyLnRpbWUiOiLQktGA0LXQvNGPINC30LDQutCw0LfQsCIsIk9yZGVyLm51bWJlciI6ItCd0L7QvNC10YAg0LfQsNC60LDQt9CwIiwiT3JkZXIudG90YWwiOiLQktC10YHRjCDQt9Cw0LrQsNC3IiwiT3JkZXIuZXhwZWN0ZWQiOiLQntC20LjQtNCw0LXQvNC+0LUg0LLQvtC30LLRgNCw0YnQtdC90LjQtSIsIlJlY2hhcmdlLmJhbGFuY2UiOiLQkdCw0LvQsNC90YEiLCJSZWNoYXJnZS5hZGRyZXNzIjoi0JDQtNGA0LXRgSDQv9C+0L/QvtC70L3QtdC90LjRjyDRgdGH0LXRgtCwIiwiUmVjaGFyZ2UuYW1vdW50Ijoi0KHRg9C80LzQsCDQv9C+0L/QvtC70L3QtdC90LjRjyIsIlJlY2hhcmdlLmVudGVyLmFtb3VudCI6ItCf0L7QttCw0LvRg9C50YHRgtCwLCDQstCy0LXQtNC40YLQtSDRgdGD0LzQvNGDINC/0L7Qv9C+0LvQvdC10L3QuNGPIiwiUmVjaGFyZ2UudXBsb2FkIjoi0JfQsNCz0YDRg9C30LjRgtGMINGB0LrRgNC40L3RiNC+0YIg0L/Qu9Cw0YLQtdC20LAiLCJSZWNoYXJnZS5wbGVhc2UiOiLQn9C+0LbQsNC70YPQudGB0YLQsCwg0LfQsNCz0YDRg9C30LjRgtC1INGB0LrRgNC40L0g0L/Qu9Cw0YLQtdC20LAiLCJSZWNoYXJnZS51cGxvYWQxIjoi0JfQsNCz0YDRg9C30LjRgtGMIiwiUmVjaGFyZ2Uuc3VibWl0Ijoi0K8g0LfQsNCy0LXRgNGI0LjQuyDQv9C+0L/QvtC70L3QtdC90LjQtSIsIlJlY2hhcmdlLnRpcHMiOiLQodC+0LLQtdGC0YsiLCJSZWNoYXJnZS50aXBzMSI6IjEuINCh0LrQvtC/0LjRgNGD0LnRgtC1INCw0LTRgNC10YEg0LrQvtGI0LXQu9GM0LrQsCBUUkMtMjAg0LTQu9GPINC+0L/Qu9Cw0YLRiyDQsiDRjdGC0L7QvCDRgtC+0YDQs9C+0LLQvtC8INGG0LXQvdGC0YDQtS4iLCJSZWNoYXJnZS50aXBzMiI6IjIuINCe0YHRg9GJ0LXRgdGC0LLQuNGC0LUg0L/QtdGA0LXQstC+0LQg0L/QvtGB0LvQtSDQv9GA0L7QstC10YDQutC4LiDQldGB0LvQuCDRjyDQtNC+0L/Rg9GJ0YMg0L7RiNC40LHQutGDLCDRjdGC0L7RgiDRgtC+0YDQs9C+0LLRi9C5INGG0LXQvdGC0YAg0L3QtSDQv9C+0L3QtdGB0LXRgiDQstCw0YjQuNGFINC/0L7RgtC10YDRjC4iLCJSZWNoYXJnZS50aXBzMyI6IjMuINCa0L7Qs9C00LAg0LLQsNGIINC/0LvQsNGC0LXQtiDQsdGD0LTQtdGCINGD0YHQv9C10YjQvdGL0LwsINC30LDQs9GA0YPQt9C40YLQtSDQv9C70LDRgtC10LbQvdGL0Lkg0LLQsNGD0YfQtdGALiIsIlJlY2hhcmdlLnRpcHM0IjoiNC4g0JrQvtCz0LTQsCDQstGLINC30LDQutC+0L3Rh9C40YLQtSDRgSDRjdGC0LjQvCwg0L3QsNC20LzQuNGC0LUgOiDQn9C70LDRgtC10LYg0LfQsNCy0LXRgNGI0LXQvS4iLCJSZWNoYXJnZS50aXBzNSI6IjUuINCV0YHQu9C4INGDINCy0LDRgSDQstC+0LfQvdC40LrQvdGD0YIg0LrQsNC60LjQtS3Qu9C40LHQviDQv9GA0L7QsdC70LXQvNGLLCDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdC+INCy0L7QstGA0LXQvNGPINGB0LLRj9C20LjRgtC10YHRjCDRgSDQvdCw0YjQtdC5INC+0L3Qu9Cw0LnQvS3RgdC70YPQttCx0L7QuSDQv9C+0LTQtNC10YDQttC60Lgg0LrQu9C40LXQvdGC0L7Qsiwg0YfRgtC+0LHRiyDQv9C+0LzQvtGH0Ywg0LLQsNC8INC40YUg0YDQtdGI0LjRgtGMLiIsIlJlY2hhcmdlLnNlbGVjdCI6ItCS0YvQsdC+0YAg0LzQtdGC0L7QtNCwINC/0L7Qv9C+0LvQvdC10L3QuNGPIiwiV2l0aGRyYXcuYmluZC5hZGRyZXNzIjoi0J/QvtC20LDQu9GD0LnRgdGC0LAsINC/0YDQuNCy0Y/QttC40YLQtSDQsNC00YDQtdGBINGB0LLQvtC10LPQviDQutC+0YjQtdC70YzQutCwIiwiV2l0aGRyYXcuYmFsYW5jZSI6ItCR0LDQu9Cw0L3RgSIsIldpdGhkcmF3LmFtb3VudCI6ItCh0YPQvNC80LAg0LLRi9Cy0L7QtNCwIiwiV2l0aGRyYXcuZW50ZXIuYW1vdW50Ijoi0J/QvtC20LDQu9GD0LnRgdGC0LAsINCy0LLQtdC00LjRgtC1INGB0YPQvNC80YMg0LLRi9Cy0L7QtNCwIiwiV2l0aGRyYXcubWluLmFtb3VudCI6ItCc0LjQvdC40LzQsNC70YzQvdCw0Y8g0YHRg9C80LzQsCDQstGL0LLQvtC00LAiLCJXaXRoZHJhdy5wYXkucGFzc3dvcmQiOiLQn9Cw0YDQvtC70Ywg0L/Qu9Cw0YLQtdC20LAiLCJXaXRoZHJhdy5lbnRlci5wYXkucGFzc3dvcmQiOiLQn9C+0LbQsNC70YPQudGB0YLQsCwg0LLQstC10LTQuNGC0LUg0L/Qu9Cw0YLQtdC20L3Ri9C5INC/0LDRgNC+0LvRjCIsIldpdGhkcmF3LnN1Ym1pdCI6ItCf0L7QtNGC0LLQtdGA0LbQtNCw0YLRjCIsIldhbGxldC5uZXR3b3JrIjoi0KHQtdGC0YwiLCJXYWxsZXQud2FsbGV0Ijoi0JrQvtGI0LXQu9C10LoiLCJXYWxsZXQuZW50ZXIud2FsbGV0Ijoi0J/QvtC20LDQu9GD0LnRgdGC0LAsINCy0LLQtdC00LjRgtC1INC60L7RiNC10LvQtdC6IiwiV2FsbGV0LnBheW1lbnQiOiLQntC/0LvQsNGC0LAiLCJXYWxsZXQuZW50ZXIucGF5bWVudCI6ItCf0L7QttCw0LvRg9C50YHRgtCwLCDQstCy0LXQtNC40YLQtSDQv9C70LDRgtC10LYiLCJXYWxsZXQuc3VibWl0Ijoi0J/QvtC00YLQstC10YDQttC00LDRgtGMIiwiUGFzc3dvcmQub2xkIjoi0KHRgtCw0YDRi9C5INC/0LDRgNC+0LvRjCIsIlBhc3N3b3JkLm9sZC5lbnRlciI6ItCf0L7QttCw0LvRg9C50YHRgtCwLCDQstCy0LXQtNC40YLQtSDRgdGC0LDRgNGL0Lkg0L/QsNGA0L7Qu9GMIiwiUGFzc3dvcmQubmV3Ijoi0J3QvtCy0YvQuSDQv9Cw0YDQvtC70YwiLCJQYXNzd29yZC5uZXcuZW50ZXIiOiLQn9C+0LbQsNC70YPQudGB0YLQsCwg0LLQstC10LTQuNGC0LUg0L3QvtCy0YvQuSDQv9Cw0YDQvtC70YwiLCJQYXNzd29yZC5zdWJtaXQiOiLQn9C+0LTRgtCy0LXRgNC20LTQsNGC0YwiLCJQYXltZW50Lm9sZCI6ItCh0YLQsNGA0YvQuSDQv9Cw0YDQvtC70YwiLCJQYXltZW50Lm9sZC5lbnRlciI6ItCf0L7QttCw0LvRg9C50YHRgtCwLCDQstCy0LXQtNC40YLQtSDRgdGC0LDRgNGL0Lkg0L/QsNGA0L7Qu9GMIiwiUGF5bWVudC5uZXciOiLQndC+0LLRi9C5INC/0LDRgNC+0LvRjCIsIlBheW1lbnQubmV3LmVudGVyIjoi0J/QvtC20LDQu9GD0LnRgdGC0LAsINCy0LLQtdC00LjRgtC1INC90L7QstGL0Lkg0L/QsNGA0L7Qu9GMIiwiUGF5bWVudC5zdWJtaXQiOiLQn9C+0LTRgtCy0LXRgNC20LTQsNGC0YwiLCJSdWxlLnRpdGxlIjoi0J/RgNCw0LLQuNC70L4iLCJSdWxlLnRleHQxIjoi0KLQvtGA0LPQvtCy0YvQuSDRgdC10YDQstC10YAg0LzQsNCz0LDQt9C40L3QsCBUaWtUb2sg0L/RgNC10LTQvdCw0LfQvdCw0YfQtdC9INC00LvRjyDRgtC+0LPQviwg0YfRgtC+0LHRiyDQv9C+0LzQvtGH0Ywg0L/RgNC+0LTQsNCy0YbQsNC8INC/0L7QstGL0YHQuNGC0Ywg0LLQuNC00LjQvNC+0YHRgtGMINGB0LLQvtC40YUg0L/RgNC+0LTRg9C60YLQvtCyLCDRgtC10Lwg0YHQsNC80YvQvCDRg9Cy0LXQu9C40YfQuNCy0LDRjyDQv9GA0L7QtNCw0LbQuCDQsiDQvNCw0LPQsNC30LjQvdC1LiIsIlJ1bGUudGV4dDIiOiLQnNGLINC40YHQv9C+0LvRjNC30YPQtdC8INCw0LLRgtC+0LzQsNGC0LjQt9C40YDQvtCy0LDQvdC90YPRjiDQvtCx0LvQsNGH0L3Rg9GOINGB0LjRgdGC0LXQvNGDLCDRh9GC0L7QsdGLINC/0L7QvNC+0YfRjCDQutCw0LbQtNC+0LzRgyDQvNCw0LPQsNC30LjQvdGDINGA0LDRgdC/0YDQtdC00LXQu9GP0YLRjCDQt9Cw0LrQsNC30Ysg0L3QsCDRgtC+0LLQsNGA0Ysg0Lgg0L7QsdC10YHQv9C10YfQuNCy0LDRgtGMINGB0L/RgNCw0LLQtdC00LvQuNCy0L7QtSDQuCDRgNCw0LLQvdC+0L/RgNCw0LLQvdC+0LUg0L7RgtC90L7RiNC10L3QuNC1INC6INC60LDQttC00L7QvNGDINC/0YDQvtC00LDQstGG0YMuIiwiUnVsZS50ZXh0MyI6ItCi0L7RgNCz0L7QstGL0LUg0LDQs9C10L3RgtGLINC80L7Qs9GD0YIg0LLRi9C/0L7Qu9C90Y/RgtGMIDHigJMzINC00LXQudGB0YLQstC40Y8g0L/QviDRgdCx0L7RgNGDINC30LDQutCw0LfQvtCyINC60LDQttC00YvQuSDQtNC10L3RjC4iLCJSdWxlLnRleHQ0Ijoi0JrQsNC20LTQsNGPINC60LDQvNC/0LDQvdC40Y8g0L3QsNGG0LXQu9C10L3QsCDQvdCwIDQwINC30LDQutCw0LfQvtCyINC90LAg0L/RgNC+0LTRg9C60YbQuNGOLiIsIlJ1bGUudGV4dDUiOiLQn9C+INC30LDQstC10YDRiNC10L3QuNC4INC+0L3QuCDQsdGD0LTRg9GCINCy0L7Qt9C90LDQs9GA0LDQttC00LXQvdGLINC60L7QvNC40YHRgdC40L7QvdC90YvQvNC4LCDQv9GA0LXQtNC+0YHRgtCw0LLQu9C10L3QvdGL0LzQuCDQv9GA0L7QtNCw0LLRhtC+0LwuIiwiUnVsZS50ZXh0NiI6ItCh0L7RgtGA0YPQtNC90LjQutC4INC+0LHRj9C30LDQvdGLINGB0LLQvtC10LLRgNC10LzQtdC90L3QviDQstGL0L/QvtC70L3Rj9GC0Ywg0LfQsNC60LDQt9GLLiIsIlJ1bGUudGV4dDciOiLQldGB0LvQuCDQstGLINC90LUg0LLRi9C/0L7Qu9C90LjRgtC1INGD0LrQsNC30LDQvdC90YvQtSDQt9Cw0LTQsNGH0Lgg0LfQsNC60LDQt9CwINC/0YDQvtC00YPQutGC0LAsINCy0Ysg0L3QtSDRgdC80L7QttC10YLQtSDQstGL0LLQtdGB0YLQuCDQtNC10L3RjNCz0Lgg0Lgg0L3QtSDRgdC80L7QttC10YLQtSDQv9C+0LvRg9GH0LjRgtGMINC60L7QvNC40YHRgdC40L7QvdC90YvQtSDQstC+0LfQvdCw0LPRgNCw0LbQtNC10L3QuNGPLiIsIlJ1bGUudGV4dDgiOiLQnNGLINC+0LHRgdC70YPQttC40LLQsNC10Lwg0YLQvtGA0LPQvtCy0YbQtdCyINGD0LbQtSDQtNCy0LAg0LPQvtC00LAuIiwiUnVsZS50ZXh0OSI6ItCt0YLQviDQsdC10LfQvtC/0LDRgdC90LDRjyDQuCDRgdGC0LDQsdC40LvRjNC90LDRjyDRgNCw0LHQvtGH0LDRjyDRgdGA0LXQtNCwLiIsIlJ1bGUudGV4dDEwIjoi0KHQvtGC0YDRg9C00L3QuNC60Lgg0LzQvtCz0YPRgiDQv9GA0LjRhdC+0LTQuNGC0Ywg0YHRjtC00LAg0LrQsNC20LTRi9C5INC00LXQvdGMLCDRh9GC0L7QsdGLINGA0LDQsdC+0YLQsNGC0Ywg0L3QsCDRgtC+0YDQs9C+0LLRhtC10LIg0LLQviDQstGA0LXQvNGPINC/0LXRgNC10YDRi9Cy0L7Qsi4iLCJSdWxlLnRleHQxMSI6ItCV0YHQu9C4INCy0Ysg0LHRg9C00LXRgtC1INGB0L7QsdC70Y7QtNCw0YLRjCDQv9GA0LDQstC40LvQsCDQt9Cw0LrQsNC30LAg0L/RgNC+0LTRg9C60YbQuNC4LCDRjdGC0L4g0LHRg9C00LXRgiDQtNC70Y8g0LLQsNGBINGB0YLQsNCx0LjQu9GM0L3Ri9C8INC00L7RhdC+0LTQvtC8LiIsIkFib3V0LnRpdGxlIjoi0J4g0L3QsNGBIiwiQWJvdXQudGV4dDEiOiLQniDQvdCw0YEg0JzQsNCz0LDQt9C40L0gVGlrIFRvayDigJQg0YDQsNC30LLQuNCy0LDRjtGJ0LDRj9GB0Y8g0LzQsNGA0LrQtdGC0LjQvdCz0L7QstCw0Y8g0LrQvtC80L/QsNC90LjRjy4iLCJBYm91dC50ZXh0MiI6ItCh0YLRgNC10LzRj9GB0Ywg0Log0YPQstC10LvQuNGH0LXQvdC40Y4g0LTQvtGF0L7QtNC+0LIg0LrQvtC80L/QsNC90LjQuS3QutC70LjQtdC90YLQvtCyLCDQvNCw0YDQutC10YLQuNC90LMg0YDQvtGB0YLQsCDQuNGB0L/QvtC70YzQt9GD0LXRgiDQtNCw0L3QvdGL0LUg0Lgg0YbQuNGE0YDQvtCy0YvQtSDQvNC10YLQvtC00YssINGH0YLQvtCx0Ysg0YHQtNC10LvQsNGC0Ywg0LzQsNGA0LrQtdGC0LjQvdCz0L7QstGL0LUg0YDQtdC30YPQu9GM0YLQsNGC0Ysg0L/RgNC10LTRgdC60LDQt9GD0LXQvNGL0LzQuCDQuCDQvNCw0LrRgdC40LzQsNC70YzQvdGL0LzQuC4iLCJBYm91dC50ZXh0MyI6ItCf0YPRgdGC0Ywg0LLQsNGI0Lgg0LzQsNGA0LrQtdGC0LjQvdCz0L7QstGL0LUg0YDQsNGB0YXQvtC00Ysg0LHQvtC70YzRiNC1INC90LUg0LHRg9C00YPRgiDRgtGA0LDRgtC40YLRjNGB0Y8g0L3QsCDQvdC10L/RgNC10LTRgdC60LDQt9GD0LXQvNGL0Lkg0L/Qu9Cw0L0sINC4INGD0LLQtdC70LjRh9GM0YLQtSDQvtGC0LTQsNGH0YMg0L7RgiDQuNC90LLQtdGB0YLQuNGG0LjQuSDRgSDQvNC40L3QuNC80LDQu9GM0L3Ri9C80Lgg0LfQsNGC0YDQsNGC0LDQvNC4LiDQndC+0LLRi9C5INC80LXRgtC+0LQg0LzQsNGA0LrQtdGC0LjQvdCz0LAg0L/QvtC30LLQvtC70LjRgiDQstCw0YjQtdC5INC60L7QvNC/0LDQvdC40Lgg0L/RgNC+0YDQstCw0YLRjNGB0Y8g0YfQtdGA0LXQtyDQvtGB0LDQtNGDINC4INGA0LDRgdGC0Lgg0L3QsNGA0LDQstC90LUg0YEg0YDRi9C90LrQvtC8LiIsIkFib3V0LnRleHQ0Ijoi0J/RgNC+0LHQu9C10LzRiywg0LrQvtGC0L7RgNGL0LUg0LzQvtC20LXRgiDRgNC10YjQuNGC0Ywg0LzQsNCz0LDQt9C40L0gVGlrIFRvayA6INCf0YDQuNC70L7QttC10L3QuNC1INC90LUg0L7QutCw0LfRi9Cy0LDQtdGCINC90LjQutCw0LrQvtCz0L4g0Y3RhNGE0LXQutGC0LAg0L/QvtGB0LvQtSDQt9Cw0L/Rg9GB0LrQsCwg0Lgg0LXRgdGC0LXRgdGC0LLQtdC90L3Ri9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INC+0YfQtdC90Ywg0LzQsNC70L4uIiwiQWJvdXQudGV4dDUiOiLQndC40LfQutC40Lkg0YDQtdC50YLQuNC90LMgOiDQkiDRgNC10LnRgtC40L3Qs9C1INC90LXRgiDRgtGA0LXRhSDQstC10YDRhdC90LjRhSDQutC70Y7Rh9C10LLRi9GFINGB0LvQvtCyLCDQuCDQv9C+0YLQtdC90YbQuNCw0LvRjNC90YvQtSDQutC70LjQtdC90YLRiyDQvdC1INC80L7Qs9GD0YIg0L3QsNC50YLQuCDQv9GA0LjQu9C+0LbQtdC90LjQtS4g0J3QuNC30LrQuNC5INC+0YXQstCw0YIgOiDQntCx0YnQuNC5INCy0LXRgSDQv9GA0LjQu9C+0LbQtdC90LjRjyDQvdC40LfQutC40LksINGH0YLQviDQv9GA0LjQstC+0LTQuNGCINC6INC/0LvQvtGF0L7QvNGDINC+0YXQstCw0YLRgyDQutC70Y7Rh9C10LLRi9GFINGB0LvQvtCyLiIsIkFib3V0LnRleHQ2Ijoi0JLRi9GB0L7QutCw0Y8g0YHRgtC+0LjQvNC+0YHRgtGMIDog0KHRgtC+0LjQvNC+0YHRgtGMINGA0LDQt9C80LXRidC10L3QuNGPINC60LvRjtGH0LXQstGL0YUg0YHQu9C+0LIg0LTQu9GPINGB0YLQsNCy0L7QuiDQstGL0YHQvtC60LAuIiwiU3RhcnRpbmcuYmFsYW5jZSI6ItCi0LXQutGD0YnQuNC5INCx0LDQu9Cw0L3RgSIsIlN0YXJ0aW5nLmluY29tZSI6ItCi0L7RgtCw0Log0JTQvtGF0L7QtCIsIlN0YXJ0aW5nLm9yZGVyLnRpdGxlIjoi0JHRgNC+0L3QuNGA0L7QstCw0L3QuNC1INC30LDQstC10YDRiNC10L3QviEiLCJTdGFydGluZy5zdWJtaXQuYnV0dG9uIjoi0JDQstGC0L4t0LzQsNGC0YfQs9C40L0iLCJTdGFydGluZy5zdGVwcyI6ItCo0LDQs9C4IiwiU3RhcnRpbmcuc3RlcHMxIjoiMS4g0J3QsNC20LzQuNGC0LUg0LrQvdC+0L/QutGDIMKr0JDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7QtSDRgdC+0L/QvtGB0YLQsNCy0LvQtdC90LjQtcK7INC4INGB0LvQtdC00YPQudGC0LUg0LjQvdGB0YLRgNGD0LrRhtC40Y/QvCDQtNC70Y8g0LLRi9C/0L7Qu9C90LXQvdC40Y8g0LfQsNC00LDRh9C4LiIsIlN0YXJ0aW5nLnN0ZXBzMiI6IjIuINCf0L7RgdC70LUg0LLRi9C/0L7Qu9C90LXQvdC40Y8g0LfQsNC00LDQvdC40Y8g0LLRiyDQvNC+0LbQtdGC0LUg0LfQsNGH0LjRgdC70LjRgtGMINC60L7QvNC40YHRgdC40Y4g0L3QsCDQsdCw0LvQsNC90YEuIiwiQWNjb3VudC5pbmRleC5waG9uZSI6ItCi0LXQu9C10YTQvtC9IiwiQWNjb3VudC5pbmRleC5pbnZpdGVfY29kZSI6ItCa0L7QtCDQv9GA0LjQs9C70LDRiNC10L3QuNGPIiwiQWNjb3VudC5pbmRleC5iYWxhbmNlIjoi0JHQsNC70LDQvdGBIiwiQWNjb3VudC5pbmRleC5yZWNoYXJnZSI6ItCf0LXRgNC10LfQsNGA0Y/QtNC60LAiLCJBY2NvdW50LmluZGV4LndpdGhkcmF3YWwiOiLQodC90Y/RgtC40LUiLCJBY2NvdW50LmluZGV4LnNlcnZpY2VzIjoi0KPRgdC70YPQs9C4IiwiQWNjb3VudC5pbmRleC5kZXRhaWxlZCI6ItCf0L7QtNGA0L7QsdC90YvQuSIsIkFjY291bnQuaW5kZXgud2FsbGV0Ijoi0JrQvtGI0LXQu9C10LoiLCJBY2NvdW50LmluZGV4LnBhc3N3b3JkIjoi0J/QsNGA0L7Qu9GMIiwiQWNjb3VudC5pbmRleC5wYXltZW50Ijoi0J7Qv9C70LDRgtCwIiwiQWNjb3VudC5pbmRleC5ydWxlIjoi0J/RgNCw0LLQuNC70L4iLCJBY2NvdW50LmluZGV4LmFib3V0Ijoi0J4g0L3QsNGBIiwiQWNjb3VudC5pbmRleC5sb2dvdXQiOiLQktGL0LnRgtC4IiwiQWNjb3VudC5pbmRleC5tZXNzYWdlIjoiQ9C+0L7QsdGJ0LXQvdC40LUiLCJMb2dpbi50aXRsZSI6ItCQ0LLRgtC+0YDQuNC30L7QstCw0YLRjNGB0Y8iLCJMb2dpbi50aXBzIjoi0J/QvtC20LDQu9GD0LnRgdGC0LAsINCy0L7QudC00LjRgtC1INCyINGB0LLQvtGOINGD0YfQtdGC0L3Rg9GOINC30LDQv9C40YHRjCIsIkxvZ2luLmVudGVyLnBob25lIjoi0J/QvtC20LDQu9GD0LnRgdGC0LAsINCy0LLQtdC00LjRgtC1INGC0LXQu9C10YTQvtC9IiwiTG9naW4uZW50ZXIucGFzc3dvcmQiOiLQn9C+0LbQsNC70YPQudGB0YLQsCDQstCy0LXQtNC40YLQtSDQv9Cw0YDQvtC70YwiLCJMb2dpbi5mb3JnZXQiOiLQl9Cw0LHRi9C70Lgg0L/QsNGA0L7Qu9GMPyIsIkxvZ2luLnJlZ2lzdGVyIjoi0JfQsNGA0LXQs9C40YHRgtGA0LjRgNC+0LLQsNGC0YzRgdGPIiwiUmVnaXN0ZXIudGl0bGUiOiLRgNC10LPQuNGB0YLRgCIsIlJlZ2lzdGVyLnRpcHMiOiLQoyDQstCw0YEg0YPQttC1INC10YHRgtGMINCw0LrQutCw0YPQvdGCPyIsIlJlZ2lzdGVyLmVudGVyLnBob25lIjoi0J/QvtC20LDQu9GD0LnRgdGC0LAsINCy0LLQtdC00LjRgtC1INGC0LXQu9C10YTQvtC9IiwiUmVnaXN0ZXIuZW50ZXIucGFzc3dvcmQiOiLQn9C+0LbQsNC70YPQudGB0YLQsCDQstCy0LXQtNC40YLQtSDQv9Cw0YDQvtC70YwiLCJSZWdpc3Rlci5lbnRlci5wYXkucGFzc3dvcmQiOiLQn9C+0LbQsNC70YPQudGB0YLQsCwg0LLQstC10LTQuNGC0LUgNi3Qt9C90LDRh9C90YvQuSDQv9C70LDRgtC10LbQvdGL0Lkg0L/QsNGA0L7Qu9GMIiwiUmVnaXN0ZXIuZW50ZXIuaW52aXRlX2NvZGUiOiLQn9C+0LbQsNC70YPQudGB0YLQsCwg0LLQstC10LTQuNGC0LUg0LrQvtC0INC/0YDQuNCz0LvQsNGI0LXQvdC40Y8iLCJSZWdpc3Rlci5yZWFkIjoi0J/RgNC+0YfRgtC40YLQtSDQuCDRgdC+0LPQu9Cw0YHQuNGC0LXRgdGMIiwiUmVnaXN0ZXIucHJpdmFjeSI6ItGB0L7Qs9C70LDRiNC10L3QuNC1INC+INC60L7QvdGE0LjQtNC10L3RhtC40LDQu9GM0L3QvtGB0YLQuCIsIlJlZ2lzdGVyLmFncmVlIjoi0J/QvtC20LDQu9GD0LnRgdGC0LAsINC/0YDQvtGH0YLQuNGC0LUg0Lgg0YHQvtCz0LvQsNGB0LjRgtC10YHRjCDRgSDRgdC+0LPQu9Cw0YjQtdC90LjQtdC8INC+INC60L7QvdGE0LjQtNC10L3RhtC40LDQu9GM0L3QvtGB0YLQuCJ9fSxmMDk2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGE7bi5kKGUsImIiLChmdW5jdGlvbigpe3JldHVybiBpfSkpLG4uZChlLCJjIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKSxuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSk7dmFyIGk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oIkFwcCIse2F0dHJzOntrZWVwQWxpdmVJbmNsdWRlOnQua2VlcEFsaXZlSW5jbHVkZX19KX0scj1bXX0sZjMwZTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oIjdhODIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXZvaWQgMDtlLmRlZmF1bHQ9e25hdjpbIkhvbWUiLCJSZWNvcmRzIiwiU3RhcnRpbmciLCJTZXJ2aWNlIiwiQWNjb3VudCJdLHJlY29yZHNfbmF2OlsiQWxsIiwiU3VibWlzc2lvbiIsIkNvbXBsZXRlZCIsIkZyb3plbiJdLGJpbGxzX25hdjpbIkFsbCIsIkluY29tZSIsIkV4cGVuZGl0dXJlIl0sIkJhbmsuYWNjb3VudCI6IkFjY291bnQiLCJCYW5rLmVudGVyLmFjY291bnQiOiJQbGVhc2UgZW50ZXIgYWNjb3VudCIsIkJhbmsudXNlcm5hbWUiOiJVc2VybmFtZSIsIkJhbmsuZW50ZXIudXNlcm5hbWUiOiJQbGVhc2UgZW50ZXIgdXNlcm5hbWUiLCJCYW5rLnR5cGUiOiJQaXggVHlwZSIsIkJhbmsuZW50ZXIudHlwZSI6IlBsZWFzZSBzZWxlY3QgcGl4IHR5cGUiLCJCYW5rLmNwZiI6IkNwZiIsIkJhbmsuZW50ZXIuY3BmIjoiUGxlYXNlIGVudGVyIGNwZiIsIkJhbmsuc3VibWl0IjoiQ29uZmlybSIsIkJhbmsuYmluZC5iYW5rIjoiUGxlYXNlIGJpbmQgeW91ciBiYW5rIiwiQ29tbW9uLmxvYWRpbmciOiJMb2FkaW5nLi4uIiwiQ29tbW9uLm5vX2RhdGEiOiJObyBSZWNvcmQiLCJDb21tb24uY29weSI6IkNvcHkiLCJDb21tb24uc2lnbiI6IlNpZ24iLCJDb21tb24uY3JlZGl0X3Njb3JlIjoiQ3JlZGl0IFNjb3JlIiwiSW5kZXguY29tbW9kaXRpZXMiOiJDb21tb2RpdGllcyIsIkluZGV4LmFib3V0IjoiQWJvdXQgdXMiLCJJbmRleC5jb21wYW55IjoiR3Jvd3RoIE1hcmtldGluZyBDb21wYW55IiwiSW5kZXguaW50cm9kdWN0aW9uIjoiQ2xpY2sgdG8gdmlldyBpbnRyb2R1Y3Rpb24iLCJJbmRleC5jb21taXNzaW9uIjoiQ29tbWlzc2lvbiIsIkluZGV4LmdldCI6IkdldCBhIGNvbW1pc3Npb24iLCJPcmRlci50b3RhbF92YWx1ZSI6IlRvdGFsIFZhbHVlIiwiT3JkZXIuY29tbWlzc2lvbiI6IkNvbW1pc3Npb24iLCJPcmRlci5zdWJtaXQiOiJTdWJtaXQiLCJPcmRlci50aW1lIjoiT3JkZXIgdGltZSIsIk9yZGVyLm51bWJlciI6Ik9yZGVyIG51bWJlciIsIk9yZGVyLnRvdGFsIjoiT3JkZXIgdG90YWwiLCJPcmRlci5leHBlY3RlZCI6IkV4cGVjdGVkIHJldHVybiIsIlJlY2hhcmdlLmJhbGFuY2UiOiJCYWxhbmNlIiwiUmVjaGFyZ2UuYWRkcmVzcyI6IlJlY2hhcmdlIGFkZHJlc3MiLCJSZWNoYXJnZS5hbW91bnQiOiJSZWNoYXJnZSBhbW91bnQiLCJSZWNoYXJnZS5lbnRlci5hbW91bnQiOiJQbGVhc2UgZW50ZXIgcmVjaGFyZ2UgYW1vdW50IiwiUmVjaGFyZ2UudXBsb2FkIjoiVXBsb2FkIHBheW1lbnQgc2NyZWVuc2hvdCIsIlJlY2hhcmdlLnBsZWFzZSI6IlBsZWFzZSB1cGxvYWQgcGF5bWVudCBzY3JlZW5zaG90IiwiUmVjaGFyZ2UudXBsb2FkMSI6IlVwbG9hZCIsIlJlY2hhcmdlLnN1Ym1pdCI6IkkgaGF2ZSBjb21wbGV0ZWQgdGhlIHJlY2hhcmdlIiwiUmVjaGFyZ2UudGlwcyI6IlRpcHMiLCJSZWNoYXJnZS50aXBzMSI6IjEuIFBsZWFzZSBjb3B5IHRoZSBUUkMtMjAgd2FsbGV0IGFkZHJlc3MgZm9yIHBheW1lbnQgaW4gdGhpcyBtYWxsLiIsIlJlY2hhcmdlLnRpcHMyIjoiMi4gTWFrZSB0aGUgdHJhbnNmZXIgYWZ0ZXIgdmVyaWZpY2F0aW9uLiBJZiBJIG1ha2UgYSBtaXN0YWtlLCB0aGlzIG1hbGwgd2lsbCBub3QgYmVhciB5b3VyIGxvc3MuIiwiUmVjaGFyZ2UudGlwczMiOiIzLiBXaGVuIHlvdXIgcGF5bWVudCBpcyBzdWNjZXNzZnVsLCBwbGVhc2UgdXBsb2FkIHRoZSBwYXltZW50IHZvdWNoZXIuIiwiUmVjaGFyZ2UudGlwczQiOiI0LiBXaGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMsIGNsaWNrOiBJIGhhdmUgY29tcGxldGVkIHRoZSBwYXltZW50LiIsIlJlY2hhcmdlLnRpcHM1IjoiNS4gV2hlbiB5b3UgZW5jb3VudGVyIGFueSBwcm9ibGVtcywgYmUgc3VyZSB0byBjb250YWN0IG91ciBvbmxpbmUgY3VzdG9tZXIgc2VydmljZSBpbiB0aW1lIHRvIGhlbHAgeW91IHNvbHZlIHRoZW0uIiwiUmVjaGFyZ2Uuc2VsZWN0IjoiUmVjaGFyZ2UgbWV0aG9kIHNlbGVjdGlvbiIsIldpdGhkcmF3LmJpbmQuYWRkcmVzcyI6IlBsZWFzZSBiaW5kIHlvdXIgd2FsbGV0IGFkZHJlc3MiLCJXaXRoZHJhdy5iYWxhbmNlIjoiQmFsYW5jZSIsIldpdGhkcmF3LmFtb3VudCI6IldpdGhkcmF3YWwgYW1vdW50IiwiV2l0aGRyYXcuZW50ZXIuYW1vdW50IjoiUGxlYXNlIGVudGVyIHdpdGhkcmF3YWwgYW1vdW50IiwiV2l0aGRyYXcubWluLmFtb3VudCI6Ik1pbmltdW0gd2l0aGRyYXdhbCBhbW91bnQiLCJXaXRoZHJhdy5wYXkucGFzc3dvcmQiOiJQYXltZW50IHBhc3N3b3JkIiwiV2l0aGRyYXcuZW50ZXIucGF5LnBhc3N3b3JkIjoiUGxlYXNlIGVudGVyIHBheW1lbnQgcGFzc3dvcmQiLCJXaXRoZHJhdy5zdWJtaXQiOiJDb25maXJtIiwiV2FsbGV0Lm5ldHdvcmsiOiJOZXR3b3JrIiwiV2FsbGV0LndhbGxldCI6IldhbGxldCIsIldhbGxldC5lbnRlci53YWxsZXQiOiJQbGVhc2UgZW50ZXIgd2FsbGV0IiwiV2FsbGV0LnBheW1lbnQiOiJQYXltZW50IiwiV2FsbGV0LmVudGVyLnBheW1lbnQiOiJQbGVhc2UgZW50ZXIgcGF5bWVudCIsIldhbGxldC5zdWJtaXQiOiJDb25maXJtIiwiUGFzc3dvcmQub2xkIjoiT2xkIHBhc3N3b3JkIiwiUGFzc3dvcmQub2xkLmVudGVyIjoiUGxlYXNlIGVudGVyIG9sZCBwYXNzd29yZCIsIlBhc3N3b3JkLm5ldyI6Ik5ldyBwYXNzd29yZCIsIlBhc3N3b3JkLm5ldy5lbnRlciI6IlBsZWFzZSBlbnRlciBuZXcgcGFzc3dvcmQiLCJQYXNzd29yZC5zdWJtaXQiOiJDb25maXJtIiwiUGF5bWVudC5vbGQiOiJPbGQgcGFzc3dvcmQiLCJQYXltZW50Lm9sZC5lbnRlciI6IlBsZWFzZSBlbnRlciBvbGQgcGFzc3dvcmQiLCJQYXltZW50Lm5ldyI6Ik5ldyBQYXNzd29yZCIsIlBheW1lbnQubmV3LmVudGVyIjoiUGxlYXNlIGVudGVyIG5ldyBwYXNzd29yZCIsIlBheW1lbnQuc3VibWl0IjoiQ29uZmlybSIsIlJ1bGUudGl0bGUiOiJSdWxlIiwiUnVsZS50ZXh0MSI6IlRpa1RvayBzaG9wIG1lcmNoYW50IHNlcnZlciBpcyBkZXNpZ25lZCB0byBoZWxwIG1lcmNoYW50cyBpbmNyZWFzZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGVpciBwcm9kdWN0cywgdGhlcmVieSBpbmNyZWFzaW5nIHN0b3JlIHNhbGVzLiIsIlJ1bGUudGV4dDIiOiJXZSB1c2UgYW4gYXV0b21hdGVkIGNsb3VkLWJhc2VkIHN5c3RlbSB0byBoZWxwIGVhY2ggc3RvcmUgZGlzdHJpYnV0ZSBwcm9kdWN0IG9yZGVycyBhbmQgZW5zdXJlIGZhaXIgYW5kIGVxdWl0YWJsZSB0cmVhdG1lbnQgb2YgZWFjaCBtZXJjaGFudC4iLCJSdWxlLnRleHQzIjoiTWVyY2hhbnQgYWdlbnRzIGNhbiBjb21wbGV0ZSAxLTMgb3JkZXIgZ3JhYmJpbmcgYWN0aXZpdGllcyBldmVyeSBkYXkuIiwiUnVsZS50ZXh0NCI6IkVhY2ggY2FtcGFpZ24gdGFyZ2V0cyA0MCBwcm9kdWN0IG9yZGVycy4iLCJSdWxlLnRleHQ1IjoiVXBvbiBjb21wbGV0aW9uLCB0aGV5IHdpbGwgYmUgcmV3YXJkZWQgd2l0aCBjb21taXNzaW9ucyBwcm92aWRlZCBieSB0aGUgbWVyY2hhbnQuIiwiUnVsZS50ZXh0NiI6IkVtcGxveWVlcyBhcmUgcmVxdWlyZWQgdG8gY29tcGxldGUgb3JkZXIgYWN0aXZpdGllcyBpbiBhIHRpbWVseSBtYW5uZXIuIiwiUnVsZS50ZXh0NyI6IklmIHlvdSBkbyBub3QgY29tcGxldGUgdGhlIHNwZWNpZmllZCBwcm9kdWN0IG9yZGVyIHRhc2tzLCB5b3Ugd2lsbCBub3QgYmUgYWJsZSB0byB3aXRoZHJhdyBtb25leSBhbmQgeW91IHdpbGwgbm90IGJlIGFibGUgdG8gcmVjZWl2ZSBjb21taXNzaW9uIHJld2FyZHMuIiwiUnVsZS50ZXh0OCI6IldlIGhhdmUgYmVlbiBzZXJ2aW5nIG1lcmNoYW50cyBmb3IgdHdvIHllYXJzLiIsIlJ1bGUudGV4dDkiOiJUaGlzIGlzIGEgc2FmZSBhbmQgc3RhYmxlIHdvcmsgZW52aXJvbm1lbnQuIiwiUnVsZS50ZXh0MTAiOiJTdGFmZiBjYW4gY29tZSBoZXJlIGV2ZXJ5IGRheSB0byB3b3JrIGZvciBtZXJjaGFudHMgZHVyaW5nIHRoZWlyIGJyZWFrcy4iLCJSdWxlLnRleHQxMSI6IkFzIGxvbmcgYXMgeW91IGZvbGxvdyB0aGUgcHJvZHVjdCBvcmRlciBydWxlcywgdGhpcyB3aWxsIGJlIGEgc3RlYWR5IGluY29tZSBmb3IgeW91LiIsIkFib3V0LnRpdGxlIjoiQWJvdXQgVXMiLCJBYm91dC50ZXh0MSI6IkFib3V0IFVzIFRpayBUb2sgc2hvcCBpcyBhIGdyb3d0aCBtYXJrZXRpbmcgY29tcGFueS4iLCJBYm91dC50ZXh0MiI6IkNvbW1pdHRlZCB0byBleHBhbmRpbmcgdGhlIHJldmVudWUgb2YgY2xpZW50IGNvbXBhbmllcywgZ3Jvd3RoIG1hcmtldGluZyB1c2VzIGRhdGEgYW5kIGRpZ2l0YWwgbWV0aG9kcyB0byBtYWtlIG1hcmtldGluZyByZXN1bHRzIHByZWRpY3RhYmxlIGFuZCBtYXhpbWl6ZWQuIiwiQWJvdXQudGV4dDMiOiJMZXQgeW91ciBtYXJrZXRpbmcgZXhwZW5zZXMgbm8gbG9uZ2VyIGJlIHNwZW50IG9uIGFuIHVucHJlZGljdGFibGUgcGxhbiwgYW5kIGV4cGFuZCB0aGUgcmV0dXJuIG9uIGludmVzdG1lbnQgd2l0aCBtaW5pbWFsIGV4cGVuc2VzLiBUaGUgbmV3IG1hcmtldGluZyBtZXRob2QgYWxsb3dzIHlvdXIgY29tcGFueSB0byBicmVhayB0aHJvdWdoIHRoZSBzaWVnZSBhbmQgZ3JvdyBhZ2FpbnN0IHRoZSBtYXJrZXQuIiwiQWJvdXQudGV4dDQiOiJQcm9ibGVtcyB0aGF0IFRpayBUb2sgc2hvcCBjYW4gc29sdmU6IFRoZSBBUFAgaGFzIG5vIGVmZmVjdCBhZnRlciBiZWluZyBsYXVuY2hlZCwgYW5kIHRoZXJlIGFyZSB2ZXJ5IGZldyBuYXR1cmFsIHVzZXJzLiIsIkFib3V0LnRleHQ1IjoiTG93IHJhbmtpbmc6IFRoZXJlIGFyZSBubyB0b3AgdGhyZWUga2V5d29yZHMgaW4gdGhlIHJhbmtpbmcsIGFuZCBwb3RlbnRpYWwgY3VzdG9tZXJzIGNhbm5vdCBmaW5kIHRoZSBBUFAuIExvdyBjb3ZlcmFnZTogVGhlIG92ZXJhbGwgd2VpZ2h0IG9mIHRoZSBBUFAgaXMgbG93LCByZXN1bHRpbmcgaW4gcG9vciBrZXl3b3JkIGNvdmVyYWdlLiIsIkFib3V0LnRleHQ2IjoiSGlnaCBjb3N0OiBUaGUgY29zdCBvZiBwbGFjaW5nIGJpZGRpbmcga2V5d29yZHMgaXMgaGlnaC4iLCJTdGFydGluZy5iYWxhbmNlIjoiQ3VycmVudCBiYWxhbmNlIiwiU3RhcnRpbmcuaW5jb21lIjoiVG90YWsgSW5jb21lIiwiU3RhcnRpbmcub3JkZXIudGl0bGUiOiJCb29raW5nIGNvbXBsZXRlZCEiLCJTdGFydGluZy5zdWJtaXQuYnV0dG9uIjoiQXV0by1tYXRjaGdpbiIsIlN0YXJ0aW5nLnN0ZXBzIjoiVGhlIHN0ZXBzIiwiU3RhcnRpbmcuc3RlcHMxIjonMS4gQ2xpY2sgdGhlICJBdXRvLW1hdGNoIiBidXR0b24gYW5kIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGNvbXBsZXRlIHRoZSB0YXNrLicsIlN0YXJ0aW5nLnN0ZXBzMiI6IjIuIEFmdGVyIGNvbXBsZXRpbmcgdGhlIHRhc2ssIHlvdSBjYW4gc2V0dGxlIHRoZSBjb21taXNzaW9uIHRvIHRoZSBiYWxhbmNlLiIsIkFjY291bnQuaW5kZXgucGhvbmUiOiJQaG9uZSIsIkFjY291bnQuaW5kZXguaW52aXRlX2NvZGUiOiJJbnZpdGF0aW9uIGNvZGUiLCJBY2NvdW50LmluZGV4LmJhbGFuY2UiOiJCYWxhbmNlIiwiQWNjb3VudC5pbmRleC5yZWNoYXJnZSI6IlJlY2hhcmdlIiwiQWNjb3VudC5pbmRleC53aXRoZHJhd2FsIjoiV2l0aGRyYXdhbCIsIkFjY291bnQuaW5kZXguc2VydmljZXMiOiJTZXJ2aWNlcyIsIkFjY291bnQuaW5kZXguZGV0YWlsZWQiOiJEZXRhaWxlZCIsIkFjY291bnQuaW5kZXgud2FsbGV0IjoiV2FsbGV0IiwiQWNjb3VudC5pbmRleC5wYXNzd29yZCI6IlBhc3N3b3JkIiwiQWNjb3VudC5pbmRleC5wYXltZW50IjoiUGF5bWVudCIsIkFjY291bnQuaW5kZXgucnVsZSI6IlJ1bGUiLCJBY2NvdW50LmluZGV4LmFib3V0IjoiQWJvdXQgVXMiLCJBY2NvdW50LmluZGV4LmxvZ291dCI6IkxvZ291dCIsIkFjY291bnQuaW5kZXgubWVzc2FnZSI6Ik1lc3NhZ2UiLCJMb2dpbi50aXRsZSI6IkxvZ2luIiwiTG9naW4udGlwcyI6IlBsZWFzZSBsb2dpbiB0byB5b3VyIGFjY291bnQiLCJMb2dpbi5lbnRlci5waG9uZSI6IlBsZWFzZSBlbnRlciBwaG9uZSIsIkxvZ2luLmVudGVyLnBhc3N3b3JkIjoiUGxlYXNlIGVudGVyIHBhc3N3b3JkIiwiTG9naW4uZm9yZ2V0IjoiRm9yZ2V0IHRoZSBwYXNzd29yZD8iLCJMb2dpbi5yZWdpc3RlciI6IlJlZ2lzdGVyIG5vdyIsIlJlZ2lzdGVyLnRpdGxlIjoiUmVnaXN0ZXIiLCJSZWdpc3Rlci50aXBzIjoiQWxyZWFkeSBoYXZlIGFuIGFjY291bnQ/IiwiUmVnaXN0ZXIuZW50ZXIucGhvbmUiOiJQbGVhc2UgZW50ZXIgcGhvbmUiLCJSZWdpc3Rlci5lbnRlci5wYXNzd29yZCI6IlBsZWFzZSBlbnRlciBwYXNzd29yZCIsIlJlZ2lzdGVyLmVudGVyLnBheS5wYXNzd29yZCI6IlBsZWFzZSBlbnRlciB0aGUgNi1kaWdpdCBwYXltZW50IHBhc3N3b3JkIiwiUmVnaXN0ZXIuZW50ZXIuaW52aXRlX2NvZGUiOiJQbGVhc2UgZW50ZXIgaW52aXRhdGlvbiBjb2RlIiwiUmVnaXN0ZXIucmVhZCI6IlJlYWQgYW5kIGFncmVlIiwiUmVnaXN0ZXIucHJpdmFjeSI6InByaXZhY3kgYWdyZWVtZW50IiwiUmVnaXN0ZXIuYWdyZWUiOiJQbGVhc2UgcmVhZCBhbmQgYWdyZWUgcHJpdmFjeSBhZ3JlZW1lbnQifX0sZjQ2NDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oIjdhODIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXZvaWQgMDtlLmRlZmF1bHQ9e25hdjpbIkFuYXNheWZhIiwiS2F5xLF0bGFyIiwiQmHFn2xhbWEiLCJIaXptZXQiLCJIZXNhcCJdLHJlY29yZHNfbmF2OlsiVMO8bcO8IiwiR8O2bmRlcmltIiwiVGFtYW1sYW5hbiIsIkRvbm11xZ8iXSxiaWxsc19uYXY6WyJUw7xtw7wiLCJHZWxpciIsIkhhcmNhbWEiXSwiQmFuay5hY2NvdW50IjoiSGVzYXAiLCJCYW5rLmVudGVyLmFjY291bnQiOiJMw7x0ZmVuIGhlc2FwIGdpcmluIiwiQmFuay51c2VybmFtZSI6Ikt1bGxhbsSxY8SxIGFkxLEiLCJCYW5rLmVudGVyLnVzZXJuYW1lIjoiTMO8dGZlbiBrdWxsYW7EsWPEsSBhZMSxbsSxIGdpcmluIiwiQmFuay50eXBlIjoiUGl4IFTDvHLDvCIsIkJhbmsuZW50ZXIudHlwZSI6IkzDvHRmZW4gcGl4IHTDvHLDvG7DvCBzZcOnaW4iLCJCYW5rLmNwZiI6IkNwZiIsIkJhbmsuZW50ZXIuY3BmIjoiTMO8dGZlbiBjcGYgZ2lyaW4iLCJCYW5rLnN1Ym1pdCI6Ik9uYXlsYSIsIkJhbmsuYmluZC5iYW5rIjoiTMO8dGZlbiBiYW5rYW7EsXrEsSBiYcSfbGF5xLFuIiwiQ29tbW9uLmxvYWRpbmciOiJZw7xrbGVuaXlvci4uLiIsIkNvbW1vbi5ub19kYXRhIjoiS2F5xLF0IGJ1bHVuYW1hZMSxIiwiQ29tbW9uLmNvcHkiOiJLb3B5YWxhIiwiQ29tbW9uLnNpZ24iOiLEsMWfYXJldCIsIkNvbW1vbi5jcmVkaXRfc2NvcmUiOiJLcmVkaSBQdWFuxLEiLCJJbmRleC5jb21tb2RpdGllcyI6IkVtdGlhbGFyIiwiSW5kZXguYWJvdXQiOiJIYWtrxLFtxLF6ZGEiLCJJbmRleC5jb21wYW55IjoiQsO8ecO8bWUgUGF6YXJsYW1hIMWeaXJrZXRpIiwiSW5kZXguaW50cm9kdWN0aW9uIjoiVGFuxLF0xLFtxLEgZ8O2csO8bnTDvGxlbWVrIGnDp2luIHTEsWtsYXnEsW4iLCJJbmRleC5jb21taXNzaW9uIjoiS29taXN5b24iLCJJbmRleC5nZXQiOiJLb21pc3lvbiBhbCIsIk9yZGVyLnRvdGFsX3ZhbHVlIjoiVG9wbGFtIERlxJ9lciIsIk9yZGVyLmNvbW1pc3Npb24iOiJLb21pc3lvbiIsIk9yZGVyLnN1Ym1pdCI6IkfDtm5kZXIiLCJPcmRlci50aW1lIjoiU2lwYXJpxZ8gemFtYW7EsSIsIk9yZGVyLm51bWJlciI6IlNpcGFyacWfIG51bWFyYXPEsSIsIk9yZGVyLnRvdGFsIjoiVG9wbGFtIHNpcGFyacWfIiwiT3JkZXIuZXhwZWN0ZWQiOiJCZWtsZW5lbiBkw7Zuw7zFnyIsIlJlY2hhcmdlLmJhbGFuY2UiOiJCYWtpeWUiLCJSZWNoYXJnZS5hZGRyZXNzIjoiWcO8a2xlbWUgYWRyZXNpIiwiUmVjaGFyZ2UuYW1vdW50IjoiWcO8a2xlbWUgbWlrdGFyxLEiLCJSZWNoYXJnZS5lbnRlci5hbW91bnQiOiJMw7x0ZmVuIHnDvGtsZW1lIG1pa3RhcsSxbsSxIGdpcmluIiwiUmVjaGFyZ2UudXBsb2FkIjoiw5ZkZW1lIGVrcmFuIGfDtnLDvG50w7xzw7wgecO8a2xlIiwiUmVjaGFyZ2UucGxlYXNlIjoiTMO8dGZlbiDDtmRlbWUgZWtyYW4gZ8O2csO8bnTDvHPDvCB5w7xrbGV5aW4iLCJSZWNoYXJnZS51cGxvYWQxIjoiWcO8a2xlIiwiUmVjaGFyZ2Uuc3VibWl0IjoiWcO8a2xlbWUgacWfbGVtaW5pIHRhbWFtbGFkxLFtIiwiUmVjaGFyZ2UudGlwcyI6IsSwcHXDp2xhcsSxIiwiUmVjaGFyZ2UudGlwczEiOiIxLiBCdSBhbMSxxZ92ZXJpxZ90ZSDDtmRlbWUgacOnaW4gVFJDLTIwIGPDvHpkYW4gYWRyZXNpbmkga29weWFsYXnEsW4uIiwiUmVjaGFyZ2UudGlwczIiOiIyLiBEb8SfcnVsYW1hIHNvbnJhc8SxbmRhIHRyYW5zZmVyaSB5YXDEsW4uIFlhbmzEscWfbMSxayB5YXBhcnNhbSwgYnUgYWzEscWfdmVyacWfIHNpemluIHphcmFyxLFuxLF6xLEga2FyxZ/EsWxhbWF6LiIsIlJlY2hhcmdlLnRpcHMzIjoiMy4gw5ZkZW1lbml6IGJhxZ9hcsSxbMSxIG9sZHXEn3VuZGEgbMO8dGZlbiDDtmRlbWUgbWFrYnV6dW51IHnDvGtsZXlpbi4iLCJSZWNoYXJnZS50aXBzNCI6IjQuIEJ1bnUgYml0aXJkacSfaW5pemRlLCAnWcO8a2xlbWUgacWfbGVtaW5pIHRhbWFtbGFkxLFtJ8SxIHTEsWtsYXnEsW4uIiwiUmVjaGFyZ2UudGlwczUiOiI1LiBIZXJoYW5naSBiaXIgc29ydW5sYSBrYXLFn8SxbGHFn8SxcnNhbsSxeiwgc29ydW51IMOnw7Z6bWVuaXplIHlhcmTEsW1jxLEgb2xtYWsgacOnaW4gw6dldnJpbWnDp2kgbcO8xZ90ZXJpIGhpem1ldGxlcmltaXpsZSB6YW1hbsSxbmRhIGlsZXRpxZ9pbWUgZ2XDp3RpxJ9pbml6ZGVuIGVtaW4gb2x1bi4iLCJSZWNoYXJnZS5zZWxlY3QiOiLFnmFyaiB5w7ZudGVtaSBzZcOnaW1pIiwiV2l0aGRyYXcuYmluZC5hZGRyZXNzIjoiTMO8dGZlbiBjw7x6ZGFuIGFkcmVzaW5pemkgYmHEn2xhecSxbiIsIldpdGhkcmF3LmJhbGFuY2UiOiJCYWtpeWUiLCJXaXRoZHJhdy5hbW91bnQiOiLDh2VraWxlY2VrIG1pa3RhciIsIldpdGhkcmF3LmVudGVyLmFtb3VudCI6IkzDvHRmZW4gw6dla2lsZWNlayBtaWt0YXLEsSBnaXJpbiIsIldpdGhkcmF3Lm1pbi5hbW91bnQiOiJNaW5pbXVtIMOnZWtpbSBtaWt0YXLEsSIsIldpdGhkcmF3LnBheS5wYXNzd29yZCI6IsOWZGVtZSDFn2lmcmVzaSIsIldpdGhkcmF3LmVudGVyLnBheS5wYXNzd29yZCI6IkzDvHRmZW4gw7ZkZW1lIMWfaWZyZXNpbmkgZ2lyaW4iLCJXaXRoZHJhdy5zdWJtaXQiOiJPbmF5bGEiLCJXYWxsZXQubmV0d29yayI6IkHEnyIsIldhbGxldC53YWxsZXQiOiJDw7x6ZGFuIiwiV2FsbGV0LmVudGVyLndhbGxldCI6IkzDvHRmZW4gY8O8emRhbsSxIGdpcmluIiwiV2FsbGV0LnBheW1lbnQiOiLDlmRlbWUiLCJXYWxsZXQuZW50ZXIucGF5bWVudCI6IkzDvHRmZW4gw7ZkZW1leWkgZ2lyaW4iLCJXYWxsZXQuc3VibWl0IjoiT25heWxhIiwiUGFzc3dvcmQub2xkIjoiRXNraSDFn2lmcmUiLCJQYXNzd29yZC5vbGQuZW50ZXIiOiJMw7x0ZmVuIGVza2kgxZ9pZnJleWkgZ2lyaW4iLCJQYXNzd29yZC5uZXciOiJZZW5pIMWfaWZyZSIsIlBhc3N3b3JkLm5ldy5lbnRlciI6IkzDvHRmZW4geWVuaSDFn2lmcmV5aSBnaXJpbiIsIlBhc3N3b3JkLnN1Ym1pdCI6Ik9uYXlsYSIsIlBheW1lbnQub2xkIjoiRXNraSDFn2lmcmUiLCJQYXltZW50Lm9sZC5lbnRlciI6IkzDvHRmZW4gZXNraSDFn2lmcmV5aSBnaXJpbiIsIlBheW1lbnQubmV3IjoiWWVuaSDFnmlmcmUiLCJQYXltZW50Lm5ldy5lbnRlciI6IkzDvHRmZW4geWVuaSDFn2lmcmV5aSBnaXJpbiIsIlBheW1lbnQuc3VibWl0IjoiT25heWxhIiwiUnVsZS50aXRsZSI6Ikt1cmFsIiwiUnVsZS50ZXh0MSI6IlRpa1RvayBtYcSfYXphIHTDvGNjYXIgc3VudWN1c3UsIHTDvGNjYXJsYXLEsW4gw7xyw7xubGVyaW5pbiBnw7Zyw7xuw7xybMO8xJ/DvG7DvCBhcnTEsXJtYWxhcsSxbmEgeWFyZMSxbWPEsSBvbG1hayBpw6dpbiB0YXNhcmxhbm3EscWfdMSxciwgYsO2eWxlY2UgbWHEn2F6YSBzYXTEscWfbGFyxLFuxLEgYXJ0xLFyYWJpbGlyLiIsIlJ1bGUudGV4dDIiOiJIZXIgbWHEn2F6YSBpw6dpbiDDvHLDvG4gc2lwYXJpxZ9sZXJpbmkgZGHEn8SxdG1hayB2ZSBoZXIgdMO8Y2NhcmEgYWRpbCB2ZSBlxZ9pdCBtdWFtZWxlIHNhxJ9sYW1hayBpw6dpbiBvdG9tYXRpayBiaXIgYnVsdXQgdGFiYW5sxLEgc2lzdGVtIGt1bGxhbsSxeW9ydXouIiwiUnVsZS50ZXh0MyI6IlTDvGNjYXIgdGVtc2lsY2lsZXJpIGhlciBnw7xuIDEtMyBzaXBhcmnFnyB5YWthbGFtYSBldGtpbmxpxJ9pbmkgdGFtYW1sYXlhYmlsaXJsZXIuIiwiUnVsZS50ZXh0NCI6IkhlciBrYW1wYW55YSA0MCDDvHLDvG4gc2lwYXJpxZ9pIGhlZGVmbGVyLiIsIlJ1bGUudGV4dDUiOiJUYW1hbWxhbmTEscSfxLFuZGEsIHTDvGNjYXIgdGFyYWbEsW5kYW4gc2HEn2xhbmFuIGtvbWlzeW9ubGFybGEgw7Zkw7xsbGVuZGlyaWxlY2VrbGVyLiIsIlJ1bGUudGV4dDYiOiLDh2FsxLHFn2FubGFyxLFuIGJlbGlydGlsZW4gw7xyw7xuIHNpcGFyacWfIGfDtnJldmxlcmluaSB6YW1hbsSxbmRhIHRhbWFtbGFtYWxhcsSxIGdlcmVrbWVrdGVkaXIuIiwiUnVsZS50ZXh0NyI6IkJlbGlydGlsZW4gw7xyw7xuIHNpcGFyacWfIGfDtnJldmxlcmluaSB0YW1hbWxhbWF6c2FuxLF6LCBwYXJhIMOnZWttZSB5YXBhbWF6IHZlIGtvbWlzeW9uIMO2ZMO8bGxlcmkgYWxhbWF6c8SxbsSxei4iLCJSdWxlLnRleHQ4IjoixLBraSB5xLFsZMSxciB0w7xjY2FybGFyYSBoaXptZXQgdmVyaXlvcnV6LiIsIlJ1bGUudGV4dDkiOiJCdSBnw7x2ZW5saSB2ZSBpc3Rpa3JhcmzEsSBiaXIgw6dhbMSxxZ9tYSBvcnRhbcSxZMSxci4iLCJSdWxlLnRleHQxMCI6IlBlcnNvbmVsIGhlciBnw7xuIG1vbGEgc8SxcmFzxLFuZGEgdMO8Y2NhcmxhciBpw6dpbiBidXJheWEgZ2VsZWJpbGlyLiIsIlJ1bGUudGV4dDExIjoiw5xyw7xuIHNpcGFyacWfIGt1cmFsbGFyxLFuxLEgdGFraXAgZXR0acSfaW5peiBzw7xyZWNlLCBidSBzaXplIGTDvHplbmxpIGJpciBnZWxpciBzYcSfbGF5YWNha3TEsXIuIiwiQWJvdXQudGl0bGUiOiJIYWtrxLFtxLF6ZGEiLCJBYm91dC50ZXh0MSI6Ikhha2vEsW3EsXpkYSBUaWsgVG9rIG1hxJ9hemEgYsO8ecO8bWUgcGF6YXJsYW1hIMWfaXJrZXRpZGlyLiIsIkFib3V0LnRleHQyIjoiTcO8xZ90ZXJpIMWfaXJrZXRsZXJpbmluIGdlbGlyaW5pIGFydMSxcm1heWEgYWRhbm3EscWfIGLDvHnDvG1lIHBhemFybGFtYSwgcGF6YXJsYW1hIHNvbnXDp2xhcsSxbsSxIHRhaG1pbiBlZGlsZWJpbGlyIHZlIG1ha3NpbWl6ZSBldG1layBpw6dpbiB2ZXJpIHZlIGRpaml0YWwgecO2bnRlbWxlciBrdWxsYW7EsXIuIiwiQWJvdXQudGV4dDMiOiJQYXphcmxhbWEgaGFyY2FtYWxhcsSxbsSxesSxIHRhaG1pbiBlZGlsZW1leWVuIGJpciBwbGFuYSBoYXJjYW1ha3RhbiBrdXJ0YXLEsW4gdmUgbWluaW1hbCBoYXJjYW1hbGFybGEgeWF0xLFyxLFtIGdldGlyaXNpbmkgYXJ0xLFyxLFuLiBZZW5pIHBhemFybGFtYSB5w7ZudGVtaSwgxZ9pcmtldGluaXppbiBrdcWfYXRtYXnEsSB5YXJtYXPEsW5hIHZlIHBpeWFzYSBrYXLFn8Sxc8SxbmRhIGLDvHnDvG1lc2luZSBpemluIHZlcmlyLiIsIkFib3V0LnRleHQ0IjoiVGlrIFRvayBtYcSfYXphbsSxbiDDp8O2emViaWxlY2XEn2kgcHJvYmxlbWxlcjogVXlndWxhbWEgYmHFn2xhdMSxbGTEsWt0YW4gc29ucmEgZXRraXNpIG9sbWF6LCBkb8SfYWwga3VsbGFuxLFjxLFsYXIgw6dvayBhemTEsXIuIiwiQWJvdXQudGV4dDUiOiJEw7zFn8O8ayBzxLFyYWxhbWE6IFPEsXJhbGFtYWRhIGlsayDDvMOnIGFuYWh0YXIga2VsaW1lIHlva3R1ciB2ZSBwb3RhbnNpeWVsIG3DvMWfdGVyaWxlciB1eWd1bGFtYXnEsSBidWxhbWF6bGFyLiBEw7zFn8O8ayBrYXBzYW1hOiBVeWd1bGFtYW7EsW4gZ2VuZWwgYcSfxLFybMSxxJ/EsSBkw7zFn8O8a3TDvHIsIGJ1IGRhIGvDtnTDvCBhbmFodGFyIGtlbGltZSBrYXBzYW3EsW5hIHlvbCBhw6dhci4iLCJBYm91dC50ZXh0NiI6IlnDvGtzZWsgbWFsaXlldDogVGVrbGlmIGFuYWh0YXIga2VsaW1lIHllcmxlxZ90aXJtZSBtYWxpeWV0aSB5w7xrc2VrdGlyLiIsIlN0YXJ0aW5nLmJhbGFuY2UiOiJNZXZjdXQgYmFraXllIiwiU3RhcnRpbmcuaW5jb21lIjoiVG9wbGFtIEdlbGlyIiwiU3RhcnRpbmcub3JkZXIudGl0bGUiOiJSZXplcnZhc3lvbiB0YW1hbWxhbmTEsSEiLCJTdGFydGluZy5zdWJtaXQuYnV0dG9uIjoiT3RvbWF0aWsgZcWfbGXFn3Rpcm1lIiwiU3RhcnRpbmcuc3RlcHMiOiJBZMSxbWxhciIsIlN0YXJ0aW5nLnN0ZXBzMSI6JyJPdG9tYXRpayBlxZ9sZcWfdGlyIiBkw7zEn21lc2luZSB0xLFrbGF5xLFuIHZlIHRhbGltYXRsYXLEsSBpemxleWVyZWsgZ8O2cmV2aSB0YW1hbWxhecSxbi4nLCJTdGFydGluZy5zdGVwczIiOiJHw7ZyZXZpIHRhbWFtbGFkxLFrdGFuIHNvbnJhIGtvbWlzeW9udSBiYWtpeWV5ZSBha3RhcmFiaWxpcnNpbml6LiIsIkFjY291bnQuaW5kZXgucGhvbmUiOiJUZWxlZm9uIiwiQWNjb3VudC5pbmRleC5pbnZpdGVfY29kZSI6IkRhdmV0IGtvZHUiLCJBY2NvdW50LmluZGV4LmJhbGFuY2UiOiJCYWtpeWUiLCJBY2NvdW50LmluZGV4LnJlY2hhcmdlIjoiWcO8a2xlbWUiLCJBY2NvdW50LmluZGV4LndpdGhkcmF3YWwiOiLDh2VrbWUiLCJBY2NvdW50LmluZGV4LnNlcnZpY2VzIjoiSGl6bWV0bGVyIiwiQWNjb3VudC5pbmRleC5kZXRhaWxlZCI6IkRldGF5bMSxIiwiQWNjb3VudC5pbmRleC53YWxsZXQiOiJDw7x6ZGFuIiwiQWNjb3VudC5pbmRleC5wYXNzd29yZCI6IsWeaWZyZSIsIkFjY291bnQuaW5kZXgucGF5bWVudCI6IsOWZGVtZSIsIkFjY291bnQuaW5kZXgucnVsZSI6Ikt1cmFsIiwiQWNjb3VudC5pbmRleC5hYm91dCI6Ikhha2vEsW3EsXpkYSIsIkFjY291bnQuaW5kZXgubG9nb3V0Ijoiw4fEsWvEscWfIiwiQWNjb3VudC5pbmRleC5tZXNzYWdlIjoixLBsZXRpIiwiTG9naW4udGl0bGUiOiJHaXJpxZ8iLCJMb2dpbi50aXBzIjoiTMO8dGZlbiBoZXNhYsSxbsSxemEgZ2lyacWfIHlhcMSxbiIsIkxvZ2luLmVudGVyLnBob25lIjoiTMO8dGZlbiB0ZWxlZm9uIG51bWFyYXPEsW7EsSBnaXJpbiIsIkxvZ2luLmVudGVyLnBhc3N3b3JkIjoiTMO8dGZlbiDFn2lmcmV5aSBnaXJpbiIsIkxvZ2luLmZvcmdldCI6IsWeaWZyZW5pemkgbWkgdW51dHR1bnV6PyIsIkxvZ2luLnJlZ2lzdGVyIjoixZ5pbWRpIGtheWRvbHVuIiwiUmVnaXN0ZXIudGl0bGUiOiJLYXnEsXQiLCJSZWdpc3Rlci50aXBzIjoiWmF0ZW4gYmlyIGhlc2FixLFuxLF6IHZhciBtxLE/IiwiUmVnaXN0ZXIuZW50ZXIucGhvbmUiOiJMw7x0ZmVuIHRlbGVmb24gbnVtYXJhc8SxbsSxIGdpcmluIiwiUmVnaXN0ZXIuZW50ZXIucGFzc3dvcmQiOiJMw7x0ZmVuIMWfaWZyZXlpIGdpcmluIiwiUmVnaXN0ZXIuZW50ZXIucGF5LnBhc3N3b3JkIjoiTMO8dGZlbiA2IGhhbmVsaSDDtmRlbWUgxZ9pZnJlc2luaSBnaXJpbiIsIlJlZ2lzdGVyLmVudGVyLmludml0ZV9jb2RlIjoiTMO8dGZlbiBkYXZldCBrb2R1bnUgZ2lyaW4iLCJSZWdpc3Rlci5yZWFkIjoiT2t1ZHVtIHZlIGthYnVsIGVkaXlvcnVtIiwiUmVnaXN0ZXIucHJpdmFjeSI6ImdpemxpbGlrIHPDtnpsZcWfbWVzaSIsIlJlZ2lzdGVyLmFncmVlIjoiTMO8dGZlbiBnaXpsaWxpayBzw7Z6bGXFn21lc2luaSBva3V5dW4gdmUga2FidWwgZWRpbiJ9fX0pOw=="}},"time_used":1002,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":633,"receive":369,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"ultradns","sensor_type":"DNS","title":"DigiCert UltraDNS","description":"DigiCert UltraDNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://vercara.digicert.com/ultra-dns-public","meta":null},{"sensor_name":"cira_dns","sensor_type":"DNS","title":"CIRA Canadian Shield DNS","description":"CIRA Canadian Shield DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cira.ca/en/canadian-shield/","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2026-07-27","alert":"Phishing Block","trigger":"conversemy.today","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"conversemy.today/","fqdn":"conversemy.today","domain":"conversemy.today","tld":"today"},"ip":{"addr":"172.67.186.159","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T14:04:56.203Z","timestamp":1785161096203,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"conversemy.today","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Wed, 03 Jun 2026 13:05:53 GMT","end":"Tue, 01 Sep 2026 14:04:34 GMT"},"fingerprint":{"sha1":"DA:07:CF:C0:8B:27:11:C8:01:8C:18:C7:9A:48:45:36:4D:57:CB:22","sha256":"60:34:7C:18:C1:93:C0:94:5E:DB:6D:FA:42:1F:5A:C2:1B:A1:BB:ED:FF:58:B3:04:61:FB:A1:74:11:43:EB:02"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: conversemy.today\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nUpgrade-Insecure-Requests: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 302 \r\nserver: cloudflare\r\ndate: Mon, 27 Jul 2026 14:04:56 GMT\r\ncontent-type: text/html; charset=utf-8\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=0,i\r\naccess-control-allow-origin: *\r\naccess-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS\r\naccess-control-allow-headers: X-Requested-With, Content-Type, Accept, Authorization, User_id\r\naccess-control-allow-credentials: true\r\nlocation: /h5\r\ncache-control: no-cache,must-revalidate, no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0\r\nset-cookie: think_lang=en-us; path=/\nPHPSESSID=471a1719effa18edc02fec5b29d1e4e3; expires=Tue, 28-Jul-2026 14:04:56 GMT; Max-Age=86400; path=/\r\nstrict-transport-security: max-age=31536000\r\npragma: no-cache\r\nexpires: 0\r\ncf-cache-status: DYNAMIC\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=npMyfLEQ6ztBL5i2jcLrT3WEqNFsC1u9SYKBZXZYGDd0a9fZTdVhtQu%2BFTY2dm0KA1G5fqC9GC4RPz9EC33Do1%2FdTf06ghViV7t6E0wyRjMfkpdagmrlRxefTktDYbw0LoQM\"}]}\r\ncf-ray: a21c3233dcc4723c-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"302","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":0,"size_decoded":0,"mime_type":"text/html","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T15:44:24.156062Z","times_seen":17565629,"resource_available":true,"data":null}},"time_used":639,"timings":{"blocked":-1,"dns":75,"connect":15,"send":0,"wait":548,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"cira_dns","sensor_type":"DNS","title":"CIRA Canadian Shield DNS","description":"CIRA Canadian Shield DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cira.ca/en/canadian-shield/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2026-07-27","alert":"Phishing Block","trigger":"conversemy.today","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null},{"sensor_name":"ultradns","sensor_type":"DNS","title":"DigiCert UltraDNS","description":"DigiCert UltraDNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://vercara.digicert.com/ultra-dns-public","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"conversemy.today/h5","fqdn":"conversemy.today","domain":"conversemy.today","tld":"today"},"ip":{"addr":"172.67.186.159","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T14:04:56.851Z","timestamp":1785161096851,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"conversemy.today","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Wed, 03 Jun 2026 13:05:53 GMT","end":"Tue, 01 Sep 2026 14:04:34 GMT"},"fingerprint":{"sha1":"DA:07:CF:C0:8B:27:11:C8:01:8C:18:C7:9A:48:45:36:4D:57:CB:22","sha256":"60:34:7C:18:C1:93:C0:94:5E:DB:6D:FA:42:1F:5A:C2:1B:A1:BB:ED:FF:58:B3:04:61:FB:A1:74:11:43:EB:02"}}},"request":{"raw":"GET /h5 HTTP/1.1\r\nHost: conversemy.today\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: think_lang=en-us; PHPSESSID=471a1719effa18edc02fec5b29d1e4e3\r\nUpgrade-Insecure-Requests: 1\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 301 \r\nserver: cloudflare\r\ndate: Mon, 27 Jul 2026 14:04:57 GMT\r\ncontent-type: text/html\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=0,i\r\nlocation: http://conversemy.today/h5/\r\nstrict-transport-security: max-age=31536000\r\ncache-control: no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0\r\npragma: no-cache\r\nexpires: 0\r\ncf-cache-status: DYNAMIC\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=YqXBTKFQFGVUug569gNpSq96G80p61eUaXZ6GtpM%2FHfalsjsnIQ0zaUQxtdMa13%2BxOG2F11FglHGXPVWSii8lO2gKXPOD5y4B555sONUD01GTO5Wad3nyTT%2Fw7TlP60cyZuD\"}]}\r\ncf-ray: a21c32375d48723c-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"301","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":0,"size_decoded":0,"mime_type":"text/html","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T15:44:24.156062Z","times_seen":17565629,"resource_available":true,"data":null}},"time_used":540,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":540,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"ultradns","sensor_type":"DNS","title":"DigiCert UltraDNS","description":"DigiCert UltraDNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://vercara.digicert.com/ultra-dns-public","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2026-07-27","alert":"Phishing Block","trigger":"conversemy.today","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cira_dns","sensor_type":"DNS","title":"CIRA Canadian Shield DNS","description":"CIRA Canadian Shield DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cira.ca/en/canadian-shield/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"conversemy.today/h5/","fqdn":"conversemy.today","domain":"conversemy.today","tld":"today"},"ip":{"addr":"172.67.186.159","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T14:04:57.398Z","timestamp":1785161097398,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"conversemy.today","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Wed, 03 Jun 2026 13:05:53 GMT","end":"Tue, 01 Sep 2026 14:04:34 GMT"},"fingerprint":{"sha1":"DA:07:CF:C0:8B:27:11:C8:01:8C:18:C7:9A:48:45:36:4D:57:CB:22","sha256":"60:34:7C:18:C1:93:C0:94:5E:DB:6D:FA:42:1F:5A:C2:1B:A1:BB:ED:FF:58:B3:04:61:FB:A1:74:11:43:EB:02"}}},"request":{"raw":"GET /h5/ HTTP/1.1\r\nHost: conversemy.today\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nUpgrade-Insecure-Requests: 1\r\nConnection: keep-alive\r\nCookie: think_lang=en-us; PHPSESSID=471a1719effa18edc02fec5b29d1e4e3\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\nserver: cloudflare\r\ndate: Mon, 27 Jul 2026 14:04:57 GMT\r\ncontent-type: text/html\r\ncontent-encoding: zstd\r\npriority: u=0,i\r\nlast-modified: Sun, 19 Oct 2025 01:09:46 GMT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=U5HwKXGKmihkgSrbhUppfrRRugnoTVl6SyUP5n4qvEUPKqGM4XvrHsebfkRWgCnPAiMbkwe98IJIyiIZyBcaYU%2BDUJ1fLYfnSDhO%2FLa%2BwDe%2Fvmx6lt6Oemhb2k97Nh3OY37P\"}]}\r\nstrict-transport-security: max-age=31536000\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncache-control: no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0\r\npragma: no-cache\r\nexpires: 0\r\ncf-cache-status: DYNAMIC\r\ncf-ray: a21c323abdbf723c-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":910,"size_decoded":1326,"mime_type":"text/html","magic":"HTML document, ASCII text, with very long lines (618), with CRLF line terminators","md5":"db376b9896dee197983d45eae7e9fe83","sha1":"6683545d5d7ff448e4ef49e5ef97172622b786eb","sha256":"ea66ed2632a8ea34714cb0b850cf44378503674b59bab86bdc3f7b8dd4c64383","sha512":"64685b9c422abef40aecc4e094c84771561122f994f3afe141cafd9a6a73983349afbe4eb6196aec047414142a8348d02f542eeb193879ba7aa09b18b320e5d2","ssdeep":"","tlshash":"7511c0c25c60a50d175085d160b7e11e59ea18b9e990dd6078dc66ad4bb07cecd6f814","first_seen":"2025-11-29T15:08:30.884373Z","last_seen":"2026-07-27T14:05:33.337314Z","times_seen":8,"resource_available":false,"data":"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iemgtQ04iPjxoZWFkPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPjx0aXRsZT5UaWtUb2sgU2hvcDwvdGl0bGU+PHNjcmlwdD52YXIgY292ZXJTdXBwb3J0ID0gJ0NTUycgaW4gd2luZG93ICYmIHR5cGVvZiBDU1Muc3VwcG9ydHMgPT09ICdmdW5jdGlvbicgJiYgKENTUy5zdXBwb3J0cygndG9wOiBlbnYoYSknKSB8fCBDU1Muc3VwcG9ydHMoJ3RvcDogY29uc3RhbnQoYSknKSkNCiAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCc8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCB1c2VyLXNjYWxhYmxlPW5vLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIG1pbmltdW0tc2NhbGU9MS4wJyArIChjb3ZlclN1cHBvcnQgPyAnLCB2aWV3cG9ydC1maXQ9Y292ZXInIDogJycpICsgJyIgLz4nKTwvc2NyaXB0PjxzY3JpcHQgc3JjPSJodHRwczovL3VucGtnLmJ5dGVkLXN0YXRpYy5jb20veGdwbGF5ZXIvMi4zMS4yL2Jyb3dzZXIvaW5kZXguanMiPjwvc2NyaXB0PjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2g1L3N0YXRpYy9pbmRleC44ODMxMzBjYS5jc3MiPjwvaGVhZD48Ym9keT48bm9zY3JpcHQ+PHN0cm9uZz5QbGVhc2UgZW5hYmxlIEphdmFTY3JpcHQgdG8gY29udGludWUuPC9zdHJvbmc+PC9ub3NjcmlwdD48dmlldyBpZD0iYXBwIj48L3ZpZXc+PHNjcmlwdCBzcmM9Ii9oNS9qcy9jaHVuay12ZW5kb3JzLmQzMThkY2IwN2NmOTM4MzkxYjFiLmpzIj48L3NjcmlwdD48c2NyaXB0IHNyYz0iL2g1L2pzL2luZGV4LmQzMThkY2IwN2NmOTM4MzkxYjFiLmpzIj48L3NjcmlwdD48L2JvZHk+PC9odG1sPg=="}},"time_used":317,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":317,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"ultradns","sensor_type":"DNS","title":"DigiCert UltraDNS","description":"DigiCert UltraDNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://vercara.digicert.com/ultra-dns-public","meta":null},{"sensor_name":"cira_dns","sensor_type":"DNS","title":"CIRA Canadian Shield DNS","description":"CIRA Canadian Shield DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cira.ca/en/canadian-shield/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2026-07-27","alert":"Phishing Block","trigger":"conversemy.today","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"unpkg.byted-static.com/xgplayer/2.31.2/browser/index.js","fqdn":"unpkg.byted-static.com","domain":"byted-static.com","tld":"com"},"ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://conversemy.today/h5/","date":"2026-07-27T14:04:58.117Z","timestamp":1785161098117,"http_version":"","security_state":"","security_info":null,"request":{"raw":"GET /xgplayer/2.31.2/browser/index.js HTTP/1.1\r\nHost: unpkg.byted-static.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://conversemy.today/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"","headers":null,"cookies":null,"status_code":"","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T15:44:24.156062Z","times_seen":17565629,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"conversemy.today/h5/static/index.883130ca.css","fqdn":"conversemy.today","domain":"conversemy.today","tld":"today"},"ip":{"addr":"172.67.186.159","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://conversemy.today/h5/","date":"2026-07-27T14:04:58.125Z","timestamp":1785161098125,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"conversemy.today","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Wed, 03 Jun 2026 13:05:53 GMT","end":"Tue, 01 Sep 2026 14:04:34 GMT"},"fingerprint":{"sha1":"DA:07:CF:C0:8B:27:11:C8:01:8C:18:C7:9A:48:45:36:4D:57:CB:22","sha256":"60:34:7C:18:C1:93:C0:94:5E:DB:6D:FA:42:1F:5A:C2:1B:A1:BB:ED:FF:58:B3:04:61:FB:A1:74:11:43:EB:02"}}},"request":{"raw":"GET /h5/static/index.883130ca.css HTTP/1.1\r\nHost: conversemy.today\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://conversemy.today/h5/\r\nCookie: think_lang=en-us; PHPSESSID=471a1719effa18edc02fec5b29d1e4e3\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\nserver: cloudflare\r\ndate: Mon, 27 Jul 2026 14:04:58 GMT\r\ncontent-type: text/css\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding, Accept-Encoding\r\nlast-modified: Sun, 19 Oct 2025 01:09:46 GMT\r\netag: W/\"68f43a5a-1793e\"\r\nstrict-transport-security: max-age=31536000\r\ncache-control: no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0\r\npragma: no-cache\r\nexpires: 0\r\ncontent-encoding: gzip\r\ncf-cache-status: BYPASS\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=vAfNdBTuNMxtv4F96C9k651oaNz8KR1vel6V%2FkdCpu8ITNsV2H0%2FKNkXIwEg8yIabntd5aLN2cZBMeSzpFcBdqqMJ934kc2Lgw8KQW2PrKJuuD0delrtDSnmkYhhTg2UPGhC\"}]}\r\ncf-ray: a21c323f4eb8723c-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":96574,"size_decoded":27334,"mime_type":"text/css","magic":"ASCII text, with very long lines (65536), with no line terminators","md5":"2de2f2d3943b4b382a28a439daff5939","sha1":"70d04e1c3567cb4f248b29046b98386f215a4d38","sha256":"8a35934d019c2b120a31ae6c51c75b2327f22637824b2a2c2faf4ce17ae9d4d8","sha512":"eba9271e30d6e4b21954078e3ccd839a55e1dcc8212fa375c18dce42104d19a92655c2f289401525b0c9565971a31573b928666515a3ca89b1801bbd48c1de95","ssdeep":"1536:OlIApuK7hmVmb2RS1Wu3xdynGJ7eh/nrhlvbc:VApuK7hmVrS1Wu3iG41nrPI","tlshash":"f393f73719012e39e52bcd26b6c1ab5a1e61c033e15307adfba47628cbcf9c9167b345","first_seen":"2025-07-20T12:48:29.443135Z","last_seen":"2026-07-27T15:47:18.019647Z","times_seen":2851,"resource_available":false,"data":"dW5pLXRhYmJhcntkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlO3otaW5kZXg6OTk4fXVuaS10YWJiYXIgLnVuaS10YWJiYXJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7ei1pbmRleDo5OTg7Ym94LXNpemluZzpib3JkZXItYm94fXVuaS10YWJiYXIudW5pLXRhYmJhci1ib3R0b20sdW5pLXRhYmJhci51bmktdGFiYmFyLWJvdHRvbSAudW5pLXRhYmJhcix1bmktdGFiYmFyLnVuaS10YWJiYXItdG9wLHVuaS10YWJiYXIudW5pLXRhYmJhci10b3AgLnVuaS10YWJiYXJ7cG9zaXRpb246Zml4ZWQ7bGVmdDp2YXIoLS13aW5kb3ctbGVmdCk7cmlnaHQ6dmFyKC0td2luZG93LXJpZ2h0KX0udW5pLWFwcC0tc2hvd2xheW91dCt1bmktdGFiYmFyLnVuaS10YWJiYXItYm90dG9tLC51bmktYXBwLS1zaG93bGF5b3V0K3VuaS10YWJiYXIudW5pLXRhYmJhci1ib3R0b20gLnVuaS10YWJiYXIsLnVuaS1hcHAtLXNob3dsYXlvdXQrdW5pLXRhYmJhci51bmktdGFiYmFyLXRvcCwudW5pLWFwcC0tc2hvd2xheW91dCt1bmktdGFiYmFyLnVuaS10YWJiYXItdG9wIC51bmktdGFiYmFye2xlZnQ6dmFyKC0td2luZG93LW1hcmdpbik7cmlnaHQ6dmFyKC0td2luZG93LW1hcmdpbil9dW5pLXRhYmJhci51bmktdGFiYmFyLWJvdHRvbSAudW5pLXRhYmJhcntib3R0b206MDtwYWRkaW5nLWJvdHRvbTowO3BhZGRpbmctYm90dG9tOmNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO3BhZGRpbmctYm90dG9tOmVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKX11bmktdGFiYmFyIC51bmktdGFiYmFyfi51bmktcGxhY2Vob2xkZXJ7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjA7bWFyZ2luLWJvdHRvbTpjb25zdGFudChzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTttYXJnaW4tYm90dG9tOmVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKX11bmktdGFiYmFyIC51bmktdGFiYmFyICp7Ym94LXNpemluZzpib3JkZXItYm94fXVuaS10YWJiYXIgLnVuaS10YWJiYXJfX2l0ZW17LXdlYmtpdC1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uOy13ZWJraXQtYm94LWZsZXg6MTstd2Via2l0LWZsZXg6MTtmbGV4OjE7Zm9udC1zaXplOjA7dGV4dC1hbGlnbjpjZW50ZXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCl9dW5pLXRhYmJhciAudW5pLXRhYmJhcl9fYmQsdW5pLXRhYmJhciAudW5pLXRhYmJhcl9faXRlbXtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstd2Via2l0LWp1c3RpZnktY29udGVudDpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LXdlYmtpdC1hbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsfXVuaS10YWJiYXIgLnVuaS10YWJiYXJfX2Jke3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtjdXJzb3I6cG9pbnRlcn11bmktdGFiYmFyIC51bmktdGFiYmFyX19pY29ue3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6NXB4fXVuaS10YWJiYXIgLnVuaS10YWJiYXJfX2ljb24udW5pLXRhYmJhcl9faWNvbl9fZGlmZnttYXJnaW4tdG9wOjA7d2lkdGg6MzRweDtoZWlnaHQ6MzRweH11bmktdGFiYmFyIC51bmktdGFiYmFyX19pY29uIGltZ3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlfXVuaS10YWJiYXIgLnVuaS10YWJiYXJfX2ljb25mb250e2ZvbnQtZmFtaWx5OlVuaVRhYmJhckljb25Gb250fXVuaS10YWJiYXIgLnVuaS10YWJiYXJfX2xhYmVse3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMHB4fXVuaS10YWJiYXIgLnVuaS10YWJiYXItYm9yZGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt3aWR0aDoxMDAlO2hlaWdodDoxcHg7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVZKC41KTt0cmFuc2Zvcm06c2NhbGVZKC41KX11bmktdGFiYmFyIC51bmktdGFiYmFyX19yZWRkb3R7cG9zaXRpb246YWJzb2x1dGU7dG9wOjJweDtyaWdodDowO3dpZHRoOjEycHg7aGVpZ2h0OjEycHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZC1jb2xvcjojZjQzNTMwO2NvbG9yOiNmZmY7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDQwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSg0MCUpfXVuaS10YWJiYXIgLnVuaS10YWJiYXJfX2JhZGdle3dpZHRoOmF1dG87aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweDtib3JkZXItcmFkaXVzOjE2cHg7bWluLXdpZHRoOjE2cHg7cGFkZGluZzowIDJweDtmb250LXNpemU6MTJweDt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9dW5pLXRhYmJhciAudW5pLXRhYmJhcl9fbWlkey13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy13ZWJraXQtanVzdGlmeS1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9dW5pLWNvbnRlbnQsdW5pLXRhYmJhciAudW5pLXRhYmJhcl9fbWlke2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4fXVuaS1jb250ZW50ey13ZWJraXQtYm94LWZsZXg6MTstd2Via2l0LWZsZXg6MSAwIGF1dG87ZmxleDoxIDAgYXV0bztoZWlnaHQ6MTAwJX11bmktbWFpbnstd2Via2l0LWJveC1mbGV4OjE7LXdlYmtpdC1mbGV4OjE7ZmxleDoxO3dpZHRoOjEwMCV9dW5pLXRvcC13aW5kb3crdW5pLWNvbnRlbnR7aGVpZ2h0OmNhbGMoMTAwdmggLSB2YXIoLS10b3Atd2luZG93LWhlaWdodCkpfXVuaS1sZWZ0LXdpbmRvd3t3aWR0aDp2YXIoLS13aW5kb3ctbGVmdCk7LXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDowOy13ZWJraXQtb3JkZXI6LTE7b3JkZXI6LTF9dW5pLWxlZnQtd2luZG93LHVuaS1yaWdodC13aW5kb3d7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3cteDpoaWRkZW59dW5pLXJpZ2h0LXdpbmRvd3t3aWR0aDp2YXIoLS13aW5kb3ctcmlnaHQpfXVuaS1sZWZ0LXdpbmRvd1tkYXRhLXNob3ddLHVuaS1yaWdodC13aW5kb3dbZGF0YS1zaG93XXtwb3NpdGlvbjphYnNvbHV0ZX11bmktcmlnaHQtd2luZG93W2RhdGEtc2hvd117cmlnaHQ6MH0udW5pLWxlZnQtd2luZG93LC51bmktcmlnaHQtd2luZG93LHVuaS1jb250ZW50IC51bmktbWFza3t6LWluZGV4Ojk5N30udW5pLW1hc2srLnVuaS1sZWZ0LXdpbmRvdywudW5pLW1hc2srLnVuaS1yaWdodC13aW5kb3d7cG9zaXRpb246Zml4ZWR9LnVuaS10b3Atd2luZG93e3Bvc2l0aW9uOmZpeGVkO2xlZnQ6dmFyKC0td2luZG93LW1hcmdpbik7cmlnaHQ6dmFyKC0td2luZG93LW1hcmdpbik7dG9wOjA7ei1pbmRleDo5OTg7b3ZlcmZsb3c6aGlkZGVufXVuaS10b2FzdHtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt6LWluZGV4Ojk5OTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb2ludGVyLWV2ZW50czpub25lO2ZvbnQtc2l6ZToxNnB4fXVuaS10b2FzdCAudW5pLXNhbXBsZS10b2FzdHtwb3NpdGlvbjpmaXhlZDt6LWluZGV4Ojk5OTt0b3A6NTAlO2xlZnQ6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt0ZXh0LWFsaWduOmNlbnRlcjttYXgtd2lkdGg6ODAlfXVuaS10b2FzdCAudW5pLXNpbXBsZS10b2FzdF9fdGV4dHtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTcsMTcsMTcsLjcpO3BhZGRpbmc6MTBweCAyMHB4O2JvcmRlci1yYWRpdXM6NXB4O2ZvbnQtc2l6ZToxM3B4O3RleHQtYWxpZ246Y2VudGVyO21heC13aWR0aDoxMDAlO3dvcmQtYnJlYWs6YnJlYWstd29yZDt3aGl0ZS1zcGFjZTpub3JtYWx9dW5pLXRvYXN0IC51bmktbWFza3twb2ludGVyLWV2ZW50czphdXRvfXVuaS10b2FzdCAudW5pLXRvYXN0e3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5O3dpZHRoOjhlbTt0b3A6NTAlO2xlZnQ6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTtiYWNrZ3JvdW5kOnJnYmEoMTcsMTcsMTcsLjcpO3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci1yYWRpdXM6NXB4O2NvbG9yOiNmZmZ9dW5pLXRvYXN0IC51bmktdG9hc3QgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9dW5pLXRvYXN0IC51bmktdG9hc3RfX2ljb257bWFyZ2luOjIwcHggMCAwO3dpZHRoOjM4cHg7aGVpZ2h0OjM4cHg7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9dW5pLXRvYXN0IC51bmktaWNvbl90b2FzdHttYXJnaW46MTVweCAwIDB9dW5pLXRvYXN0IC51bmktaWNvbl90b2FzdC51bmktaWNvbi1zdWNjZXNzLW5vLWNpcmNsZTpiZWZvcmV7Y29sb3I6I2ZmZjtmb250LXNpemU6NTVweH11bmktdG9hc3QgLnVuaS1pY29uX3RvYXN0LnVuaS1pY29uLWVycm9yOmJlZm9yZXtjb2xvcjojZmZmO2ZvbnQtc2l6ZTo1MHB4fXVuaS10b2FzdCAudW5pLWljb25fdG9hc3QudW5pLWxvYWRpbmd7bWFyZ2luOjIwcHggMCAwO3dpZHRoOjM4cHg7aGVpZ2h0OjM4cHg7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9dW5pLXRvYXN0IC51bmktdG9hc3RfX2NvbnRlbnR7bWFyZ2luOjAgMCAxNXB4fXVuaS1tb2RhbHtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt6LWluZGV4Ojk5OTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH11bmktbW9kYWwgLnVuaS1tb2RhbHtwb3NpdGlvbjpmaXhlZDt6LWluZGV4Ojk5OTt3aWR0aDo4MCU7bWF4LXdpZHRoOjMwMHB4O3RvcDo1MCU7bGVmdDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO2JhY2tncm91bmQtY29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItcmFkaXVzOjNweDtvdmVyZmxvdzpoaWRkZW59dW5pLW1vZGFsIC51bmktbW9kYWwgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9dW5pLW1vZGFsIC51bmktbW9kYWxfX2hke3BhZGRpbmc6MWVtIDEuNmVtIC4zZW19dW5pLW1vZGFsIC51bmktbW9kYWxfX3RpdGxle2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MThweDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtbGluZS1jbGFtcDoyOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbH11bmktbW9kYWwgLnVuaS1tb2RhbF9fYmQsdW5pLW1vZGFsIC51bmktbW9kYWxfX3RpdGxle3dvcmQtd3JhcDpicmVhay13b3JkO3dvcmQtYnJlYWs6YnJlYWstYWxsO3doaXRlLXNwYWNlOnByZS13cmFwfXVuaS1tb2RhbCAudW5pLW1vZGFsX19iZHtwYWRkaW5nOjEuM2VtIDEuNmVtIDEuM2VtO21pbi1oZWlnaHQ6NDBweDtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxLjQ7Y29sb3I6Izk5OTttYXgtaGVpZ2h0OjQwMHB4O292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6YXV0b311bmktbW9kYWwgLnVuaS1tb2RhbF9fdGV4dGFyZWF7cmVzaXplOm5vbmU7Ym9yZGVyOjA7bWFyZ2luOjA7d2lkdGg6OTAlO3BhZGRpbmc6MTBweDtmb250LXNpemU6MjBweDtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZWVlO3RleHQtZGVjb3JhdGlvbjppbmhlcml0fXVuaS1tb2RhbCAudW5pLW1vZGFsX19mdHtwb3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdodDo0OHB4O2ZvbnQtc2l6ZToxOHB4O2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4fXVuaS1tb2RhbCAudW5pLW1vZGFsX19mdDphZnRlcntjb250ZW50OiIgIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7cmlnaHQ6MDtoZWlnaHQ6MXB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkNWQ1ZDY7Y29sb3I6I2Q1ZDVkNjstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCAwO3RyYW5zZm9ybS1vcmlnaW46MCAwOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlWSguNSk7dHJhbnNmb3JtOnNjYWxlWSguNSl9dW5pLW1vZGFsIC51bmktbW9kYWxfX2J0bntkaXNwbGF5OmJsb2NrOy13ZWJraXQtYm94LWZsZXg6MTstd2Via2l0LWZsZXg6MTtmbGV4OjE7Y29sb3I6IzNjYzUxZjt0ZXh0LWRlY29yYXRpb246bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTtwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6cG9pbnRlcn11bmktbW9kYWwgLnVuaS1tb2RhbF9fYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9dW5pLW1vZGFsIC51bmktbW9kYWxfX2J0bjphZnRlcntjb250ZW50OiIgIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7d2lkdGg6MXB4O2JvdHRvbTowO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZDVkNWQ2O2NvbG9yOiNkNWQ1ZDY7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2Zvcm0tb3JpZ2luOjAgMDstd2Via2l0LXRyYW5zZm9ybTpzY2FsZVgoLjUpO3RyYW5zZm9ybTpzY2FsZVgoLjUpfXVuaS1tb2RhbCAudW5pLW1vZGFsX19idG46Zmlyc3QtY2hpbGQ6YWZ0ZXJ7ZGlzcGxheTpub25lfXVuaS1tb2RhbCAudW5pLW1vZGFsX19idG5fZGVmYXVsdHtjb2xvcjojMzUzNTM1fXVuaS1tb2RhbCAudW5pLW1vZGFsX19idG5fcHJpbWFyeXtjb2xvcjojMDA3YWZmfXVuaS1hY3Rpb25zaGVldHtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH11bmktYWN0aW9uc2hlZXQgLnVuaS1hY3Rpb25zaGVldHtwb3NpdGlvbjpmaXhlZDtsZWZ0OjZweDtyaWdodDo2cHg7Ym90dG9tOjZweDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpOy13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47ei1pbmRleDo5OTk7dmlzaWJpbGl0eTpoaWRkZW47LXdlYmtpdC10cmFuc2l0aW9uOnZpc2liaWxpdHkgLjNzLC13ZWJraXQtdHJhbnNmb3JtIC4zczt0cmFuc2l0aW9uOnZpc2liaWxpdHkgLjNzLC13ZWJraXQtdHJhbnNmb3JtIC4zczt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MsdmlzaWJpbGl0eSAuM3M7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzLHZpc2liaWxpdHkgLjNzLC13ZWJraXQtdHJhbnNmb3JtIC4zc311bmktYWN0aW9uc2hlZXQgLnVuaS1hY3Rpb25zaGVldC51bmktYWN0aW9uc2hlZXRfdG9nZ2xle3Zpc2liaWxpdHk6dmlzaWJsZTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX11bmktYWN0aW9uc2hlZXQgLnVuaS1hY3Rpb25zaGVldCAqe2JveC1zaXppbmc6Ym9yZGVyLWJveH11bmktYWN0aW9uc2hlZXQgLnVuaS1hY3Rpb25zaGVldF9fYWN0aW9uLHVuaS1hY3Rpb25zaGVldCAudW5pLWFjdGlvbnNoZWV0X19tZW51e2JvcmRlci1yYWRpdXM6NXB4O2JhY2tncm91bmQtY29sb3I6I2ZjZmNmZH11bmktYWN0aW9uc2hlZXQgLnVuaS1hY3Rpb25zaGVldF9fYWN0aW9ue21hcmdpbi10b3A6NnB4fXVuaS1hY3Rpb25zaGVldCAudW5pLWFjdGlvbnNoZWV0X19jZWxsLHVuaS1hY3Rpb25zaGVldCAudW5pLWFjdGlvbnNoZWV0X190aXRsZXtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjEwcHggNnB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxOHB4O3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7b3ZlcmZsb3c6aGlkZGVuO2N1cnNvcjpwb2ludGVyfXVuaS1hY3Rpb25zaGVldCAudW5pLWFjdGlvbnNoZWV0X190aXRsZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO2xlZnQ6MDt6LWluZGV4OjE7Y29sb3I6dmFyKC0tVUktRkcpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjVweCA1cHggMCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTV9dW5pLWFjdGlvbnNoZWV0IC51bmktYWN0aW9uc2hlZXRfX2NlbGw6YmVmb3Jle2NvbnRlbnQ6IiAiO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDtyaWdodDowO2hlaWdodDoxcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNTtjb2xvcjojZTVlNWU1Oy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVZKC41KTt0cmFuc2Zvcm06c2NhbGVZKC41KX11bmktYWN0aW9uc2hlZXQgLnVuaS1hY3Rpb25zaGVldF9fY2VsbDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZWNlY2VjfXVuaS1hY3Rpb25zaGVldCAudW5pLWFjdGlvbnNoZWV0X19jZWxsOmZpcnN0LWNoaWxkOmJlZm9yZXtkaXNwbGF5Om5vbmV9QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo1MDBweCkgYW5kIChtaW4taGVpZ2h0OjUwMHB4KXsudW5pLW1hc2sudW5pLWFjdGlvbnNoZWV0X19tYXNre2JhY2tncm91bmQ6bm9uZX11bmktYWN0aW9uc2hlZXQgLnVuaS1hY3Rpb25zaGVldHt3aWR0aDozMDBweDtsZWZ0OjUwJTtyaWdodDphdXRvO3RvcDo1MCU7Ym90dG9tOmF1dG87LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO29wYWNpdHk6MDstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuM3MsdmlzaWJpbGl0eSAuM3M7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyx2aXNpYmlsaXR5IC4zc311bmktYWN0aW9uc2hlZXQgLnVuaS1hY3Rpb25zaGVldC51bmktYWN0aW9uc2hlZXRfdG9nZ2xle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSl9dW5pLWFjdGlvbnNoZWV0IC51bmktYWN0aW9uc2hlZXRfX21lbnV7Ym94LXNoYWRvdzowIDAgMjBweCA1cHggcmdiYSgwLDAsMCwuMyl9dW5pLWFjdGlvbnNoZWV0IC51bmktYWN0aW9uc2hlZXRfX2FjdGlvbntkaXNwbGF5Om5vbmV9fS5pbWFnZS12aWV3LWFyZWEsLmltYWdlLXZpZXctdmlld3twb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0uaW1hZ2Utdmlldy1pbWd7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7dG9wOjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7bWF4LWhlaWdodDoxMDAlO21heC13aWR0aDoxMDAlfS51bmktc3lzdGVtLXByZXZpZXctaW1hZ2V7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7dG9wOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt6LWluZGV4Ojk5OTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjgpfS51bmktc3lzdGVtLXByZXZpZXctaW1hZ2Utc3dpcGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfS51bmktc3lzdGVtLXByZXZpZXctaW1hZ2UgLm5hdi1idG4tYmFja3twb3NpdGlvbjphYnNvbHV0ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7dG9wOjA7cmlnaHQ6MDt3aWR0aDo0NHB4O2hlaWdodDo0NHB4O3BhZGRpbmc6NnB4O2xpbmUtaGVpZ2h0OjMycHg7Zm9udC1zaXplOjI2cHg7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcn0qe21hcmdpbjowOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH1AZm9udC1mYWNle2ZvbnQtd2VpZ2h0OjQwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWZhbWlseTp1bmk7c3JjOnVybCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LEFBRUFBQUFMQUlBQUF3QXdSMU5WUXJEK3MrMEFBQUU0QUFBQVFrOVRMekpBS0V4K0FBQUJmQUFBQUZaamJXRnc2NWNGSFFBQUFod0FBQUpRWjJ4NVp2Q1JSL0VBQUFTVUFBQUt0R2hsWVdRTEtJTjlBQUFBNEFBQUFEWm9hR1ZoQ0N3RCtnQUFBTHdBQUFBa2FHMTBlRUpvLy84QUFBSFVBQUFBU0d4dlkyRVlxaFc2QUFBRWJBQUFBQ1p0WVhod0FTRUFWUUFBQVJnQUFBQWdibUZ0WmVOY0h0Z0FBQTlJQUFBQjVuQnZjM1Q2YkxoTEFBQVJNQUFBQU9ZQUFRQUFBK2dBQUFCYUErai8vLy8vQStrQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUJJQUFRQUFBQUVBQUNrQ2ozZGZEenoxQUFzRDZBQUFBQURVRVI5WEFBQUFBTlFSSDFmLy93QUFBK2tENmdBQUFBZ0FBZ0FBQUFBQUFBQUJBQUFBRWdCSkFBVUFBQUFBQUFJQUFBQUtBQW9BQUFEL0FBQUFBQUFBQUFFQUFBQUtBQjRBTEFBQlJFWk1WQUFJQUFRQUFBQUFBQUFBQVFBQUFBRnNhV2RoQUFnQUFBQUJBQUFBQVFBRUFBUUFBQUFCQUFnQUFRQUdBQUFBQVFBQUFBQUFBUU93QVpBQUJRQUlBbm9DdkFBQUFJd0NlZ0s4QUFBQjRBQXhBUUlBQUFJQUJRTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUdaRlpBQkE2Z0hxRVFQb0FBQUFXZ1BxQUFBQUFBQUJBQUFBQUFBQUFBQUFBQVBvQUFBRDZBQUFBK2dBQUFQb0FBQUQ2QUFBQStnQUFBUG9BQUFENkFBQUErZ0FBQVBvQUFBRDZBQUFBK2dBQUFQb0FBQUQ2QUFBQStqLy93UG9BQUFENkFBQUFBQUFCUUFBQUFNQUFBQXNBQUFBQkFBQUFYUUFBUUFBQUFBQWJnQURBQUVBQUFBc0FBTUFDZ0FBQVhRQUJBQkNBQUFBQkFBRUFBRUFBT29SLy84QUFPb0IvLzhBQUFBQkFBUUFBQUFCQUFJQUF3QUVBQVVBQmdBSEFBZ0FDUUFLQUFzQURBQU5BQTRBRHdBUUFCRUFBQUVHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdBQUFBQUFOd0FBQUFBQUFBQUVRQUE2Z0VBQU9vQkFBQUFBUUFBNmdJQUFPb0NBQUFBQWdBQTZnTUFBT29EQUFBQUF3QUE2Z1FBQU9vRUFBQUFCQUFBNmdVQUFPb0ZBQUFBQlFBQTZnWUFBT29HQUFBQUJnQUE2Z2NBQU9vSEFBQUFCd0FBNmdnQUFPb0lBQUFBQ0FBQTZna0FBT29KQUFBQUNRQUE2Z29BQU9vS0FBQUFDZ0FBNmdzQUFPb0xBQUFBQ3dBQTZnd0FBT29NQUFBQURBQUE2ZzBBQU9vTkFBQUFEUUFBNmc0QUFPb09BQUFBRGdBQTZnOEFBT29QQUFBQUR3QUE2aEFBQU9vUUFBQUFFQUFBNmhFQUFPb1JBQUFBRVFBQUFBQUFSZ0NNQU5JQkpnRjRBY1FDTWdKZ0FxZ0MvQU5JQTZZRC9nUk9CS0FFOUFWYUFBQUFBZ0FBQUFBRHJ3T3RBQlFBS1FBQUFTSUhCZ2NHRkJjV0Z4WXlOelkzTmpRbkppY21BeUluSmljbU5EYzJOell5RnhZWEZoUUhCZ2NHQWZWNFoyUTdQRHc3Wkdmd1ptUTdQRHc3WkdaNGJsNWJOamMzTmx0ZTIxNWJOamMzTmx0ZUE2MDhPMlJuOEdkak96dzhPMk5uOEdka096ejhyemMxVzE3YlhsdzFOemMxWEY3YlhsczFOd0FBQUFBQ0FBQUFBQU96QTdNQUZ3QXRBQUFCSWdjR0J3WVZGQmNXRnhZek1qYzJOelkxTkNjbUp5WVRCd1lpTHdFbU5qc0JFVFEyT3dFeUZoVVJNeklXQWU1MloyUTdQVDA3WkdkMmZHcG1PejQrTzJacElYWU9LQTUyRGcwWFhRc0hKZ2NMWFJjTkE3TStPMlpxZkhablpEczlQVHRrWjNaOWFXWTdQdjN3bWhJU21oSWFBUmNJQ3dzSS91a2FBQU1BQUFBQUErVUQ1UUFYQUNNQUxBQUFBU0lIQmdjR0ZSUVhGaGNXTXpJM05qYzJOVFFuSmljbUF4UXJBU0kxQXpRN0FUSUhKeUltTkRZeUZoUUdBZTZFY205QlJFUkJiM0tFaVhaeFFrUkVRbkYxYVFJeEF3Z0NRZ01CSXhJWkdTUVpHUVBrUkVKeGRvbUVjbTlCUkVSQmIzS0VpblZ4UWtUOUhRSUNBV0lDQWpFWkl4a1pJeGtBQUFBQUF3QUFBQUFEc1FQa0FCc0FLZ0F6QUFBQkJnY0dCd1lIQmpjUkZCY1dGeFlYTmpjMk56WTFFU1FYSmljbUJ6TXlGaFVERkFZckFTSW5BelEyRXlJbU5EWXlGaFFHQWZWQlFUZzdMRHQvSUVjK2JGNXNiRjF0UFVqKzJLaFFRVlZ2TkFRR0RBTUNKZ1VCQ3dZZUR4WVdIaFVWQStRUEVnNFNEaElwQ3Y2dGozVmtTVDRkSFQ1SlpIV1BBVk5lTlJrU0dQd0dCUDdHQWdNRkFUb0VCdjVBRlI4VkZSOFZBQUFBQWdBQUFBQURzUVBrQUJrQUxnQUFBUVlIQmdjMkJSRVVGeFlYRmhjMk56WTNOalVSSkJjbUp5WVRBUVl2QVNZL0FUWXlId0VXTmpjbE5qSWZBUllCOVZWVlFrK3YvdEZIUG14ZWJHeGRiVDFJL3RHdlQwSlZvLzdWQkFTS0F3TVNBUVVCY1FFRkFnRVNBZ1VCRVFRRDR4TVlFaGszWVA2c2puVmxTRDhjSEQ5SVpYV09BVlJnTnhrU0dQNjIvdGtEQTQ4RUJCa0NBVllDQVFIbEFRSVFCQUFBQUFBQ0FBQUFBQVBrQStRQUZ3QXRBQUFCSWdjR0J3WVZGQmNXRnhZek1qYzJOelkxTkNjbUp5WVRBUVlpTHdFbVB3RTJNaDhCRmpJM0FUWXlId0VXQWU2RWNtOUJRME5DYm5PRGlYVnhRa1JFUW5GMWtmNmdBUVVCb3dNREZnRUZBWVVDQlFFQlF3SUZBUlVFQStORVFuRjFpWU56YmtKRFEwRnZjb1NKZFhGQ1JQNmovcVVCQWFnRUJSNENBV1lCQVFFTkFnSVZCQUFBQUFRQUFBQUFBNjhEclFBVUFDa0FQd0JEQUFBQklnY0dCd1lVRnhZWEZqSTNOamMyTkNjbUp5WURJaWNtSnlZME56WTNOaklYRmhjV0ZBY0dCd1lUQlE0Qkx3RW1CZzhCQmhZZkFSWXlOd0UrQVNZaUZ6QWZBUUgxZUdka096dzhPMlJuOEdaa096dzhPMlJtZUc1ZVd6WTNOelpiWHR0ZVd6WTNOelpiWG1uKzlnWVNCbUFHRHdVREJRRUdmUVVRQmdFbEJRRUxFQlVCQVFPdFBEdGtaL0JuWXpzOFBEdGpaL0JuWkRzOC9LODNOVnRlMjE1Y05UYzNOVnhlMjE1Yk5UY0NKdDBGQVFWSkJRSUdCQWNSQm9BR0JRRWhCUThMQkFFQkFBQUJBQUFBQUFPN0F6b0FGd0FBRXk0QlB3RStBUjhCRmpZM0FUWVdGeWNXRkFjQkJpSW5QUW9HQndVSEdnekxEQ0VMQWgwTEh3c05DZ3I5dVFvZUNnR3pDeUVPQ3cwSENaTUpBUW9CdmdrQ0NnMExIUXY5c1FzS0FBQUFBQUlBQUFBQUErVUQ1Z0FYQUN3QUFBRWlCd1lIQmhVVUZ4WVhGak15TnpZM05qVTBKeVluSmhNSEJpOEJKaWNtTlJNME5qc0JNaFlWRXhjZUFRSHZoSEp2UVVORFFtNXpnNGwxY1VKRVJFSnhkVmNRQXdUNkF3SUVFQU1DS3dJRERzVUNBUVBsUkVKeGRZbURjMjVDUTBOQmIzS0VpWFZ4UWtUOVZod0VBbmNDQWdNR0FYb0NBd01DL3EyRkFnUUFBQVFBQUFBQUE2OERyUUFEQUJnQUxRQXpBQUFCTUI4QkF5SUhCZ2NHRkJjV0Z4WXlOelkzTmpRbkppY21BeUluSmljbU5EYzJOell5RnhZWEZoUUhCZ2NHQXlNVk16VWpBdVVCQWZKNFoyUTdQRHc3Wkdmd1ptUTdQRHc3WkdaNGJsNWJOamMzTmx0ZTIxNWJOamMzTmx0ZW15VDkyUUtEQVFFQkxEdzdaR2Z3WjJNN1BEdzdZMmZ3WjJRN1BQeXZOelZiWHR0ZVhEVTNOelZjWHR0ZVd6VTNBakg5SkFBQUFBTUFBQUFBQStRRDVBQVhBQ2NBTUFBQUFTSUhCZ2NHRlJRWEZoY1dNekkzTmpjMk5UUW5KaWNtQXpNeUZoVURGQVlyQVNJbU5RTTBOaE1pSmpRMk1oWVVCZ0h1aEhKdlFVTkRRbTV6ZzRsMWNVSkVSRUp4ZFo0MkJBWU1Bd0luQXdNTUJoOFBGaFllRmhZRDQwUkNjWFdKZzNOdVFrTkRRVzl5aElsMWNVSkUvdllHQmY3QUFnTURBZ0ZBQlFiK05oWWZGaFlmRmdBQUJBQUFBQUFEd0FQQUFBZ0FFZ0FvQUQwQUFBRXlOalFtSWdZVUZoY2pGVE1SSXhVek5TTURJZ2NHQndZVkZCWVhGak15TnpZM05qVTBKeTRCQXlJbkppY21ORGMyTnpZeUZ4WVhGaFFIQmdjR0FmUVlJU0V3SVNGUmp6azV5VG9yaEc1clBUOTlhbStEZG1obFBENCtQTXlGYlY1Yk5UYzNOVnRlMmw1Yk5UYzNOVnRlQXFBaUx5SWlMeUk1SGY3RUhCd0NzVDg5YTI2RWQ4dzhQajQ4WldoMmcyOXFmZnlqTnpWYlh0cGVXelUzTnpWYlh0cGVXelUzQUFBREFBQUFBQU9vQTZnQUN3QWdBRFVBQUFFSEp3Y1hCeGMzRnpjbk53TWlCd1lIQmhRWEZoY1dNamMyTnpZMEp5WW5KZ01pSnlZbkpqUTNOamMyTWhjV0Z4WVVCd1lIQmdLT21wb2NtcG9jbXBvY21wcTJkbVppT2pzN09tSm03R1ppT2pzN09tSm1kbXRkV1RRMk5qUlpYZFpkV1RRMk5qUlpYUUtxbXBvY21wb2NtcG9jbXBvQkdUczZZbWJzWm1JNk96czZZbWJzWm1JNk8vekNOalJaWGRaZFdUUTJOalJaWGRaZFdUUTJBQU1BQUFBQUEra0Q2Z0FhQUM4QU1BQUFBUVlIQmlNaUp5WW5KalEzTmpjMk1oY1dGeFlWRkFjR0J3RUhBVEkzTmpjMk5DY21KeVlpQndZSEJoUVhGaGNXTXdLT05VQkNSMjFkV2pVM056VmFYZHBkV3pVMkdCY3JBU001L2VCWFMwZ3JLeXNyU0V1dVNra3FMQ3dxU1VwWEFTTXJGeGcyTlZ0ZDJsMWFOVGMzTlZwZGJVZENRRFgrM2prQkdTc3JTRXV1U2trcUxDd3FTVXF1UzBnckt3QUMvLzhBQUFQb0ErZ0FGQUF3QUFBQklnY0dCd1lRRnhZWEZpQTNOamMyRUNjbUp5WVRGZzRCSWk4QkJ3WXVBVFEvQVNjbVBnRVdId0UzTmg0QkJnOEJBZlNJZEhGRFJFUkRjWFFCRUhSeFEwUkVRM0YwU1FvQkZCc0tvcWdLR3hNS3FLSUtBUlFiQ3FLb0Noc1VBUXFvQStoRVEzRjAvdkIwY1VORVJFTnhkQUVRZEhGRFJQMWpDaHNUQ3FpaUNnRVVHd3FpcUFvYkZBRUtxS0lLQVJRYkNxSUFBQUlBQUFBQUErUUQ1QUFYQURRQUFBRWlCd1lIQmhVVUZ4WVhGak15TnpZM05qVTBKeVluSmhNVUJpTUZGeFlVRHdFR0x3RXVBVDhCTmg4QkZoUVBBUVV5RmgwQkFlNkVjbTlCUTBOQ2JuT0RpWFZ4UWtSRVFuRjFmd1FDL3BHREFRRVZBd1RzQWdFQzdBUUVGQUlCaEFGd0FnTUQ0MFJDY1hXSmczTnVRa05EUVc5eWhJbDFjVUpFL2ZZQ0F3dVZBZ1FDRkFRRTBBSUZBdEVFQkJRQ0JRR1ZDd01ESndBQUFBVUFBQUFBQTlRRDB3QWpBQ2NBTndCSEFFZ0FBQUVSRkFZaklTSW1OUkVqSWlZOUFUUTJNeUUxTkRZeklUSVdIUUVoTWhZZEFSUUdJeUVSSVJFSElnWVZFUlFXT3dFeU5qVVJOQ1lqSVNJR0ZSRVVGanNCTWpZMUVUUW1Ld0VEZXlZYi9YWWJKa01KRFEwSkFRWVpFZ0V2RXhrQkJna05EUW45Q1FKYzBRa05EUWt0Q1EwTkNmN3NDUTBOQ1MwSkRRMEpMUU1pL1RRYkppWWJBc3dNQ2l3SkRTNFNHUmtTTGcwSkxBb00vVXdDdEdzTkNmNU5DUTBOQ1FHekNRME5DZjVOQ1EwTkNRR3pDUTBBQUFBQUVBREdBQUVBQUFBQUFBRUFCQUFBQUFFQUFBQUFBQUlBQndBRUFBRUFBQUFBQUFNQUJBQUxBQUVBQUFBQUFBUUFCQUFQQUFFQUFBQUFBQVVBQ3dBVEFBRUFBQUFBQUFZQUJBQWVBQUVBQUFBQUFBb0FLd0FpQUFFQUFBQUFBQXNBRXdCTkFBTUFBUVFKQUFFQUNBQmdBQU1BQVFRSkFBSUFEZ0JvQUFNQUFRUUpBQU1BQ0FCMkFBTUFBUVFKQUFRQUNBQitBQU1BQVFRSkFBVUFGZ0NHQUFNQUFRUUpBQVlBQ0FDY0FBTUFBUVFKQUFvQVZnQ2tBQU1BQVFRSkFBc0FKZ0Q2ZDJWMWFWSmxaM1ZzWVhKM1pYVnBkMlYxYVZabGNuTnBiMjRnTVM0d2QyVjFhVWRsYm1WeVlYUmxaQ0JpZVNCemRtY3lkSFJtSUdaeWIyMGdSbTl1ZEdWc2JHOGdjSEp2YW1WamRDNW9kSFJ3T2k4dlptOXVkR1ZzYkc4dVkyOXRBSGNBWlFCMUFHa0FVZ0JsQUdjQWRRQnNBR0VBY2dCM0FHVUFkUUJwQUhjQVpRQjFBR2tBVmdCbEFISUFjd0JwQUc4QWJnQWdBREVBTGdBd0FIY0FaUUIxQUdrQVJ3QmxBRzRBWlFCeUFHRUFkQUJsQUdRQUlBQmlBSGtBSUFCekFIWUFad0F5QUhRQWRBQm1BQ0FBWmdCeUFHOEFiUUFnQUVZQWJ3QnVBSFFBWlFCc0FHd0Fid0FnQUhBQWNnQnZBR29BWlFCakFIUUFMZ0JvQUhRQWRBQndBRG9BTHdBdkFHWUFid0J1QUhRQVpRQnNBR3dBYndBdUFHTUFid0J0QUFBQUFnQUFBQUFBQUFBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQUFaamFYSmpiR1VJWkc5M2JteHZZV1FFYVc1bWJ3eHpZV1psWDNOMVkyTmxjM01KYzJGbVpWOTNZWEp1QjNOMVkyTmxjM01PYzNWalkyVnpjeTFqYVhKamJHVVJjM1ZqWTJWemN5MXVieTFqYVhKamJHVUhkMkZwZEdsdVp3NTNZV2wwYVc1bkxXTnBjbU5zWlFSM1lYSnVDMmx1Wm04dFkybHlZMnhsQm1OaGJtTmxiQVp6WldGeVkyZ0ZZMnhsWVhJRVltRmphd1prWld4bGRHVUFBQUFBIikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZmFtaWx5OnVuaWJ0bjtzcmM6dXJsKCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsQUFFQUFBQUtBSUFBQXdBZ1QxTXZNdlVUSFN3QUFBQ3NBQUFBWUdOdFlYRC8xTFNCQUFBQkRBQUFBVnBuYkhsbXowNkw5Z0FBQW1nQUFBUTBhR1ZoWkE1MDFjd0FBQWFjQUFBQU5taG9aV0VIN3dRNkFBQUcxQUFBQUNSb2JYUjRKQ29IQXdBQUJ2Z0FBQUFrYkc5allRUWVCU2dBQUFjY0FBQUFGRzFoZUhBQURRQkxBQUFITUFBQUFDQnVZVzFsNWhFUGtnQUFCMUFBQUFIYWNHOXpkQVFmQkNFQUFBa3NBQUFBUEFBRUJBVUJrQUFGQUFBQ21RTE1BQUFBandLWkFzd0FBQUhyQURNQkNRQUFBQUFBQUFBQUFBQUFBQUFBQUFFUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVEbUFQLzlBOEQvd0FCQUE4QUFRQUFBQUFFQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFNQUFBQURBQUFBSEFBQkFBQUFBQUJVQUFNQUFRQUFBQndBQkFBNEFBQUFDZ0FJQUFJQUF1WUM1Z2JtVWYvOS8vOEFBT1lBNWdUbVVQLzkvLzhhQVJvQUdiY0FBd0FCQUFBQUFBQUFBQUFBQUFBQUFRWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBV0FBZVFMQkF1b0FGUUFBQVNZME56WXlGd0VlQVJVVUJnY0JCaUluSmpRM0FRRmdDQWdIRmdjQk5RUUVCQVQreXdjV0J3Z0lBU0lDeFFjWEJ3Z0kvdHdFQ3dVR0N3VCszQWdJQnhjSUFSTUFBQUFCQVZnQWVRSzVBdW9BRlFBQUNRSVdGQWNHSWljQkxnRTFORFkzQVRZeUZ4WVVBcm4rM2dFaUNBZ0lGUWorekFVREF3VUJOQWdWQ0FnQ3hmN3QvdTBJRndjSUNBRWtCQXNHQlFzRUFTUUlDQWNYQUFBQ0FOQUFhUU82QXcwQUd3QTBBQUFsRkFZaklTSW1OUkUwTmpzQk5TTWlCaFVSRkJZeklUSTJQUUVqRXljSEZ3Y09BdzhCTXpVK0FUYytBVDhDQnhjM0p3TlNCd1Q5d2dRR0JnU3d3QkVZR0JFQ1h4RVhMbWlrSVc1M1NvSmpQUVVCTHdVMkxTMTFRQVpxYmlHa0FhVUVCd2NFQWFnRkJqRVpFZjQwRVJrWkVxVUJLS3dqY3dFR1BGOStSd2dIUEc0ckt6SUVBUUYwSXF3Q0FBQUNBSmNBWGdOekF4c0FMd0JJQUFBQkxnRXZBaTRCSXlJR0R3SU9BUWNHRmg4QkJ3WVdGeDRCTXpJMlB3RVhIZ0V6TWpZM1BnRW5ORFVuTno0QkJUWW1Md0UzUGdFL0FSY2VBUjhCQnc0Qkh3RW5KZ1lQQVFOekFnb0c0MmNEQ2djR0NnTms0d1lLQWdFREJLVWxBUVVGQXdZRUFnVUR5c3dDQlFNR0NnTUNBUUVvb3dVRC9mb0JBd1NOd2dVSkFsWllBZ2tGdzR3RUF3RWlyZ1VMQks0Q0ZBWUlBUi9OQmdZR0JzNGpBUWdHQmd3RW4rSUdEQVFDQWdJQmJHb0JBUVlHQXdrREFRSGVvUVVNc0FZS0JJZ2RBUVlGc2JBRkJnRWJpUVFMQmNGYUF3RUNYQUFDQUw4QWRRTlFBeEVBSUFBOEFBQUJJZ1lkQVJRR0l5RWlKajBCTkNZaklnWWRBUjRCTXlFeU5qMEJOQ1luTGdFM0FTNEJJeUlHQndFR0ZCY2VBVE15TmpjQk5qSVhBUll5Tno0QkF2Y0tEZ3NIL25VSUN3NEtDUThCSmhzQmpCc25CQU1EQ1ZUKzVnb1lEUTBZQ2Y3bUJnY0RDUVVFQ0FRQkdRVVFCUUVhQnhNSEJnRUJzQTRKNGdjTEN3ZmlDUTRPQ2VJYkp5Y2I0Z1FKQXdRRE5BRWFDZ2tKQ2Y3bEJ4TUdCQU1EQXdFWkJRWCs1d1lIQmhNQUF3RGNBWFlETVFINkFBc0FGd0FqQUFBQk1qWTFOQ1lqSWdZVkZCWWhNalkxTkNZaklnWVZGQlloTWpZMU5DWWpJZ1lWRkJZQkhod25KeHdiSnljQkF4d25KeHdiSnljQkJCc25KeHNjSnljQmRpY2JHeWNuR3hzbkp4c2JKeWNiR3ljbkd4c25KeHNiSndBQUFRRHNBSjBERkFMT0FDVUFBQUUzTmpRbkppSVBBU2NtSWdjR0ZCOEJCd1lVRng0Qk16STJQd0VYSGdFek1qWTNOalFuQWlqc0NRa0lHQWpzNmdnWUNBa0o2dXdKQ1FRS0JnVUxCT3pzQkFzRkJnb0VDUWtCdStvSkZ3a0lDT3ZyQ0FnSUdBanI2d2dZQ0FRRUJBVHI3UVVFQlFRSUZ3a0FBUUJkQUl3RDBBTDRBQjRBQUFFV0ZSWUhBUVlIQmdjR0l5SXZBU1l2QVFFbUp6UTNQZ0VYQ1FFMk16WUR3d3dCRFAzL0JBVUNBZ2NHQ0FjRUF3TUQvdG9KQVFvTUhRd0JEQUhvQ3c4UEF1NExEUkFML2RzRUFnRUNBUUVDQWdNQ0FTRUxEZzhOQ1FJTC92a0NDQW9CQUFFQUFBQUJBQURMV2IyQlh3ODg5UUFMQkFBQUFBQUExWlRJcXdBQUFBRFZsTWlyQUYwQVhnUFFBeHNBQUFBSUFBSUFBQUFBQUFBQUFRQUFBOEQvd0FBQUJDb0FYUUJHQTlBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFrRUFBQUFCQUFCWUFRQUFWZ0VBQURRQkFBQWx3UUFBTDhFQUFEY0JBQUE3QVFxQUYwQUFBQUFBQ29BVkFDaUFSUUJjQUdtQWVJQ0dnQUJBQUFBQ1FCSkFBTUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURnQ3VBQUVBQUFBQUFBRUFEZ0FBQUFFQUFBQUFBQUlBQndBT0FBRUFBQUFBQUFNQURnQVZBQUVBQUFBQUFBUUFEZ0FqQUFFQUFBQUFBQVVBQ3dBeEFBRUFBQUFBQUFZQURnQThBQUVBQUFBQUFBb0FHZ0JLQUFNQUFRUUpBQUVBSEFCa0FBTUFBUVFKQUFJQURnQ0FBQU1BQVFRSkFBTUFIQUNPQUFNQUFRUUpBQVFBSEFDcUFBTUFBUVFKQUFVQUZnREdBQU1BQVFRSkFBWUFIQURjQUFNQUFRUUpBQW9BTkFENGMzUnlaV0Z0YVdOdmJtWnZiblJTWldkMWJHRnljM1J5WldGdGFXTnZibVp2Ym5SemRISmxZVzFwWTI5dVptOXVkRlpsY25OcGIyNGdNUzR3YzNSeVpXRnRhV052Ym1admJuUkdiMjUwSUdkbGJtVnlZWFJsWkNCaWVTQkpZMjlOYjI5dUxnQnpBSFFBY2dCbEFHRUFiUUJwQUdNQWJ3QnVBR1lBYndCdUFIUUFVZ0JsQUdjQWRRQnNBR0VBY2dCekFIUUFjZ0JsQUdFQWJRQnBBR01BYndCdUFHWUFid0J1QUhRQWN3QjBBSElBWlFCaEFHMEFhUUJqQUc4QWJnQm1BRzhBYmdCMEFGWUFaUUJ5QUhNQWFRQnZBRzRBSUFBeEFDNEFNQUJ6QUhRQWNnQmxBR0VBYlFCcEFHTUFid0J1QUdZQWJ3QnVBSFFBUmdCdkFHNEFkQUFnQUdjQVpRQnVBR1VBY2dCaEFIUUFaUUJrQUNBQVlnQjVBQ0FBU1FCakFHOEFUUUJ2QUc4QWJnQXVBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRQUpBQUFCQWdFREFRUUJCUUVHQVFjQkNBRUpBQUFBQUFBQUFBQT0iKSBmb3JtYXQoInRydWV0eXBlIil9Ym9keSxodG1sey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9Ym9keXtvdmVyZmxvdy14OmhpZGRlbn1ib2R5LHVuaS1wYWdlLWJvZHl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1VSS1CRy0wKTtjb2xvcjp2YXIoLS1VSS1GRy0wKX1bY2xhc3MqPSIgdW5pLWljb24tIl0sW2NsYXNzXj11bmktaWNvbi1de2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtmb250Om5vcm1hbCBub3JtYWwgbm9ybWFsIDE0cHgvMSB1bmk7Zm9udC1zaXplOmluaGVyaXQ7dGV4dC1yZW5kZXJpbmc6YXV0bzstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfVtjbGFzcyo9IiB1bmktYnRuLWljb24iXSxbY2xhc3NePXVuaS1idG4taWNvbl17ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udDpub3JtYWwgbm9ybWFsIG5vcm1hbCAxNHB4LzEgdW5pYnRuO2ZvbnQtc2l6ZTppbmhlcml0O3RleHQtcmVuZGVyaW5nOmF1dG87LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH1bY2xhc3MqPSIgdW5pLWJ0bi1pY29uIl06YmVmb3JlLFtjbGFzc149dW5pLWJ0bi1pY29uXTpiZWZvcmV7bWFyZ2luOjA7Ym94LXNpemluZzpib3JkZXItYm94fS51bmktaWNvbi1zdWNjZXNzLW5vLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXEVBMDgifS51bmktaWNvbi1lcnJvcjpiZWZvcmV7Y29udGVudDoiXEVBMEIifS51bmktbG9hZGluZyx1bmktYnV0dG9uW2xvYWRpbmddOmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCkgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGRwWkhSb1BTSXhNakFpSUdobGFXZG9kRDBpTVRJd0lpQjJhV1YzUW05NFBTSXdJREFnTVRBd0lERXdNQ0krUEhCaGRHZ2dabWxzYkQwaWJtOXVaU0lnWkQwaVRUQWdNR2d4TURCMk1UQXdTREI2SWk4K1BISmxZM1FnZDJsa2RHZzlJamNpSUdobGFXZG9kRDBpTWpBaUlIZzlJalEyTGpVaUlIazlJalF3SWlCbWFXeHNQU0lqUlRsRk9VVTVJaUJ5ZUQwaU5TSWdjbms5SWpVaUlIUnlZVzV6Wm05eWJUMGlkSEpoYm5Oc1lYUmxLREFnTFRNd0tTSXZQanh5WldOMElIZHBaSFJvUFNJM0lpQm9aV2xuYUhROUlqSXdJaUI0UFNJME5pNDFJaUI1UFNJME1DSWdabWxzYkQwaUl6azRPVFk1TnlJZ2NuZzlJalVpSUhKNVBTSTFJaUIwY21GdWMyWnZjbTA5SW5KdmRHRjBaU2d6TUNBeE1EVXVPVGdnTmpVcElpOCtQSEpsWTNRZ2QybGtkR2c5SWpjaUlHaGxhV2RvZEQwaU1qQWlJSGc5SWpRMkxqVWlJSGs5SWpRd0lpQm1hV3hzUFNJak9VSTVPVGxCSWlCeWVEMGlOU0lnY25rOUlqVWlJSFJ5WVc1elptOXliVDBpY205MFlYUmxLRFl3SURjMUxqazRJRFkxS1NJdlBqeHlaV04wSUhkcFpIUm9QU0kzSWlCb1pXbG5hSFE5SWpJd0lpQjRQU0kwTmk0MUlpQjVQU0kwTUNJZ1ptbHNiRDBpSTBFelFURkJNaUlnY25nOUlqVWlJSEo1UFNJMUlpQjBjbUZ1YzJadmNtMDlJbkp2ZEdGMFpTZzVNQ0EyTlNBMk5Ta2lMejQ4Y21WamRDQjNhV1IwYUQwaU55SWdhR1ZwWjJoMFBTSXlNQ0lnZUQwaU5EWXVOU0lnZVQwaU5EQWlJR1pwYkd3OUlpTkJRa0U1UVVFaUlISjRQU0kxSWlCeWVUMGlOU0lnZEhKaGJuTm1iM0p0UFNKeWIzUmhkR1VvTVRJd0lEVTRMalkySURZMUtTSXZQanh5WldOMElIZHBaSFJvUFNJM0lpQm9aV2xuYUhROUlqSXdJaUI0UFNJME5pNDFJaUI1UFNJME1DSWdabWxzYkQwaUkwSXlRakpDTWlJZ2NuZzlJalVpSUhKNVBTSTFJaUIwY21GdWMyWnZjbTA5SW5KdmRHRjBaU2d4TlRBZ05UUXVNRElnTmpVcElpOCtQSEpsWTNRZ2QybGtkR2c5SWpjaUlHaGxhV2RvZEQwaU1qQWlJSGc5SWpRMkxqVWlJSGs5SWpRd0lpQm1hV3hzUFNJalFrRkNPRUk1SWlCeWVEMGlOU0lnY25rOUlqVWlJSFJ5WVc1elptOXliVDBpY205MFlYUmxLREU0TUNBMU1DQTJOU2tpTHo0OGNtVmpkQ0IzYVdSMGFEMGlOeUlnYUdWcFoyaDBQU0l5TUNJZ2VEMGlORFl1TlNJZ2VUMGlOREFpSUdacGJHdzlJaU5ETWtNd1F6RWlJSEo0UFNJMUlpQnllVDBpTlNJZ2RISmhibk5tYjNKdFBTSnliM1JoZEdVb0xURTFNQ0EwTlM0NU9DQTJOU2tpTHo0OGNtVmpkQ0IzYVdSMGFEMGlOeUlnYUdWcFoyaDBQU0l5TUNJZ2VEMGlORFl1TlNJZ2VUMGlOREFpSUdacGJHdzlJaU5EUWtOQ1EwSWlJSEo0UFNJMUlpQnllVDBpTlNJZ2RISmhibk5tYjNKdFBTSnliM1JoZEdVb0xURXlNQ0EwTVM0ek5DQTJOU2tpTHo0OGNtVmpkQ0IzYVdSMGFEMGlOeUlnYUdWcFoyaDBQU0l5TUNJZ2VEMGlORFl1TlNJZ2VUMGlOREFpSUdacGJHdzlJaU5FTWtReVJESWlJSEo0UFNJMUlpQnllVDBpTlNJZ2RISmhibk5tYjNKdFBTSnliM1JoZEdVb0xUa3dJRE0xSURZMUtTSXZQanh5WldOMElIZHBaSFJvUFNJM0lpQm9aV2xuYUhROUlqSXdJaUI0UFNJME5pNDFJaUI1UFNJME1DSWdabWxzYkQwaUkwUkJSRUZFUVNJZ2NuZzlJalVpSUhKNVBTSTFJaUIwY21GdWMyWnZjbTA5SW5KdmRHRjBaU2d0TmpBZ01qUXVNRElnTmpVcElpOCtQSEpsWTNRZ2QybGtkR2c5SWpjaUlHaGxhV2RvZEQwaU1qQWlJSGc5SWpRMkxqVWlJSGs5SWpRd0lpQm1hV3hzUFNJalJUSkZNa1V5SWlCeWVEMGlOU0lnY25rOUlqVWlJSFJ5WVc1elptOXliVDBpY205MFlYUmxLQzB6TUNBdE5TNDVPQ0EyTlNraUx6NDhMM04yWno0PSIpIG5vLXJlcGVhdH0udW5pLWxvYWRpbmd7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7LXdlYmtpdC1hbmltYXRpb246dW5pLWxvYWRpbmcgMXMgc3RlcHMoMTIpIGluZmluaXRlO2FuaW1hdGlvbjp1bmktbG9hZGluZyAxcyBzdGVwcygxMikgaW5maW5pdGU7YmFja2dyb3VuZC1zaXplOjEwMCV9QC13ZWJraXQta2V5ZnJhbWVzIHVuaS1sb2FkaW5nezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRvey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxdHVybik7dHJhbnNmb3JtOnJvdGF0ZSgxdHVybil9fUBrZXlmcmFtZXMgdW5pLWxvYWRpbmd7MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9dG97LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDF0dXJuKTt0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19LnVuaS1tYXNre3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5O3RvcDowO3JpZ2h0OjA7bGVmdDowO2JvdHRvbTowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuNSl9LnVuaS1mYWRlLWVudGVyLWFjdGl2ZSwudW5pLWZhZGUtbGVhdmUtYWN0aXZley13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjouMjVzO3RyYW5zaXRpb24tZHVyYXRpb246LjI1czstd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHk7LXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2V9LnVuaS1mYWRlLWVudGVyLC51bmktZmFkZS1sZWF2ZS1hY3RpdmV7b3BhY2l0eTowfVtudnVlXSB1bmktbGFiZWwsW252dWVdIHVuaS1zY3JvbGwtdmlldyxbbnZ1ZV0gdW5pLXN3aXBlci1pdGVtLFtudnVlXSB1bmktdmlld3tkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDstd2Via2l0LWZsZXgtc2hyaW5rOjA7ZmxleC1zaHJpbms6MDstd2Via2l0LWJveC1mbGV4OjA7LXdlYmtpdC1mbGV4LWdyb3c6MDtmbGV4LWdyb3c6MDstd2Via2l0LWZsZXgtYmFzaXM6YXV0bztmbGV4LWJhc2lzOmF1dG87LXdlYmtpdC1ib3gtYWxpZ246c3RyZXRjaDstd2Via2l0LWFsaWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24taXRlbXM6c3RyZXRjaDstd2Via2l0LWFsaWduLWNvbnRlbnQ6ZmxleC1zdGFydDthbGlnbi1jb250ZW50OmZsZXgtc3RhcnR9W252dWVdIHVuaS1idXR0b257bWFyZ2luOjB9W252dWUtZGlyLXJvd10gdW5pLWxhYmVsLFtudnVlLWRpci1yb3ddIHVuaS1zd2lwZXItaXRlbSxbbnZ1ZS1kaXItcm93XSB1bmktdmlld3std2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy13ZWJraXQtZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtZGlyZWN0aW9uOnJvd31bbnZ1ZS1kaXItY29sdW1uXSB1bmktbGFiZWwsW252dWUtZGlyLWNvbHVtbl0gdW5pLXN3aXBlci1pdGVtLFtudnVlLWRpci1jb2x1bW5dIHVuaS12aWV3ey13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy13ZWJraXQtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn1bbnZ1ZS1kaXItcm93LXJldmVyc2VdIHVuaS1sYWJlbCxbbnZ1ZS1kaXItcm93LXJldmVyc2VdIHVuaS1zd2lwZXItaXRlbSxbbnZ1ZS1kaXItcm93LXJldmVyc2VdIHVuaS12aWV3ey13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpyZXZlcnNlOy13ZWJraXQtZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2U7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9W252dWUtZGlyLWNvbHVtbi1yZXZlcnNlXSB1bmktbGFiZWwsW252dWUtZGlyLWNvbHVtbi1yZXZlcnNlXSB1bmktc3dpcGVyLWl0ZW0sW252dWUtZGlyLWNvbHVtbi1yZXZlcnNlXSB1bmktdmlld3std2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1ib3gtZGlyZWN0aW9uOnJldmVyc2U7LXdlYmtpdC1mbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZTtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZX1bbnZ1ZV0gdW5pLWltYWdlLFtudnVlXSB1bmktaW5wdXQsW252dWVdIHVuaS1zY3JvbGwtdmlldyxbbnZ1ZV0gdW5pLXN3aXBlcixbbnZ1ZV0gdW5pLXN3aXBlci1pdGVtLFtudnVlXSB1bmktdGV4dCxbbnZ1ZV0gdW5pLXRleHRhcmVhLFtudnVlXSB1bmktdmlkZW8sW252dWVdIHVuaS12aWV3e3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlcjowIHNvbGlkICMwMDA7Ym94LXNpemluZzpib3JkZXItYm94fVtudnVlXSB1bmktc3dpcGVyLWl0ZW17cG9zaXRpb246YWJzb2x1dGV9aHRtbHstLVVJLUJHOiNmZmY7LS1VSS1CRy0xOiNmN2Y3Zjc7LS1VSS1CRy0yOiNmZmY7LS1VSS1CRy0zOiNmN2Y3Zjc7LS1VSS1CRy00OiM0YzRjNGM7LS1VSS1CRy01OiNmZmY7LS1VSS1GRzojMDAwOy0tVUktRkctMDpyZ2JhKDAsMCwwLDAuOSk7LS1VSS1GRy1IQUxGOnJnYmEoMCwwLDAsMC45KTstLVVJLUZHLTE6cmdiYSgwLDAsMCwwLjUpOy0tVUktRkctMjpyZ2JhKDAsMCwwLDAuMyk7LS1VSS1GRy0zOnJnYmEoMCwwLDAsMC4xKX11bmktYXBwe3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9dW5pLWFwcCx1bmktcGFnZS1oZWFke2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fXVuaS1wYWdlLWhlYWQgLnVuaS1wYWdlLWhlYWR7cG9zaXRpb246Zml4ZWQ7bGVmdDp2YXIoLS13aW5kb3ctbGVmdCk7cmlnaHQ6dmFyKC0td2luZG93LXJpZ2h0KTtoZWlnaHQ6NDRweDtoZWlnaHQ6Y2FsYyg0NHB4ICsgY29uc3RhbnQoc2FmZS1hcmVhLWluc2V0LXRvcCkpO2hlaWdodDpjYWxjKDQ0cHggKyBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkpO3BhZGRpbmc6N3B4IDNweDtwYWRkaW5nLXRvcDpjYWxjKDdweCArIGNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC10b3ApKTtwYWRkaW5nLXRvcDpjYWxjKDdweCArIGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSk7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtYm94LXBhY2s6anVzdGlmeTstd2Via2l0LWp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4Ojk5ODtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzAwMDstd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6YWxsO3RyYW5zaXRpb24tcHJvcGVydHk6YWxsfXVuaS1wYWdlLWhlYWQgLnVuaS1wYWdlLWhlYWQtdGl0bGVQZW5ldHJhdGUsdW5pLXBhZ2UtaGVhZCAudW5pLXBhZ2UtaGVhZC10aXRsZVBlbmV0cmF0ZSAudW5pLXBhZ2UtaGVhZC1iZCx1bmktcGFnZS1oZWFkIC51bmktcGFnZS1oZWFkLXRpdGxlUGVuZXRyYXRlIC51bmktcGFnZS1oZWFkLWJkICp7cG9pbnRlci1ldmVudHM6bm9uZX11bmktcGFnZS1oZWFkIC51bmktcGFnZS1oZWFkLXRpdGxlUGVuZXRyYXRlICp7cG9pbnRlci1ldmVudHM6YXV0b311bmktcGFnZS1oZWFkIC51bmktcGFnZS1oZWFkLnVuaS1wYWdlLWhlYWQtdHJhbnNwYXJlbnQgLnVuaS1wYWdlLWhlYWQtZnQ+ZGl2ey13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy13ZWJraXQtanVzdGlmeS1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfXVuaS1wYWdlLWhlYWQgLnVuaS1wYWdlLWhlYWR+LnVuaS1wbGFjZWhvbGRlcnt3aWR0aDoxMDAlO2hlaWdodDo0NHB4O2hlaWdodDpjYWxjKDQ0cHggKyBjb25zdGFudChzYWZlLWFyZWEtaW5zZXQtdG9wKSk7aGVpZ2h0OmNhbGMoNDRweCArIGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSl9dW5pLXBhZ2UtaGVhZCAudW5pLXBsYWNlaG9sZGVyLXRpdGxlUGVuZXRyYXRle3BvaW50ZXItZXZlbnRzOm5vbmV9dW5pLXBhZ2UtaGVhZCAudW5pLXBhZ2UtaGVhZCAqe2JveC1zaXppbmc6Ym9yZGVyLWJveH11bmktcGFnZS1oZWFkIC51bmktcGFnZS1oZWFkLWhke2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstd2Via2l0LWFsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOjE2cHh9dW5pLXBhZ2UtaGVhZCAudW5pLXBhZ2UtaGVhZC1iZHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjcwcHg7cmlnaHQ6NzBweDttaW4td2lkdGg6MH0udW5pLXBhZ2UtaGVhZC1idG57cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6YXV0bzttYXJnaW46MCAycHg7d29yZC1icmVhazprZWVwLWFsbDt3aGl0ZS1zcGFjZTpwcmU7Y3Vyc29yOnBvaW50ZXJ9LnVuaS1wYWdlLWhlYWQtdHJhbnNwYXJlbnQgLnVuaS1wYWdlLWhlYWQtYnRue2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstd2Via2l0LWFsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjUpfXVuaS1wYWdlLWhlYWQgLnVuaS1idG4taWNvbntvdmVyZmxvdzpoaWRkZW47bWluLXdpZHRoOjFlbX0udW5pLXBhZ2UtaGVhZC1idG4tcmVkLWRvdDphZnRlcntjb250ZW50OmF0dHIoYmFkZ2UtdGV4dCk7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDtiYWNrZ3JvdW5kLWNvbG9yOnJlZDtjb2xvcjojZmZmO3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7bGluZS1oZWlnaHQ6MThweDtib3JkZXItcmFkaXVzOjE4cHg7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC41KSB0cmFuc2xhdGUoNDAlLC00MCUpO3RyYW5zZm9ybTpzY2FsZSguNSkgdHJhbnNsYXRlKDQwJSwtNDAlKTstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MTAwJSAwO3RyYW5zZm9ybS1vcmlnaW46MTAwJSAwfS51bmktcGFnZS1oZWFkLWJ0bi1yZWQtZG90W2JhZGdlLXRleHRdOmFmdGVye2ZvbnQtc2l6ZToxMnB4O3dpZHRoOmF1dG87bWluLXdpZHRoOjE4cHg7bWF4LXdpZHRoOjQycHg7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzowIDNweDstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguNykgdHJhbnNsYXRlKDQwJSwtNDAlKTt0cmFuc2Zvcm06c2NhbGUoLjcpIHRyYW5zbGF0ZSg0MCUsLTQwJSl9LnVuaS1wYWdlLWhlYWQtYnRuLXNlbGVjdD4udW5pLWJ0bi1pY29uOmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtZmFtaWx5OnVuaWJ0bjtjb250ZW50OiJcZTYwMSI7bWFyZ2luLWxlZnQ6MnB4Oy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpIHNjYWxlKC44KTt0cmFuc2Zvcm06cm90YXRlKC05MGRlZykgc2NhbGUoLjgpfS51bmktcGFnZS1oZWFkLXNlYXJjaHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1mbGV4OjE7LXdlYmtpdC1mbGV4OjE7ZmxleDoxO21hcmdpbjowIDJweDtsaW5lLWhlaWdodDozMHB4O2ZvbnQtc2l6ZToxNXB4fS51bmktcGFnZS1oZWFkLXNlYXJjaC1pbnB1dHt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3BhZGRpbmctbGVmdDozNHB4O3RleHQtYWxpZ246bGVmdH0udW5pLXBhZ2UtaGVhZC1zZWFyY2gtcGxhY2Vob2xkZXJ7cG9zaXRpb246YWJzb2x1dGU7bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cGFkZGluZy1sZWZ0OjM0cHg7b3ZlcmZsb3c6aGlkZGVuO3dvcmQtYnJlYWs6a2VlcC1hbGw7d2hpdGUtc3BhY2U6cHJlfS51bmktcGFnZS1oZWFkLXNlYXJjaC1wbGFjZWhvbGRlci1yaWdodHtyaWdodDowfS51bmktcGFnZS1oZWFkLXNlYXJjaC1wbGFjZWhvbGRlci1jZW50ZXJ7bGVmdDo1MCU7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKX0udW5pLXBhZ2UtaGVhZC1zZWFyY2gtcGxhY2Vob2xkZXI6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MnB4O3dpZHRoOjMwcHg7Y29udGVudDoiXGVhMGUiO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjIwcHg7Zm9udC1mYW1pbHk6dW5pO3RleHQtYWxpZ246Y2VudGVyfXVuaS1wYWdlLWhlYWQgLnVuaS1wYWdlLWhlYWQtZnR7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy13ZWJraXQtYWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbDstd2Via2l0LWJveC1kaXJlY3Rpb246cmV2ZXJzZTstd2Via2l0LWZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlO2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlO2ZvbnQtc2l6ZToxM3B4fXVuaS1wYWdlLWhlYWQgLnVuaS1wYWdlLWhlYWRfX3RpdGxle2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDozMHB4O3RleHQtYWxpZ246Y2VudGVyO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpc311bmktcGFnZS1oZWFkIC51bmktcGFnZS1oZWFkX190aXRsZSAudW5pLWxvYWRpbmd7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDttYXJnaW4tdG9wOi0zcHh9dW5pLXBhZ2UtaGVhZCAudW5pLXBhZ2UtaGVhZF9fdGl0bGUgLnVuaS1wYWdlLWhlYWRfX3RpdGxlX2ltYWdle3dpZHRoOmF1dG87aGVpZ2h0OjI2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfXVuaS1wYWdlLWhlYWQgLnVuaS1wYWdlLWhlYWQtc2hhZG93e292ZXJmbG93OnZpc2libGV9dW5pLXBhZ2UtaGVhZCAudW5pLXBhZ2UtaGVhZC1zaGFkb3c6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7cmlnaHQ6MDt0b3A6MTAwJTtoZWlnaHQ6NXB4O2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9dW5pLXBhZ2UtaGVhZCAudW5pLXBhZ2UtaGVhZC1zaGFkb3ctZ3JleTphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybChodHRwczovL2Nkbi5kY2xvdWQubmV0LmNuL2ltZy9zaGFkb3ctZ3JleS5wbmcpfXVuaS1wYWdlLWhlYWQgLnVuaS1wYWdlLWhlYWQtc2hhZG93LWJsdWU6YWZ0ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoaHR0cHM6Ly9jZG4uZGNsb3VkLm5ldC5jbi9pbWcvc2hhZG93LWJsdWUucG5nKX11bmktcGFnZS1oZWFkIC51bmktcGFnZS1oZWFkLXNoYWRvdy1ncmVlbjphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybChodHRwczovL2Nkbi5kY2xvdWQubmV0LmNuL2ltZy9zaGFkb3ctZ3JlZW4ucG5nKX11bmktcGFnZS1oZWFkIC51bmktcGFnZS1oZWFkLXNoYWRvdy1vcmFuZ2U6YWZ0ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoaHR0cHM6Ly9jZG4uZGNsb3VkLm5ldC5jbi9pbWcvc2hhZG93LW9yYW5nZS5wbmcpfXVuaS1wYWdlLWhlYWQgLnVuaS1wYWdlLWhlYWQtc2hhZG93LXJlZDphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybChodHRwczovL2Nkbi5kY2xvdWQubmV0LmNuL2ltZy9zaGFkb3ctcmVkLnBuZyl9dW5pLXBhZ2UtaGVhZCAudW5pLXBhZ2UtaGVhZC1zaGFkb3cteWVsbG93OmFmdGVye2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vY2RuLmRjbG91ZC5uZXQuY24vaW1nL3NoYWRvdy15ZWxsb3cucG5nKX11bmktcGFnZS1oZWFkIC51bmktaWNvbi1jbGVhcnstd2Via2l0LWFsaWduLXNlbGY6Y2VudGVyO2FsaWduLXNlbGY6Y2VudGVyO3BhZGRpbmctcmlnaHQ6NXB4fXVuaS1wYWdlLXdyYXBwZXJ7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZX11bmktcGFnZS1oZWFkW3VuaS1wYWdlLWhlYWQtdHlwZT1kZWZhdWx0XX51bmktcGFnZS13cmFwcGVye2hlaWdodDpjYWxjKDEwMCUgLSA0NHB4KTtoZWlnaHQ6Y2FsYygxMDAlIC0gNDRweCAtIGNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC10b3ApKTtoZWlnaHQ6Y2FsYygxMDAlIC0gNDRweCAtIGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSl9dW5pLXBhZ2UtYm9keSx1bmktcGFnZS1yZWZyZXNoe2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCV9dW5pLXBhZ2UtcmVmcmVzaHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtoZWlnaHQ6NDBweH11bmktcGFnZS1yZWZyZXNoIC51bmktcGFnZS1yZWZyZXNoe3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNDVweDtsZWZ0OjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgtNTAlLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC01MCUsMCwwKTtiYWNrZ3JvdW5kOiNmZmY7Ym94LXNoYWRvdzowIDFweCA2cHggcmdiYSgwLDAsMCwuMTE3NjQ3KSwwIDFweCA0cHggcmdiYSgwLDAsMCwuMTE3NjQ3KTtkaXNwbGF5Om5vbmU7ei1pbmRleDo5OTd9dW5pLXBhZ2UtcmVmcmVzaCAudW5pLXBhZ2UtcmVmcmVzaCx1bmktcGFnZS1yZWZyZXNoIC51bmktcGFnZS1yZWZyZXNoLWlubmVye3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy13ZWJraXQtYWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXItcmFkaXVzOjUwJX11bmktcGFnZS1yZWZyZXNoIC51bmktcGFnZS1yZWZyZXNoLWlubmVye2xpbmUtaGVpZ2h0OjB9dW5pLXBhZ2UtcmVmcmVzaC51bmktcGFnZS1yZWZyZXNoLS1hYm9ydGluZyAudW5pLXBhZ2UtcmVmcmVzaCx1bmktcGFnZS1yZWZyZXNoLnVuaS1wYWdlLXJlZnJlc2gtLXB1bGxpbmcgLnVuaS1wYWdlLXJlZnJlc2gsdW5pLXBhZ2UtcmVmcmVzaC51bmktcGFnZS1yZWZyZXNoLS1yZWFjaGVkIC51bmktcGFnZS1yZWZyZXNoLHVuaS1wYWdlLXJlZnJlc2gudW5pLXBhZ2UtcmVmcmVzaC0tcmVmcmVzaGluZyAudW5pLXBhZ2UtcmVmcmVzaCx1bmktcGFnZS1yZWZyZXNoLnVuaS1wYWdlLXJlZnJlc2gtLXJlc3RvcmluZyAudW5pLXBhZ2UtcmVmcmVzaCx1bmktcGFnZS1yZWZyZXNoIC51bmktcGFnZS1yZWZyZXNoLWlubmVye2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4fXVuaS1wYWdlLXJlZnJlc2gudW5pLXBhZ2UtcmVmcmVzaC0tYWJvcnRpbmcgLnVuaS1wYWdlLXJlZnJlc2hfX3NwaW5uZXIsdW5pLXBhZ2UtcmVmcmVzaC51bmktcGFnZS1yZWZyZXNoLS1wdWxsaW5nIC51bmktcGFnZS1yZWZyZXNoX19zcGlubmVyLHVuaS1wYWdlLXJlZnJlc2gudW5pLXBhZ2UtcmVmcmVzaC0tcmVhY2hlZCAudW5pLXBhZ2UtcmVmcmVzaF9fc3Bpbm5lcix1bmktcGFnZS1yZWZyZXNoLnVuaS1wYWdlLXJlZnJlc2gtLXJlZnJlc2hpbmcgLnVuaS1wYWdlLXJlZnJlc2hfX2ljb24sdW5pLXBhZ2UtcmVmcmVzaC51bmktcGFnZS1yZWZyZXNoLS1yZXN0b3JpbmcgLnVuaS1wYWdlLXJlZnJlc2hfX2ljb257ZGlzcGxheTpub25lfXVuaS1wYWdlLXJlZnJlc2gudW5pLXBhZ2UtcmVmcmVzaC0tcmVmcmVzaGluZyAudW5pLXBhZ2UtcmVmcmVzaF9fc3Bpbm5lcnstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46Y2VudGVyIGNlbnRlcjt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlciBjZW50ZXI7LXdlYmtpdC1hbmltYXRpb246dW5pLXBhZ2UtcmVmcmVzaC1yb3RhdGUgMnMgbGluZWFyIGluZmluaXRlO2FuaW1hdGlvbjp1bmktcGFnZS1yZWZyZXNoLXJvdGF0ZSAycyBsaW5lYXIgaW5maW5pdGV9dW5pLXBhZ2UtcmVmcmVzaC51bmktcGFnZS1yZWZyZXNoLS1yZWZyZXNoaW5nIC51bmktcGFnZS1yZWZyZXNoX19wYXRoe3N0cm9rZS1kYXNoYXJyYXk6MSwyMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2UtbGluZWNhcDpyb3VuZDstd2Via2l0LWFuaW1hdGlvbjp1bmktcGFnZS1yZWZyZXNoLWRhc2ggMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZSx1bmktcGFnZS1yZWZyZXNoLWNvbG9yZnVsIDZzIGVhc2UtaW4tb3V0IGluZmluaXRlO2FuaW1hdGlvbjp1bmktcGFnZS1yZWZyZXNoLWRhc2ggMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZSx1bmktcGFnZS1yZWZyZXNoLWNvbG9yZnVsIDZzIGVhc2UtaW4tb3V0IGluZmluaXRlfUAtd2Via2l0LWtleWZyYW1lcyB1bmktcGFnZS1yZWZyZXNoLXJvdGF0ZXt0b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pO3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1Aa2V5ZnJhbWVzIHVuaS1wYWdlLXJlZnJlc2gtcm90YXRle3Rvey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxdHVybik7dHJhbnNmb3JtOnJvdGF0ZSgxdHVybil9fUAtd2Via2l0LWtleWZyYW1lcyB1bmktcGFnZS1yZWZyZXNoLWRhc2h7MCV7c3Ryb2tlLWRhc2hhcnJheToxLDIwMDtzdHJva2UtZGFzaG9mZnNldDowfTUwJXtzdHJva2UtZGFzaGFycmF5Ojg5LDIwMDtzdHJva2UtZGFzaG9mZnNldDotMzVweH10b3tzdHJva2UtZGFzaGFycmF5Ojg5LDIwMDtzdHJva2UtZGFzaG9mZnNldDotMTI0cHh9fUBrZXlmcmFtZXMgdW5pLXBhZ2UtcmVmcmVzaC1kYXNoezAle3N0cm9rZS1kYXNoYXJyYXk6MSwyMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6MH01MCV7c3Ryb2tlLWRhc2hhcnJheTo4OSwyMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6LTM1cHh9dG97c3Ryb2tlLWRhc2hhcnJheTo4OSwyMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6LTEyNHB4fX11bmktcGFnZXtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LnVuaS1hc3luYy1lcnJvcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7cmlnaHQ6MDt0b3A6MDtib3R0b206MDtjb2xvcjojOTk5O3BhZGRpbmc6MTAwcHggMTBweDt0ZXh0LWFsaWduOmNlbnRlcn0udW5pLWFzeW5jLWxvYWRpbmd7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCU7cGFkZGluZzo1MHB4O3RleHQtYWxpZ246Y2VudGVyfS51bmktYXN5bmMtbG9hZGluZyAudW5pLWxvYWRpbmd7d2lkdGg6MzBweDtoZWlnaHQ6MzBweH1AZm9udC1mYWNle2ZvbnQtd2VpZ2h0OjQwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWZhbWlseTp1bmltYXBidG47c3JjOnVybCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LEFBRUFBQUFLQUlBQUF3QWdUMU12TWtMTFhpUUFBQUNzQUFBQVlHTnRZWEFBRGUzWUFBQUJEQUFBQVVKbmJIbG16Q2VPRWdBQUFsQUFBQUQ0YUdWaFpCY0gvTmtBQUFOSUFBQUFObWhvWldFSHZnT2lBQUFEZ0FBQUFDUm9iWFI0QkFBQUFBQUFBNlFBQUFBR2JHOWpZUUI4QUFBQUFBT3NBQUFBQm0xaGVIQUJEd0JsQUFBRHRBQUFBQ0J1WVcxbGF6NXgwQUFBQTlRQUFBTFpjRzl6ZEFFUUFBSUFBQWF3QUFBQUp3QUVCQUFCa0FBRkFBZ0NpUUxNQUFBQWp3S0pBc3dBQUFIckFESUJDQUFBQWdBRkF3QUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUJRWmtWa0FFRHNNdXd5QTREL2dBQmNBNEFBZ0FBQUFBRUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBTUFBQUFEQUFBQUhBQUJBQUFBQUFBOEFBTUFBUUFBQUJ3QUJBQWdBQUFBQkFBRUFBRUFBT3d5Ly84QUFPd3kvLzhUendBQkFBQUFBQUFBQVFZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFBRC9vQVBnQTJBQUNBQXdBRmdBQUFFZUFUSTJOQ1lpQmdVakxnRW5OVFFtSWdZZEFRNEJCeU1pQmhRV093RWVBUmNWRkJZeU5qMEJQZ0UzTXpJMk5DWUJOVFFtSWdZZEFTNEJKek15TmpRbUt3RStBVGNWRkJZeU5qMEJIZ0VYSXlJR0ZCWTdBUTRCQWJBQkxVUXRMVVF0QWc4aUQ5T2NFaHdTbk5NUElnNFNFZzRpRDlPY0Vod1NuTk1QSWc0U0V2NVNFaHdTZ2E4T1BnNFNFZzQrRHErQkVod1NnYThPUGc0U0VnNCtEcThCZ0NJdExVUXRMUUtjMHc4aURoSVNEaUlQMDV3U0hCS2MwdzhpRGhJU0RpSVAwNXdTSEJMK2dqNE9FaElPUGc2dmdSSWNFb0d2RGo0T0VoSU9QZzZ2Z1JJY0VvR3ZBQUVBQUFBQkFBQm1WKzB6WHc4ODlRQUxCQUFBQUFBQTJnUmNiZ0FBQUFEYUJGeHVBQUQvb0FQZ0EyQUFBQUFJQUFJQUFBQUFBQUFBQVFBQUE0RC9nQUJjQkFBQUFBQWdBK0FBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQUFBQUFBQUFBQUFBQUFBQWZBQUFBQUVBQUFBQ0FGa0FBd0FBQUFBQUFnQUFBQW9BQ2dBQUFQOEFBQUFBQUFBQUFBQVNBTjRBQVFBQUFBQUFBQUFWQUFBQUFRQUFBQUFBQVFBUkFCVUFBUUFBQUFBQUFnQUhBQ1lBQVFBQUFBQUFBd0FSQUMwQUFRQUFBQUFBQkFBUkFENEFBUUFBQUFBQUJRQUxBRThBQVFBQUFBQUFCZ0FSQUZvQUFRQUFBQUFBQ2dBckFHc0FBUUFBQUFBQUN3QVRBSllBQXdBQkJBa0FBQUFxQUtrQUF3QUJCQWtBQVFBaUFOTUFBd0FCQkFrQUFnQU9BUFVBQXdBQkJBa0FBd0FpQVFNQUF3QUJCQWtBQkFBaUFTVUFBd0FCQkFrQUJRQVdBVWNBQXdBQkJBa0FCZ0FpQVYwQUF3QUJCQWtBQ2dCV0FYOEFBd0FCQkFrQUN3QW1BZFVLUTNKbFlYUmxaQ0JpZVNCcFkyOXVabTl1ZEFwMWJtbGphRzl2YzJWc2IyTmhkR2x2YmxKbFozVnNZWEoxYm1samFHOXZjMlZzYjJOaGRHbHZiblZ1YVdOb2IyOXpaV3h2WTJGMGFXOXVWbVZ5YzJsdmJpQXhMakIxYm1samFHOXZjMlZzYjJOaGRHbHZia2RsYm1WeVlYUmxaQ0JpZVNCemRtY3lkSFJtSUdaeWIyMGdSbTl1ZEdWc2JHOGdjSEp2YW1WamRDNW9kSFJ3T2k4dlptOXVkR1ZzYkc4dVkyOXRBQW9BUXdCeUFHVUFZUUIwQUdVQVpBQWdBR0lBZVFBZ0FHa0FZd0J2QUc0QVpnQnZBRzRBZEFBS0FIVUFiZ0JwQUdNQWFBQnZBRzhBY3dCbEFHd0Fid0JqQUdFQWRBQnBBRzhBYmdCU0FHVUFad0IxQUd3QVlRQnlBSFVBYmdCcEFHTUFhQUJ2QUc4QWN3QmxBR3dBYndCakFHRUFkQUJwQUc4QWJnQjFBRzRBYVFCakFHZ0Fid0J2QUhNQVpRQnNBRzhBWXdCaEFIUUFhUUJ2QUc0QVZnQmxBSElBY3dCcEFHOEFiZ0FnQURFQUxnQXdBSFVBYmdCcEFHTUFhQUJ2QUc4QWN3QmxBR3dBYndCakFHRUFkQUJwQUc4QWJnQkhBR1VBYmdCbEFISUFZUUIwQUdVQVpBQWdBR0lBZVFBZ0FITUFkZ0JuQURJQWRBQjBBR1lBSUFCbUFISUFid0J0QUNBQVJnQnZBRzRBZEFCbEFHd0FiQUJ2QUNBQWNBQnlBRzhBYWdCbEFHTUFkQUF1QUdnQWRBQjBBSEFBT2dBdkFDOEFaZ0J2QUc0QWRBQmxBR3dBYkFCdkFDNEFZd0J2QUcwQUFBQUFBZ0FBQUFBQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQ0FBQUJBZ0FBIikgZm9ybWF0KCJ0cnVldHlwZSIpfS51bmktc3lzdGVtLWNob29zZS1sb2NhdGlvbntkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDt0b3A6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6I2Y4ZjhmOH0udW5pLXN5c3RlbS1jaG9vc2UtbG9jYXRpb24gLm1hcHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MzAwcHh9LnVuaS1zeXN0ZW0tY2hvb3NlLWxvY2F0aW9uIC5tYXAtbG9jYXRpb257cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7Ym90dG9tOjUwJTt3aWR0aDozMnB4O2hlaWdodDo1MnB4O21hcmdpbi1sZWZ0Oi0xNnB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtc2l6ZToxMDAlfS51bmktc3lzdGVtLWNob29zZS1sb2NhdGlvbiAubWFwLW1vdmV7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjUwcHg7cmlnaHQ6MTBweDt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtsaW5lLWhlaWdodDo0MHB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czphdXRvO2N1cnNvcjpwb2ludGVyO2JveC1zaGFkb3c6MCAwIDVweCAxcHggcmdiYSgwLDAsMCwuMyl9LnVuaS1zeXN0ZW0tY2hvb3NlLWxvY2F0aW9uIC5tYXAtbW92ZT5pe2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtmb250Om5vcm1hbCBub3JtYWwgbm9ybWFsIDE0cHgvMSB1bmltYXBidG47bGluZS1oZWlnaHQ6aW5oZXJpdDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MjRweDt0ZXh0LXJlbmRlcmluZzphdXRvOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWR9LnVuaS1zeXN0ZW0tY2hvb3NlLWxvY2F0aW9uIC5uYXZ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjQ0cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLHJnYmEoMCwwLDAsLjMpLHJnYmEoMCwwLDAsMCkpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE4MGRlZyxyZ2JhKDAsMCwwLC4zKSxyZ2JhKDAsMCwwLDApKX0udW5pLXN5c3RlbS1jaG9vc2UtbG9jYXRpb24gLm5hdi1idG57cG9zaXRpb246YWJzb2x1dGU7Ym94LXNpemluZzpib3JkZXItYm94O3RvcDowO2xlZnQ6MDt3aWR0aDo2MHB4O2hlaWdodDo0NHB4O3BhZGRpbmc6NnB4O2xpbmUtaGVpZ2h0OjMycHg7Zm9udC1zaXplOjI2cHg7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcn0udW5pLXN5c3RlbS1jaG9vc2UtbG9jYXRpb24gLm5hdi1idG4uY29uZmlybXtsZWZ0OmF1dG87cmlnaHQ6MH0udW5pLXN5c3RlbS1jaG9vc2UtbG9jYXRpb24gLm5hdi1idG4uZGlzYWJsZXtvcGFjaXR5Oi40fS51bmktc3lzdGVtLWNob29zZS1sb2NhdGlvbiAubmF2LWJ0bj4udW5pLWJ0bi1pY29ue2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtsaW5lLWhlaWdodDppbmhlcml0O2JvcmRlci1yYWRpdXM6MnB4fS51bmktc3lzdGVtLWNob29zZS1sb2NhdGlvbiAubmF2LWJ0bi5jb25maXJtPi51bmktYnRuLWljb257YmFja2dyb3VuZC1jb2xvcjojMDA3YWZmfS51bmktc3lzdGVtLWNob29zZS1sb2NhdGlvbiAubWVudXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MzAwcHg7bGVmdDowO3dpZHRoOjEwMCU7Ym90dG9tOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmfS51bmktc3lzdGVtLWNob29zZS1sb2NhdGlvbiAuc2VhcmNoe2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDpob3Jpem9udGFsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LXdlYmtpdC1mbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC1kaXJlY3Rpb246cm93O2hlaWdodDo1MHB4O3BhZGRpbmc6OHB4O2xpbmUtaGVpZ2h0OjM0cHg7Ym94LXNpemluZzpib3JkZXItYm94O2JhY2tncm91bmQtY29sb3I6I2ZmZn0udW5pLXN5c3RlbS1jaG9vc2UtbG9jYXRpb24gLnNlYXJjaC1pbnB1dHstd2Via2l0LWJveC1mbGV4OjE7LXdlYmtpdC1mbGV4OjE7ZmxleDoxO2hlaWdodDoxMDAlO2JvcmRlci1yYWRpdXM6NXB4O3BhZGRpbmc6MCA1cHg7YmFja2dyb3VuZDojZWJlYmVifS51bmktc3lzdGVtLWNob29zZS1sb2NhdGlvbiAuc2VhcmNoLWJ0bnttYXJnaW4tbGVmdDo1cHg7Y29sb3I6IzAwN2FmZjtmb250LXNpemU6MTdweDt0ZXh0LWFsaWduOmNlbnRlcn0udW5pLXN5c3RlbS1jaG9vc2UtbG9jYXRpb24gLmxpc3R7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwcHg7bGVmdDowO3dpZHRoOjEwMCU7Ym90dG9tOjA7cGFkZGluZy1ib3R0b206MTBweH0udW5pLXN5c3RlbS1jaG9vc2UtbG9jYXRpb24gLmxpc3QtbG9hZGluZ3tkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDtoZWlnaHQ6NTBweDstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstd2Via2l0LWp1c3RpZnktY29udGVudDpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LXdlYmtpdC1hbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS51bmktc3lzdGVtLWNob29zZS1sb2NhdGlvbiAubGlzdC1pdGVte3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6MTBweDtwYWRkaW5nLXJpZ2h0OjQwcHg7Y3Vyc29yOnBvaW50ZXJ9LnVuaS1zeXN0ZW0tY2hvb3NlLWxvY2F0aW9uIC5saXN0LWl0ZW0uc2VsZWN0ZWQ6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MTBweDt3aWR0aDozMHB4O2hlaWdodDozMHB4O21hcmdpbi10b3A6LTE1cHg7dGV4dC1hbGlnbjpjZW50ZXI7Y29udGVudDoiXGU2NTEiO2ZvbnQ6bm9ybWFsIG5vcm1hbCBub3JtYWwgMTRweC8xIHVuaWJ0bjtmb250LXNpemU6MjRweDtsaW5lLWhlaWdodDozMHB4O2NvbG9yOiMwMDdhZmY7dGV4dC1yZW5kZXJpbmc6YXV0bzstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfS51bmktc3lzdGVtLWNob29zZS1sb2NhdGlvbiAubGlzdC1pdGVtOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtoZWlnaHQ6MXB4O2xlZnQ6MTBweDtib3R0b206MDt3aWR0aDoxMDAlO2JhY2tncm91bmQtY29sb3I6I2QzZDNkM30udW5pLXN5c3RlbS1jaG9vc2UtbG9jYXRpb24gLmxpc3QtaXRlbS10aXRsZXtmb250LXNpemU6MTRweDtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LnVuaS1zeXN0ZW0tY2hvb3NlLWxvY2F0aW9uIC5saXN0LWl0ZW0tZGV0YWlse2ZvbnQtc2l6ZToxMnB4O2NvbG9yOmdyZXk7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ODAwcHgpey51bmktc3lzdGVtLWNob29zZS1sb2NhdGlvbiAubWFwe3RvcDowO2hlaWdodDoxMDAlfS51bmktc3lzdGVtLWNob29zZS1sb2NhdGlvbiAubWFwLW1vdmV7Ym90dG9tOjEwcHg7cmlnaHQ6MzIwcHh9LnVuaS1zeXN0ZW0tY2hvb3NlLWxvY2F0aW9uIC5tZW51e3RvcDo1NHB4O2xlZnQ6YXV0bztyaWdodDoxMHB4O3dpZHRoOjMwMHB4O2JvdHRvbToxMHB4O21heC1oZWlnaHQ6NjAwcHg7Ym94LXNoYWRvdzowIDAgMjBweCA1cHggcmdiYSgwLDAsMCwuMyl9fS51bmktc3lzdGVtLW9wZW4tbG9jYXRpb257ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOiNmOGY4Zjg7ei1pbmRleDo5OTl9LnVuaS1zeXN0ZW0tb3Blbi1sb2NhdGlvbiAubWFwe3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2JvdHRvbTo4MHB4O2hlaWdodDphdXRvfS51bmktc3lzdGVtLW9wZW4tbG9jYXRpb24gLmluZm97cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjgwcHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO3BhZGRpbmc6MTVweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bGluZS1oZWlnaHQ6MS41fS51bmktc3lzdGVtLW9wZW4tbG9jYXRpb24gLmluZm8+Lm5hbWV7Zm9udC1zaXplOjE3cHg7Y29sb3I6IzExMX0udW5pLXN5c3RlbS1vcGVuLWxvY2F0aW9uIC5pbmZvPi5hZGRyZXNze2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiM2NjZ9LnVuaS1zeXN0ZW0tb3Blbi1sb2NhdGlvbiAuaW5mbz4ubmF2e3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MTVweDt3aWR0aDo1MHB4O2hlaWdodDo1MHB4O2JvcmRlci1yYWRpdXM6NTAlO21hcmdpbi10b3A6LTI1cHg7YmFja2dyb3VuZC1jb2xvcjojMDA3YWZmfS51bmktc3lzdGVtLW9wZW4tbG9jYXRpb24gLmluZm8+Lm5hdj5zdmd7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3BhZGRpbmc6MTBweDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LnVuaS1zeXN0ZW0tb3Blbi1sb2NhdGlvbiAubWFwLW1vdmV7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjUwcHg7cmlnaHQ6MTBweDt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtsaW5lLWhlaWdodDo0MHB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czphdXRvO2N1cnNvcjpwb2ludGVyO2JveC1zaGFkb3c6MCAwIDVweCAxcHggcmdiYSgwLDAsMCwuMyl9LnVuaS1zeXN0ZW0tb3Blbi1sb2NhdGlvbiAubWFwLW1vdmU+aXtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Zm9udDpub3JtYWwgbm9ybWFsIG5vcm1hbCAxNHB4LzEgdW5pbWFwYnRuO2xpbmUtaGVpZ2h0OmluaGVyaXQ7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjI0cHg7dGV4dC1yZW5kZXJpbmc6YXV0bzstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfS51bmktc3lzdGVtLW9wZW4tbG9jYXRpb24gLm5hdi1idG4tYmFja3twb3NpdGlvbjphYnNvbHV0ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7dG9wOjA7bGVmdDowO3dpZHRoOjQ0cHg7aGVpZ2h0OjQ0cHg7cGFkZGluZzo2cHg7bGluZS1oZWlnaHQ6MzJweDtmb250LXNpemU6MjZweDtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyfS51bmktc3lzdGVtLW9wZW4tbG9jYXRpb24gLm5hdi1idG4tYmFjaz4udW5pLWJ0bi1pY29ue2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtsaW5lLWhlaWdodDppbmhlcml0O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNSl9LnVuaS1zeXN0ZW0tb3Blbi1sb2NhdGlvbiAubWFwLWNvbnRlbnR7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3dpZHRoOjEwMCU7Ym90dG9tOjA7b3ZlcmZsb3c6aGlkZGVufS51bmktc3lzdGVtLW9wZW4tbG9jYXRpb24gLm1hcC1jb250ZW50LmZpeC1wb3NpdGlvbnt0b3A6LTc0cHg7Ym90dG9tOi00NHB4fS51bmktc3lzdGVtLW9wZW4tbG9jYXRpb24gLm1hcC1jb250ZW50PmlmcmFtZXt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjpub25lfS51bmktc3lzdGVtLW9wZW4tbG9jYXRpb24gLmFjdFRvbmF2e3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjE2cHg7Ym90dG9tOjU2cHg7d2lkdGg6NjBweDtoZWlnaHQ6NjBweDtib3JkZXItcmFkaXVzOjYwcHh9dW5pLWF1ZGlve2Rpc3BsYXk6bm9uZX11bmktYXVkaW9bY29udHJvbHNde2Rpc3BsYXk6aW5saW5lLWJsb2NrfXVuaS1hdWRpb1toaWRkZW5de2Rpc3BsYXk6bm9uZX0udW5pLWF1ZGlvLWRlZmF1bHR7bWF4LXdpZHRoOjEwMCU7bWluLXdpZHRoOjMwMnB4O2hlaWdodDo2NXB4O2JhY2tncm91bmQ6I2ZjZmNmYztib3JkZXI6MXB4IHNvbGlkICNlMGUwZTA7Ym9yZGVyLXJhZGl1czoyLjVweDtkaXNwbGF5OmlubGluZS1ibG9jaztvdmVyZmxvdzpoaWRkZW59LnVuaS1hdWRpby1sZWZ0e3dpZHRoOjY1cHg7aGVpZ2h0OjY1cHg7ZmxvYXQ6bGVmdDtiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJSA1MCV9LnVuaS1hdWRpby1idXR0b257d2lkdGg6MjRweDtoZWlnaHQ6MjRweDttYXJnaW46MjAuNXB4O2JhY2tncm91bmQtc2l6ZTpjb3Zlcn0udW5pLWF1ZGlvLWJ1dHRvbi5wbGF5e2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBWUFBQUJYQXZtSEFBQUFBWE5TUjBJQXJzNGM2UUFBQjRkSlJFRlVhQVhOV2cxTWxWVVl2cGNmSVJDSitNbkNhT0JsOGRPY09DRVFaOWttSTVjUUc1WWI2TWlmS2JNYUdWb2JPdGxpYlRXSERwZ3B4QlV3RjA3ODI2aUZzTWtZSmhnNTU5SmRHaVFTa1V6U0JBMFFrWjduNC91K25Yc3Z3ZjNqd3J1OTkveS8zL04rM3pudmVjOTdybGJqQUJvZkgzOEdZdGFBVjRNandEcXdIOWdIVEJvRTN3ZDNnQTNnaStCNnJWWTdoSFIyQ0tEOXdGbmdzK0JIWUd1Sll6aVdNcWlzY3dnUDh3THZCUStBSFVXVVJabGUxbXFodFhRQWhMdWk3eFp3UHZnRnNCRU5EZzcrRHJwMDY5YXQyejA5UGYwM2I5Nzh1Nm1wcVorZFZxMWFGUkFWRmVXL2FOR2lnTkRRMEpmRHdzSVNmWHg4d293RVRCVCtRcElQTHNmMEdwdW9tdnJYSWdVQVBoaGl6b0dYaStJSSt0cTFhei9vOWZwTEZSVVZkOFMyNmZKWldWa0xOMi9lbkJnVEUvUFcvUG56RjV2MGIwUDVIU2p4cDBtOVdYRmFCUUQrTll3NkMxYmYrdkR3Y0Y5RFE0TisvZnIxOWNpUG0wbTFvc0xUMDFONzZ0U3BOYUQzUFR3OEZncEQrVFhTb0VTclVHZVduVklCZ00vRWlES3dKMGVpUE5yUzBuSnN3NFlOTmQzZDNhT3NjeFNGaElTNFYxZFhweWNrSkdSQjVqeFo3akRTYlZEaVc3bHNscmlZMWNnVk12ampLRXJnUjBkSC96bDA2TkN1RlN0V2ZPZG84SHdrWlZMMndZTUhQM255NUFsTkxvblBQaTVqa1NwTWZ5YjlBaGpBYWRNSWxzQmpybmRtWjJmbm5UaHhvczlVd0V5VU16SXluajl5NUVnQjFnYjNFeEsveEJ1VFRTY3pCUUNlQy9abnNEVG5DUjZmOVlNYk4yNVFpTk1vT2pyYXM3VzF0Y2piMnp0Y2ZpalhSS3pwd2phYVFnQlBVMGxySTRIbnRPR2Jkelo0QXVZenQyL2Z2bTlzYk93ZXl5QmlPaWRqbENyNFk2UUF5clR6a3FsRXg5R1NrcEo5enBvMkJHTktmSFpSVWRGKzFEK1cyNGlOR0ZWU3B4QUFjeGVrcnlLOS9jdVhMeC9Gb3FwV2U4NWlCbFBwdmJpNHVCMHlCRTRsSGFiU3Z5eUxYMkFYeWhKNDJubVl5dFBzTUJjSSs4MFpXS1plR1FzeEVxdEVrZ0o0KzNTbTlzaDFHbTVTTTJFcUZmbldwc1JTVjFkWElZemJJMk5XdjBBcUdpWFhsKzRCZDFpaHMwWFp1M2Z2SGhnWUdOQlhWVlVsV0RUQXlrN3A2ZWtOSXlNajdmSXdZaVZtSXdXa052bzJ0cmdIQVFFQnkrQ2doVzdjdVBHTHZyNitMM2Z1M1BtU0pOQkJQOFIwOWVyVkh3VnhFd3JnVS9Bd2txUTAwREZUOGxhbXFrRUlDZ3FLS3k0dTFzTVU3bGk2ZEtuVkx2TC9QYmUwdExSRmFFc2lkaTErVWxCNW5nM2N0QllzV0xCVjZHUnhGbko0eWpJajdDWDM2dXZyUzFOVFUrdXdFTTNhcmEzQWwvZ2FUbCtFUEM2VmkvaE5SVWhIUjhkUFN0NVJxYnU3KzNOcjE2NzlyTCsvLzNCQlFZSHlZSnZGZDNWMWlUTmtOUlY0UlpGMkc2VGtIWjM2K3ZwRzV1WGxIY2FoNTlQazVHU2JqNUFZM3kxZ2k2QUNpc09rNFVsS2FKeUpyQlluc3VUYTJ0cmp6YzNONy9yNys5TjFzWW82T3pzZkNBTjBWRUI5R3p3R0NvMHpsblYxZGZWT1RFek1objNYbDVlWHgxcnpJQk9NZmxSQXN2OFVvcHhoclJGb1QxOHZMNjhRSEN1L2FtOXZ6N0ZVamdsR0h5b3c2eFFjSEJ4akt3Z3F3S0NUUkl3ZUtIbG5wWmhHRGZDN0xQNENKaGdIM1FDVXh6ZC9BbWJvQTBrUDh6Tk5jRHQrdzhaVXZIdjM3bCt0ZWRhU0pVdWVGZnJmcHdKMG9TVkx4TGlOMERnaldXeHNEeG9iRzc5SlNVbjUzaGFYUmFmVCtRckFPamlGREVvRmcwNUszdEVwZHVveGc4RndldVhLbFJsSlNVbTF0b0FucHZEd2NCNTVGVEpRQWRVRllNUk1hWEZraWwzNGw5emMzSzJSa1pFbFY2NWNlV1NQYkN6NDE0WHhGNmtBWFdmcGRNTndIeU5tUWdlN3NrTkRRM2RPbmp5NVB6QXdNTGV3c0xETExtRVlESk1iNU9ibUZpWExJZVo2Rnh6TkdPSytJRmV5azkxZjRlblRweU50YlczSElpSWlOc0hDTkNteTdVMXpjbktXQ1RJdUVEdS9BT244UktMUk1GYkpjSjlTdGpSbEJJTjk0WTQwWm1abWJvcU5qYTNpU2NyUzhkUDFJeWFFV3Q0VytrbVlhWVZJTEhBLzhHR2dsYkhLZGV2V3FWK0ZIYVlqT0dvZnc4MTFoY2ZaT1YxZlc5cHh6RTF3Y1hHSmxzY1NxNlNBK3FaaEpmYWk4bk4yd05IdERoYjBwdDdlWG9lOVFjcTFsUmczaFJ2TmtMdHl5dHVIZkFIbEtWT0krVUl3UXhZYVJvbHJhbXJTbVo4TGhMZWZKSUFuUm1LVlNGVUFIYmlxOHllcU5ScEdpV0U1WGxYS3M1V1dsWlV0aHUzL1NIaCt2b3hWcWxLbkVFdVlSdlRQZWU1Y3pqS2p4RENyMmJNVm5ZTkY5SU83ZlJSUUFva0h4SXVQZUNpZzN0NFlLY0FlVUNJWWlScmNmZmp3WVVkOGZQeUh6bzZQd3VKNFhMOSsvUUFXcmpJTE9IV21EdTVTQVdqSGE1MDBzQlNOWm9pYlVXS0d2Tm51RE9LYk53RlBMTHl0SVRZalV0ZUFXSXVPdk5iWnB0UXh4RjFaV1huWUdXdUNjNTdUUm5qemhNRmJHbUl5STdNcEpQYkFkTXBFdVF6c0tkYy9oaStqVDB0TE8rTm9FMHRUU1dzakw5aDU4dlA0NXFlOFlwcFNBUXFCRW1hWGZBeTBNbGJKY0ordFhxVU1VTU1kbHBzVUl1RTc4SllWTzg5bXpubjdMdm1VaDhnTCt4ektrblZTNmhtclpMaVBFVE5ycjFucG1ORzNvWHNnN0xDS2FGb2J4MXl6S2hLaEJFM3NGbkErbUNGdUk0SXlCdXlXellqYi9NSFFoK2xGTjA5U1BJeGdpcnhJbHhoZXBlSVdpSEw0MXZQQkZsOTBpNE10eWtPUk9mVlhBNHRBVDlZSmlzeUpQM3RNdTRnbkEyOWFCMlVZNFY0RFhnMW0vRk1IOWdNck1TZDZqd3dlOFB4dEFQTVU2SkMvMi93SHV5STJjTXNOQlJJQUFBQUFTVVZPUks1Q1lJST0pfS51bmktYXVkaW8tYnV0dG9uLnBhdXNle2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBWUFBQUJYQXZtSEFBQUFBWE5TUjBJQXJzNGM2UUFBQmF0SlJFRlVhQVhWV2wxSXBGVVlubGxaR1VmM3dsejZNWEVSMUVTN3M4M1ZVREp3NktwZGFTVER3TW5ZRlNLNktOaXJvb0h1bGxLUUNOelFSalovd29tMXU5QUxRMG1UMWt0RmRFQldYTGRpYmFIMWp3bXg1em1lODNXK3oySG0rN2JabWM4WDNqbC83M3ZPODM3bi96M2o5YVNCam82TzhsQk5DN2daWEFVdUJ4ZUN6NEZKajhBUHdUSHdDbmdhUE9YMWV2Y1Jab2NBdWhBY0F0OEc3NEtkRW5Xb3l6cG9iR1lJamZuQm40RC9CcWVMV0JmcjlEdTF3bXRYQVpYblFQWTljQmo4SE5oRWUzdDdzYlcxdGZuMTlmVzdtNXViRDVhWGw3ZG5abVllVUtpcHFlbDhkWFYxVVVsSnlmbXlzcklMRlJVVjlYNi9uOFBNU3ZlUkVRWVBZSGdkV2dzVHBXMFpBUERQUTNrQy9KSmVDVUV2TGk3K05EZzQrRXNrRXZsZEwwc1ZENFZDejNaMWRiMVNXMXY3ZWdKajdrRC9Db3k0bDZxZWxBWUFmQjBxdVEwMnZubzhIcjgvT1RrWmFXdHJtem80T0RoSzFVaXljcC9QNXgwZkgyOEpCQUtoM054Y293M29zRGRhWWNSQ012MmtCZ0Q4TzFEK0J1eVRsY1RuNStjajdlM3QwWTJOalgrU1ZleTByTFMwOU96WTJGaXd2cjQrQk4xY3FYK0E4Q3FNK0U2bVR3Um5UdVRJREFuK0ZwSUMvT0hoNFYrOXZiMGZOelEwaktZYlBKdGtuYXliYmJBdENZTnQzNUpZWkpZNVNOZ0RjdGo4REZFQmZuZDNkNjI3dS92VDRlSGhQOHpxVHliVjBkSHhUSDkvLytmNStma1ZzZ1gyeEt1Smh0TUpBd0NlRS9ZM3NCaVBCRjlYVi9maDB0SVNLOGtZMWRUVStCWVdGdm8wSXpnbkxsb250bWtJQVR5WFNxNDJBank3a2w4KzArRDVsZGdtMjlhR0V6Rk5TSXdVRVdReUFEbGM1OVZTR2UvcjYvc3NVOFBtR0k3NWwyMFRBM0xqc29UWWlORWdZd2pCTXU2Q1BLdUlyNC9WcGgrVGFzeVF6R0prYm03dWJheE8xeVFFRHFWeURLVTlwdlVlK0FocEFaN3JQSmJLSHlqZ0J1S3lUVXdTQ3pFU3F5QmhBTDQrRDFQWFpaNkhtOVNUV0NwVi9VNURZaUVtVGUrNnhPd1JRd2lKRUFxL3BRQ1BCMFZGUmRmKzd3N0x1dEpKM0xHM3Q3ZHZhc2VPZHpHTUltb0lYVmFOOFd6ak52REVSa3pFcG5BaUZKalA0T3Z6TWhKUUJUeVlxYmpkRURvdjcrL3ZmNCs2cHUwd1pRY0dCaTdhclYvSldiQUZpTjJMbnpjZzhDT0Z1R2tWRkJTbzJhNzBVb1lFaEM1K09xV2dKb0F2K21kZVh0NWJXcGF0Nk03T3prMXRjN3ZNSWZTYTBseGRYZjFWeFoyRVRzR3o3c2ZSb1Y0c0Z0TXhOdE9BRjFoQXVnczZqcm4zbHhjbURWMFZEVEJ1UnJ4SmFZV3VqRm93bHRNQTQwTE5hNkFyVVd1Z0xCZ0xhWUJ5ZlhqVUhWYVRkMTNVZ3ZFY0RUalZSQVBvZEJKRTc0R0t1elcwWUh4RUErZ3hFMFRYaDRxN05iUmdmRWdEZUlRV1JMK05pcnMxdEdDTTBZQVZCWlpPSnhWM2EyakJ1RUlEcGhWWWVzeFUzRW5JWTRFVGVjbytqZzcxTEJpbmFjQVVXTnh1ZUZTbHg0eUNUbWgwZFBSTEo0QW9Pekl5OG9XVE5paExiTnB4bXBpbjFIMkFucmNyRkpxZG5mMEtNOTAxdHpGaVVvUTk0TTNHeHNZUFpIb0M5NEZXOWdCSm5FWVpvYThTQnkxaEdOTnVJV0lpTmcyUHdLd2JJUFlEZGhGOWxacWdLNkxFcEEwZll2M1BBSFFGOTRJYkNpa2RyY1hGeFdkVk90c2gvYWJFcE9HNElUR2J2Qkk5RUJBM2YzcUpvOUZvVUZQSWFwUk9YODF6VFl6RUtrZ05JUThzNHF3T0gyZDdQUFFTOS9UMHZLalMyUXFKUVhxc0ZZU3d4Q3JTcHNtSzZ5VmRpN3p4MEFQbW9WdXZzN1B6L1d4NTUramtIUm9hK2pvbkorY3A0Z0hkQVYrQ0FjYnJqY2tBU3NDSTArdmNwUUd3N2g2Q1ZyRHdSdk1DVFM4eHZ3YkxNMEZzeStLWkpoYSsxaENiaVl3NW9PZENrTTg2VjFVZWpXQlhabUpPc0EyMnBYa2VDSU92TkFtZm1rNE1JUVdhSVlaVHdpZW1ZREFZM2RyYWNzVVRVMUlEcEJHbjk1RlA5WWFjMktmem1WVXpna3NzSHhmQ1lPR0dSMmdRdlhwMGpORzNsT3loK3dLb3NyTHlrbVdNcTNxNFNZWEJ0aCs2bGFMdEVMM2hxcjhhMkFadUZZUWhydml6UjhwSmJBV2VLQTFqNk9GdUFUZURxOEQwOWhXQ2xjK0pwMGNlR0huLzVoV1d0OEMwL04zbVgxNUM0YkRuQ0l1QUFBQUFBRWxGVGtTdVFtQ0MpfS51bmktYXVkaW8tcmlnaHR7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDo2NXB4O21hcmdpbi1sZWZ0OjY1cHg7cGFkZGluZzoxMXB4IDE2LjVweCAxMy41cHggMTVweDtvdmVyZmxvdzpoaWRkZW59LnVuaS1hdWRpby10aW1le21hcmdpbi10b3A6My41cHg7aGVpZ2h0OjE2LjVweDtmb250LXNpemU6MTJweDtjb2xvcjojODg4O2Zsb2F0OnJpZ2h0fS51bmktYXVkaW8taW5mb3ttYXJnaW4tcmlnaHQ6NzBweDtvdmVyZmxvdzpoaWRkZW59LnVuaS1hdWRpby1uYW1le2hlaWdodDoyMi41cHg7bGluZS1oZWlnaHQ6MjIuNXB4O21hcmdpbi1ib3R0b206My41cHg7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzM1MzUzNX0udW5pLWF1ZGlvLWF1dGhvciwudW5pLWF1ZGlvLW5hbWV7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS51bmktYXVkaW8tYXV0aG9ye2hlaWdodDoxNC41cHg7bGluZS1oZWlnaHQ6MTQuNXB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM4ODh9dW5pLWJ1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87cGFkZGluZy1sZWZ0OjE0cHg7cGFkZGluZy1yaWdodDoxNHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LXNpemU6MThweDt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTtsaW5lLWhlaWdodDoyLjU1NTU1NTU2O2JvcmRlci1yYWRpdXM6NXB4Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtvdmVyZmxvdzpoaWRkZW47Y29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY4Zjg7Y3Vyc29yOnBvaW50ZXJ9dW5pLWJ1dHRvbltoaWRkZW5de2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9dW5pLWJ1dHRvbjphZnRlcntjb250ZW50OiIgIjt3aWR0aDoyMDAlO2hlaWdodDoyMDAlO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjIpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC41KTt0cmFuc2Zvcm06c2NhbGUoLjUpOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDA7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlci1yYWRpdXM6MTBweH11bmktYnV0dG9uW25hdGl2ZV17cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfXVuaS1idXR0b25bbmF0aXZlXSAudW5pLWJ1dHRvbi1jb3Zlci12aWV3LXdyYXBwZXJ7Ym9yZGVyOmluaGVyaXQ7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLXJhZGl1czppbmhlcml0O2JhY2tncm91bmQtY29sb3I6aW5oZXJpdH11bmktYnV0dG9uW25hdGl2ZV0gLnVuaS1idXR0b24tY292ZXItdmlldy1pbm5lcntwYWRkaW5nLWxlZnQ6MTRweDtwYWRkaW5nLXJpZ2h0OjE0cHh9dW5pLWJ1dHRvbiB1bmktY292ZXItdmlld3tsaW5lLWhlaWdodDppbmhlcml0O3doaXRlLXNwYWNlOmluaGVyaXR9dW5pLWJ1dHRvblt0eXBlPWRlZmF1bHRde2NvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjojZjhmOGY4fXVuaS1idXR0b25bdHlwZT1wcmltYXJ5XXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzAwN2FmZn11bmktYnV0dG9uW3R5cGU9d2Fybl17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNlNjQzNDB9dW5pLWJ1dHRvbltkaXNhYmxlZF17Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjYpO2N1cnNvcjpub3QtYWxsb3dlZH11bmktYnV0dG9uW2Rpc2FibGVkXTpub3QoW3R5cGVdKSx1bmktYnV0dG9uW2Rpc2FibGVkXVt0eXBlPWRlZmF1bHRde2NvbG9yOnJnYmEoMCwwLDAsLjMpO2JhY2tncm91bmQtY29sb3I6I2Y3ZjdmN311bmktYnV0dG9uW2Rpc2FibGVkXVt0eXBlPXByaW1hcnlde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDEyMiwyNTUsLjYpfXVuaS1idXR0b25bZGlzYWJsZWRdW3R5cGU9d2Fybl17YmFja2dyb3VuZC1jb2xvcjojZWM4Yjg5fXVuaS1idXR0b25bdHlwZT1wcmltYXJ5XVtwbGFpbl17Y29sb3I6IzAwN2FmZjtib3JkZXI6MXB4IHNvbGlkICMwMDdhZmY7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApfXVuaS1idXR0b25bdHlwZT1wcmltYXJ5XVtwbGFpbl1bZGlzYWJsZWRde2NvbG9yOnJnYmEoMCwwLDAsLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yKX11bmktYnV0dG9uW3R5cGU9cHJpbWFyeV1bcGxhaW5dOmFmdGVye2JvcmRlci13aWR0aDowfXVuaS1idXR0b25bdHlwZT1kZWZhdWx0XVtwbGFpbl17Y29sb3I6IzM1MzUzNTtib3JkZXI6MXB4IHNvbGlkICMzNTM1MzU7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApfXVuaS1idXR0b25bdHlwZT1kZWZhdWx0XVtwbGFpbl1bZGlzYWJsZWRde2NvbG9yOnJnYmEoMCwwLDAsLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yKX11bmktYnV0dG9uW3R5cGU9ZGVmYXVsdF1bcGxhaW5dOmFmdGVye2JvcmRlci13aWR0aDowfXVuaS1idXR0b25bcGxhaW5de2NvbG9yOiMzNTM1MzU7Ym9yZGVyOjFweCBzb2xpZCAjMzUzNTM1O2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKX11bmktYnV0dG9uW3BsYWluXVtkaXNhYmxlZF17Y29sb3I6cmdiYSgwLDAsMCwuMik7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjIpfXVuaS1idXR0b25bcGxhaW5dOmFmdGVye2JvcmRlci13aWR0aDowfXVuaS1idXR0b25bcGxhaW5dW25hdGl2ZV0gLnVuaS1idXR0b24tY292ZXItdmlldy1pbm5lcntwYWRkaW5nOjB9dW5pLWJ1dHRvblt0eXBlPXdhcm5dW3BsYWluXXtjb2xvcjojZTY0MzQwO2JvcmRlcjoxcHggc29saWQgI2U2NDM0MDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMCl9dW5pLWJ1dHRvblt0eXBlPXdhcm5dW3BsYWluXVtkaXNhYmxlZF17Y29sb3I6cmdiYSgwLDAsMCwuMik7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjIpfXVuaS1idXR0b25bdHlwZT13YXJuXVtwbGFpbl06YWZ0ZXJ7Ym9yZGVyLXdpZHRoOjB9dW5pLWJ1dHRvbltzaXplPW1pbmlde2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjIuMztmb250LXNpemU6MTNweDtwYWRkaW5nOjAgMS4zNGVtfXVuaS1idXR0b25bc2l6ZT1taW5pXVtuYXRpdmVde3BhZGRpbmc6MH11bmktYnV0dG9uW3NpemU9bWluaV1bbmF0aXZlXSAudW5pLWJ1dHRvbi1jb3Zlci12aWV3LWlubmVye3BhZGRpbmc6MCAxLjM0ZW19dW5pLWJ1dHRvbltsb2FkaW5nXTpub3QoW2Rpc2FibGVkXSl7Y3Vyc29yOnByb2dyZXNzfXVuaS1idXR0b25bbG9hZGluZ106YmVmb3Jle2NvbnRlbnQ6IiAiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7dmVydGljYWwtYWxpZ246bWlkZGxlOy13ZWJraXQtYW5pbWF0aW9uOnVuaS1sb2FkaW5nIDFzIHN0ZXBzKDEyKSBpbmZpbml0ZTthbmltYXRpb246dW5pLWxvYWRpbmcgMXMgc3RlcHMoMTIpIGluZmluaXRlO2JhY2tncm91bmQtc2l6ZToxMDAlfXVuaS1idXR0b25bbG9hZGluZ11bdHlwZT1wcmltYXJ5XXtjb2xvcjpoc2xhKDAsMCUsMTAwJSwuNik7YmFja2dyb3VuZC1jb2xvcjojMDA2MmNjfXVuaS1idXR0b25bbG9hZGluZ11bdHlwZT1wcmltYXJ5XVtwbGFpbl17Y29sb3I6IzAwN2FmZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMCl9dW5pLWJ1dHRvbltsb2FkaW5nXVt0eXBlPWRlZmF1bHRde2NvbG9yOnJnYmEoMCwwLDAsLjYpO2JhY2tncm91bmQtY29sb3I6I2RlZGVkZX11bmktYnV0dG9uW2xvYWRpbmddW3R5cGU9ZGVmYXVsdF1bcGxhaW5de2NvbG9yOiMzNTM1MzU7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApfXVuaS1idXR0b25bbG9hZGluZ11bdHlwZT13YXJuXXtjb2xvcjpoc2xhKDAsMCUsMTAwJSwuNik7YmFja2dyb3VuZC1jb2xvcjojY2UzYzM5fXVuaS1idXR0b25bbG9hZGluZ11bdHlwZT13YXJuXVtwbGFpbl17Y29sb3I6I2U2NDM0MDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMCl9dW5pLWJ1dHRvbltsb2FkaW5nXVtuYXRpdmVdOmJlZm9yZXtjb250ZW50Om5vbmV9LmJ1dHRvbi1ob3Zlcntjb2xvcjpyZ2JhKDAsMCwwLC42KTtiYWNrZ3JvdW5kLWNvbG9yOiNkZWRlZGV9LmJ1dHRvbi1ob3ZlcltwbGFpbl17Y29sb3I6cmdiYSg1Myw1Myw1MywuNik7Ym9yZGVyLWNvbG9yOnJnYmEoNTMsNTMsNTMsLjYpO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKX0uYnV0dG9uLWhvdmVyW3R5cGU9cHJpbWFyeV17Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjYpO2JhY2tncm91bmQtY29sb3I6IzAwNjJjY30uYnV0dG9uLWhvdmVyW3R5cGU9cHJpbWFyeV1bcGxhaW5de2NvbG9yOnJnYmEoMCwxMjIsMjU1LC42KTtib3JkZXItY29sb3I6cmdiYSgwLDEyMiwyNTUsLjYpO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKX0uYnV0dG9uLWhvdmVyW3R5cGU9ZGVmYXVsdF17Y29sb3I6cmdiYSgwLDAsMCwuNik7YmFja2dyb3VuZC1jb2xvcjojZGVkZWRlfS5idXR0b24taG92ZXJbdHlwZT1kZWZhdWx0XVtwbGFpbl17Y29sb3I6cmdiYSg1Myw1Myw1MywuNik7Ym9yZGVyLWNvbG9yOnJnYmEoNTMsNTMsNTMsLjYpO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKX0uYnV0dG9uLWhvdmVyW3R5cGU9d2Fybl17Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjYpO2JhY2tncm91bmQtY29sb3I6I2NlM2MzOX0uYnV0dG9uLWhvdmVyW3R5cGU9d2Fybl1bcGxhaW5de2NvbG9yOnJnYmEoMjMwLDY3LDY0LC42KTtib3JkZXItY29sb3I6cmdiYSgyMzAsNjcsNjQsLjYpO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKX11bmktY2FudmFze3dpZHRoOjMwMHB4O2hlaWdodDoxNTBweDtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfXVuaS1jYW52YXM+Y2FudmFze3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfXVuaS1jaGVja2JveC1ncm91cFtoaWRkZW5de2Rpc3BsYXk6bm9uZX11bmktY2hlY2tib3h7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2N1cnNvcjpwb2ludGVyfXVuaS1jaGVja2JveFtoaWRkZW5de2Rpc3BsYXk6bm9uZX11bmktY2hlY2tib3hbZGlzYWJsZWRde2N1cnNvcjpub3QtYWxsb3dlZH11bmktY2hlY2tib3ggLnVuaS1jaGVja2JveC13cmFwcGVye2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtZmxleDtkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5OmlubGluZS1mbGV4Oy13ZWJraXQtYWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7dmVydGljYWwtYWxpZ246bWlkZGxlfXVuaS1jaGVja2JveCAudW5pLWNoZWNrYm94LWlucHV0e21hcmdpbi1yaWdodDo1cHg7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO291dGxpbmU6MDtib3JkZXI6MXB4IHNvbGlkICNkMWQxZDE7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6M3B4O3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7cG9zaXRpb246cmVsYXRpdmV9QG1lZGlhIChob3Zlcjpob3Zlcil7dW5pLWNoZWNrYm94Om5vdChbZGlzYWJsZWRdKSAudW5pLWNoZWNrYm94LWlucHV0OmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1IT1ZFUi1CRC1DT0xPUiwjMDA3YWZmKSFpbXBvcnRhbnR9fXVuaS1jaGVja2JveCAudW5pLWNoZWNrYm94LWlucHV0LnVuaS1jaGVja2JveC1pbnB1dC1jaGVja2Vke2NvbG9yOiMwMDdhZmZ9dW5pLWNoZWNrYm94IC51bmktY2hlY2tib3gtaW5wdXQudW5pLWNoZWNrYm94LWlucHV0LWNoZWNrZWQ6YmVmb3Jle2ZvbnQ6bm9ybWFsIG5vcm1hbCBub3JtYWwgMTRweC8xIHVuaTtjb250ZW50OiJcRUEwOCI7Zm9udC1zaXplOjIycHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTQ4JSkgc2NhbGUoLjczKTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNDglKSBzY2FsZSguNzMpfXVuaS1jaGVja2JveCAudW5pLWNoZWNrYm94LWlucHV0LnVuaS1jaGVja2JveC1pbnB1dC1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiNlMWUxZTF9dW5pLWNoZWNrYm94IC51bmktY2hlY2tib3gtaW5wdXQudW5pLWNoZWNrYm94LWlucHV0LWRpc2FibGVkOmJlZm9yZXtjb2xvcjojYWRhZGFkfXVuaS1jaGVja2JveC1ncm91cHtkaXNwbGF5OmJsb2NrfS5xbC1jb250YWluZXJ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC11c2VyLXNlbGVjdDp0ZXh0O3VzZXItc2VsZWN0OnRleHQ7b3V0bGluZTpub25lO292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlO2hlaWdodDoyMDBweDttaW4taGVpZ2h0OjIwMHB4fS5xbC1jb250YWluZXJbaGlkZGVuXXtkaXNwbGF5Om5vbmV9LnFsLWNvbnRhaW5lciAucWwtZWRpdG9ye3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7Zm9udC1mYW1pbHk6aW5oZXJpdDttaW4taGVpZ2h0OmluaGVyaXQ7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtwYWRkaW5nOjA7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDstd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZTstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0ucWwtY29udGFpbmVyIC5xbC1lZGl0b3I6Oi13ZWJraXQtc2Nyb2xsYmFye3dpZHRoOjAhaW1wb3J0YW50fS5xbC1jb250YWluZXIgLnFsLWVkaXRvci5zY3JvbGwtZGlzYWJsZWR7b3ZlcmZsb3c6aGlkZGVufS5xbC1jb250YWluZXIgLnFsLWltYWdlLW92ZXJsYXl7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjoxcHggZGFzaGVkICNjY2M7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy13ZWJraXQtYWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0ucWwtY29udGFpbmVyIC5xbC1pbWFnZS1vdmVybGF5IC5xbC1pbWFnZS1zaXple3Bvc2l0aW9uOmFic29sdXRlO3BhZGRpbmc6NHB4IDhweDt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6Izg4ODtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6Ljg7cmlnaHQ6NHB4O3RvcDo0cHg7Zm9udC1zaXplOjEycHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6YXV0b30ucWwtY29udGFpbmVyIC5xbC1pbWFnZS1vdmVybGF5IC5xbC1pbWFnZS10b29sYmFye3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtiYWNrZ3JvdW5kOiMwMDA7Ym9yZGVyLXJhZGl1czo1cHg7Y29sb3I6I2ZmZjtmb250LXNpemU6MDttaW4taGVpZ2h0OjI0cHg7ei1pbmRleDoxMDB9LnFsLWNvbnRhaW5lciAucWwtaW1hZ2Utb3ZlcmxheSAucWwtaW1hZ2UtdG9vbGJhciBzcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6NXB4O2ZvbnQtc2l6ZToxMnB4O2JvcmRlci1yaWdodDoxcHggc29saWQgI2ZmZn0ucWwtY29udGFpbmVyIC5xbC1pbWFnZS1vdmVybGF5IC5xbC1pbWFnZS10b29sYmFyIHNwYW46bGFzdC1jaGlsZHtib3JkZXItcmlnaHQ6MH0ucWwtY29udGFpbmVyIC5xbC1pbWFnZS1vdmVybGF5IC5xbC1pbWFnZS10b29sYmFyIHNwYW4udHJpYW5nbGUtdXB7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTJweDtsZWZ0OjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGV4KC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGV4KC01MCUpO3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLXdpZHRoOjZweDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsMCkgcmdiYSgwLDAsMCwwKSAjMDAwIHJnYmEoMCwwLDAsMCl9LnFsLWNvbnRhaW5lciAucWwtaW1hZ2Utb3ZlcmxheSAucWwtaW1hZ2UtaGFuZGxle3Bvc2l0aW9uOmFic29sdXRlO2hlaWdodDoxMnB4O3dpZHRoOjEycHg7Ym9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JveC1zaXppbmc6Ym9yZGVyLWJveDtiYWNrZ3JvdW5kOiNmZmZ9LnFsLWNvbnRhaW5lciBpbWd7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjEwMCV9LnFsLWNsaXBib2FyZCBwe21hcmdpbjowO3BhZGRpbmc6MH0ucWwtZWRpdG9ye2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6MTAwJTtvdXRsaW5lOm5vbmU7b3ZlcmZsb3cteTphdXRvO3RhYi1zaXplOjQ7LW1vei10YWItc2l6ZTo0O3RleHQtYWxpZ246bGVmdDt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLXdyYXA6YnJlYWstd29yZH0ucWwtZWRpdG9yPip7Y3Vyc29yOnRleHR9LnFsLWVkaXRvciBibG9ja3F1b3RlLC5xbC1lZGl0b3IgaDEsLnFsLWVkaXRvciBoMiwucWwtZWRpdG9yIGgzLC5xbC1lZGl0b3IgaDQsLnFsLWVkaXRvciBoNSwucWwtZWRpdG9yIGg2LC5xbC1lZGl0b3Igb2wsLnFsLWVkaXRvciBwLC5xbC1lZGl0b3IgcHJlLC5xbC1lZGl0b3IgdWx7bWFyZ2luOjA7cGFkZGluZzowO2NvdW50ZXItcmVzZXQ6bGlzdC0xIGxpc3QtMiBsaXN0LTMgbGlzdC00IGxpc3QtNSBsaXN0LTYgbGlzdC03IGxpc3QtOCBsaXN0LTl9LnFsLWVkaXRvciBvbD5saSwucWwtZWRpdG9yIHVsPmxpe2xpc3Qtc3R5bGUtdHlwZTpub25lfS5xbC1lZGl0b3IgdWw+bGk6YmVmb3Jle2NvbnRlbnQ6IlwyMDIyIn0ucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD1mYWxzZV0sLnFsLWVkaXRvciB1bFtkYXRhLWNoZWNrZWQ9dHJ1ZV17cG9pbnRlci1ldmVudHM6bm9uZX0ucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD1mYWxzZV0+bGkgKiwucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD10cnVlXT5saSAqe3BvaW50ZXItZXZlbnRzOmFsbH0ucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD1mYWxzZV0+bGk6YmVmb3JlLC5xbC1lZGl0b3IgdWxbZGF0YS1jaGVja2VkPXRydWVdPmxpOmJlZm9yZXtjb2xvcjojNzc3O2N1cnNvcjpwb2ludGVyO3BvaW50ZXItZXZlbnRzOmFsbH0ucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD10cnVlXT5saTpiZWZvcmV7Y29udGVudDoiXDI2MTEifS5xbC1lZGl0b3IgdWxbZGF0YS1jaGVja2VkPWZhbHNlXT5saTpiZWZvcmV7Y29udGVudDoiXDI2MTAifS5xbC1lZGl0b3IgbGk6YmVmb3Jle2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoyZW19LnFsLWVkaXRvciBvbCBsaXtjb3VudGVyLXJlc2V0Omxpc3QtMSBsaXN0LTIgbGlzdC0zIGxpc3QtNCBsaXN0LTUgbGlzdC02IGxpc3QtNyBsaXN0LTggbGlzdC05O2NvdW50ZXItaW5jcmVtZW50Omxpc3QtMH0ucWwtZWRpdG9yIG9sIGxpOmJlZm9yZXtjb250ZW50OmNvdW50ZXIobGlzdC0wLGRlY2ltYWwpICIuICJ9LnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtMXtjb3VudGVyLWluY3JlbWVudDpsaXN0LTF9LnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtMTpiZWZvcmV7Y29udGVudDpjb3VudGVyKGxpc3QtMSxsb3dlci1hbHBoYSkgIi4gIn0ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC0xe2NvdW50ZXItcmVzZXQ6bGlzdC0yIGxpc3QtMyBsaXN0LTQgbGlzdC01IGxpc3QtNiBsaXN0LTcgbGlzdC04IGxpc3QtOX0ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC0ye2NvdW50ZXItaW5jcmVtZW50Omxpc3QtMn0ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC0yOmJlZm9yZXtjb250ZW50OmNvdW50ZXIobGlzdC0yLGxvd2VyLXJvbWFuKSAiLiAifS5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTJ7Y291bnRlci1yZXNldDpsaXN0LTMgbGlzdC00IGxpc3QtNSBsaXN0LTYgbGlzdC03IGxpc3QtOCBsaXN0LTl9LnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtM3tjb3VudGVyLWluY3JlbWVudDpsaXN0LTN9LnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtMzpiZWZvcmV7Y29udGVudDpjb3VudGVyKGxpc3QtMyxkZWNpbWFsKSAiLiAifS5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTN7Y291bnRlci1yZXNldDpsaXN0LTQgbGlzdC01IGxpc3QtNiBsaXN0LTcgbGlzdC04IGxpc3QtOX0ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC00e2NvdW50ZXItaW5jcmVtZW50Omxpc3QtNH0ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC00OmJlZm9yZXtjb250ZW50OmNvdW50ZXIobGlzdC00LGxvd2VyLWFscGhhKSAiLiAifS5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTR7Y291bnRlci1yZXNldDpsaXN0LTUgbGlzdC02IGxpc3QtNyBsaXN0LTggbGlzdC05fS5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTV7Y291bnRlci1pbmNyZW1lbnQ6bGlzdC01fS5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTU6YmVmb3Jle2NvbnRlbnQ6Y291bnRlcihsaXN0LTUsbG93ZXItcm9tYW4pICIuICJ9LnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNXtjb3VudGVyLXJlc2V0Omxpc3QtNiBsaXN0LTcgbGlzdC04IGxpc3QtOX0ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC02e2NvdW50ZXItaW5jcmVtZW50Omxpc3QtNn0ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC02OmJlZm9yZXtjb250ZW50OmNvdW50ZXIobGlzdC02LGRlY2ltYWwpICIuICJ9LnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNntjb3VudGVyLXJlc2V0Omxpc3QtNyBsaXN0LTggbGlzdC05fS5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTd7Y291bnRlci1pbmNyZW1lbnQ6bGlzdC03fS5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTc6YmVmb3Jle2NvbnRlbnQ6Y291bnRlcihsaXN0LTcsbG93ZXItYWxwaGEpICIuICJ9LnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtN3tjb3VudGVyLXJlc2V0Omxpc3QtOCBsaXN0LTl9LnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtOHtjb3VudGVyLWluY3JlbWVudDpsaXN0LTh9LnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtODpiZWZvcmV7Y29udGVudDpjb3VudGVyKGxpc3QtOCxsb3dlci1yb21hbikgIi4gIn0ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC04e2NvdW50ZXItcmVzZXQ6bGlzdC05fS5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTl7Y291bnRlci1pbmNyZW1lbnQ6bGlzdC05fS5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTk6YmVmb3Jle2NvbnRlbnQ6Y291bnRlcihsaXN0LTksZGVjaW1hbCkgIi4gIn0ucWwtZWRpdG9yIC5xbC1pbmRlbnQtMTpub3QoLnFsLWRpcmVjdGlvbi1ydGwpLC5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTE6bm90KC5xbC1kaXJlY3Rpb24tcnRsKXtwYWRkaW5nLWxlZnQ6MmVtfS5xbC1lZGl0b3IgLnFsLWluZGVudC0xLnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQsLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtMS5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0e3BhZGRpbmctcmlnaHQ6MmVtfS5xbC1lZGl0b3IgLnFsLWluZGVudC0yOm5vdCgucWwtZGlyZWN0aW9uLXJ0bCksLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtMjpub3QoLnFsLWRpcmVjdGlvbi1ydGwpe3BhZGRpbmctbGVmdDo0ZW19LnFsLWVkaXRvciAucWwtaW5kZW50LTIucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCwucWwtZWRpdG9yIGxpLnFsLWluZGVudC0yLnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHR7cGFkZGluZy1yaWdodDo0ZW19LnFsLWVkaXRvciAucWwtaW5kZW50LTM6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSwucWwtZWRpdG9yIGxpLnFsLWluZGVudC0zOm5vdCgucWwtZGlyZWN0aW9uLXJ0bCl7cGFkZGluZy1sZWZ0OjZlbX0ucWwtZWRpdG9yIC5xbC1pbmRlbnQtMy5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0LC5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTMucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodHtwYWRkaW5nLXJpZ2h0OjZlbX0ucWwtZWRpdG9yIC5xbC1pbmRlbnQtNDpub3QoLnFsLWRpcmVjdGlvbi1ydGwpLC5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTQ6bm90KC5xbC1kaXJlY3Rpb24tcnRsKXtwYWRkaW5nLWxlZnQ6OGVtfS5xbC1lZGl0b3IgLnFsLWluZGVudC00LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQsLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtNC5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0e3BhZGRpbmctcmlnaHQ6OGVtfS5xbC1lZGl0b3IgLnFsLWluZGVudC01Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCksLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtNTpub3QoLnFsLWRpcmVjdGlvbi1ydGwpe3BhZGRpbmctbGVmdDoxMGVtfS5xbC1lZGl0b3IgLnFsLWluZGVudC01LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQsLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtNS5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0e3BhZGRpbmctcmlnaHQ6MTBlbX0ucWwtZWRpdG9yIC5xbC1pbmRlbnQtNjpub3QoLnFsLWRpcmVjdGlvbi1ydGwpLC5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTY6bm90KC5xbC1kaXJlY3Rpb24tcnRsKXtwYWRkaW5nLWxlZnQ6MTJlbX0ucWwtZWRpdG9yIC5xbC1pbmRlbnQtNi5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0LC5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTYucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodHtwYWRkaW5nLXJpZ2h0OjEyZW19LnFsLWVkaXRvciAucWwtaW5kZW50LTc6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSwucWwtZWRpdG9yIGxpLnFsLWluZGVudC03Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCl7cGFkZGluZy1sZWZ0OjE0ZW19LnFsLWVkaXRvciAucWwtaW5kZW50LTcucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCwucWwtZWRpdG9yIGxpLnFsLWluZGVudC03LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHR7cGFkZGluZy1yaWdodDoxNGVtfS5xbC1lZGl0b3IgLnFsLWluZGVudC04Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCksLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtODpub3QoLnFsLWRpcmVjdGlvbi1ydGwpe3BhZGRpbmctbGVmdDoxNmVtfS5xbC1lZGl0b3IgLnFsLWluZGVudC04LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQsLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtOC5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0e3BhZGRpbmctcmlnaHQ6MTZlbX0ucWwtZWRpdG9yIC5xbC1pbmRlbnQtOTpub3QoLnFsLWRpcmVjdGlvbi1ydGwpLC5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTk6bm90KC5xbC1kaXJlY3Rpb24tcnRsKXtwYWRkaW5nLWxlZnQ6MThlbX0ucWwtZWRpdG9yIC5xbC1pbmRlbnQtOS5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0LC5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTkucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodHtwYWRkaW5nLXJpZ2h0OjE4ZW19LnFsLWVkaXRvciAucWwtZGlyZWN0aW9uLXJ0bHtkaXJlY3Rpb246cnRsO3RleHQtYWxpZ246aW5oZXJpdH0ucWwtZWRpdG9yIC5xbC1hbGlnbi1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnFsLWVkaXRvciAucWwtYWxpZ24tanVzdGlmeXt0ZXh0LWFsaWduOmp1c3RpZnl9LnFsLWVkaXRvciAucWwtYWxpZ24tcmlnaHR7dGV4dC1hbGlnbjpyaWdodH0ucWwtZWRpdG9yLnFsLWJsYW5rOmJlZm9yZXtjb2xvcjpyZ2JhKDAsMCwwLC42KTtjb250ZW50OmF0dHIoZGF0YS1wbGFjZWhvbGRlcik7Zm9udC1zdHlsZTppdGFsaWM7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZX0ucWwtY29udGFpbmVyLnFsLWRpc2FibGVkIC5xbC1lZGl0b3IgdWxbZGF0YS1jaGVja2VkXT5saTpiZWZvcmV7cG9pbnRlci1ldmVudHM6bm9uZX0ucWwtY2xpcGJvYXJke2xlZnQ6LTEwMDAwMHB4O2hlaWdodDoxcHg7b3ZlcmZsb3cteTpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJX11bmktaWNvbntkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MDtib3gtc2l6aW5nOmJvcmRlci1ib3h9dW5pLWljb25baGlkZGVuXXtkaXNwbGF5Om5vbmV9dW5pLWljb24+aXtmb250Om5vcm1hbCBub3JtYWwgbm9ybWFsIDE0cHgvMSB3ZXVpfXVuaS1pY29uPmk6YmVmb3Jle21hcmdpbjowO2JveC1zaXppbmc6Ym9yZGVyLWJveH1AZm9udC1mYWNle2ZvbnQtd2VpZ2h0OjQwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWZhbWlseTp3ZXVpO3NyYzp1cmwoImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCxBQUVBQUFBTEFJQUFBd0F3UjFOVlFyRCtzKzBBQUFFNEFBQUFRazlUTHpKQUtFeDhBQUFCZkFBQUFGWmpiV0Z3NjVjRkhRQUFBaHdBQUFKUVoyeDVacCtVRUVjQUFBU1VBQUFJdkdobFlXUVVxYzd4QUFBQTRBQUFBRFpvYUdWaEIvWUQrd0FBQUx3QUFBQWthRzEwZUVKb0FBQUFBQUhVQUFBQVNHeHZZMkVVeGhKZUFBQUViQUFBQUNadFlYaHdBU0VBUXdBQUFSZ0FBQUFnYm1GdFplTmNIdGdBQUExUUFBQUI1bkJ2YzNUNk9vWkxBQUFQT0FBQUFPWUFBUUFBQStnQUFBQmFBK2dBQUFBQUE3TUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFCSUFBUUFBQUFFQUFNQ1UyS2RmRHp6MUFBc0Q2QUFBQUFEWTdFVVVBQUFBQU5qc1JSUUFBQUFBQTdNRDVBQUFBQWdBQWdBQUFBQUFBQUFCQUFBQUVnQTNBQVVBQUFBQUFBSUFBQUFLQUFvQUFBRC9BQUFBQUFBQUFBRUFBQUFLQUI0QUxBQUJSRVpNVkFBSUFBUUFBQUFBQUFBQUFRQUFBQUZzYVdkaEFBZ0FBQUFCQUFBQUFRQUVBQVFBQUFBQkFBZ0FBUUFHQUFBQUFRQUFBQUFBQVFPd0FaQUFCUUFJQW5vQ3ZBQUFBSXdDZWdLOEFBQUI0QUF4QVFJQUFBSUFCUU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVHWkZaQUJBNmdIcUVRUG9BQUFBV2dQb0FBQUFBQUFCQUFBQUFBQUFBQUFBQUFQb0FBQUQ2QUFBQStnQUFBUG9BQUFENkFBQUErZ0FBQVBvQUFBRDZBQUFBK2dBQUFQb0FBQUQ2QUFBQStnQUFBUG9BQUFENkFBQUErZ0FBQVBvQUFBRDZBQUFBQUFBQlFBQUFBTUFBQUFzQUFBQUJBQUFBWFFBQVFBQUFBQUFiZ0FEQUFFQUFBQXNBQU1BQ2dBQUFYUUFCQUJDQUFBQUJBQUVBQUVBQU9vUi8vOEFBT29CLy84QUFBQUJBQVFBQUFBQkFBSUFBd0FFQUFVQUJnQUhBQWdBQ1FBS0FBc0FEQUFOQUE0QUR3QVFBQkVBQUFFR0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3QUFBQUFBTndBQUFBQUFBQUFFUUFBNmdFQUFPb0JBQUFBQVFBQTZnSUFBT29DQUFBQUFnQUE2Z01BQU9vREFBQUFBd0FBNmdRQUFPb0VBQUFBQkFBQTZnVUFBT29GQUFBQUJRQUE2Z1lBQU9vR0FBQUFCZ0FBNmdjQUFPb0hBQUFBQndBQTZnZ0FBT29JQUFBQUNBQUE2Z2tBQU9vSkFBQUFDUUFBNmdvQUFPb0tBQUFBQ2dBQTZnc0FBT29MQUFBQUN3QUE2Z3dBQU9vTUFBQUFEQUFBNmcwQUFPb05BQUFBRFFBQTZnNEFBT29PQUFBQURnQUE2ZzhBQU9vUEFBQUFEd0FBNmhBQUFPb1FBQUFBRUFBQTZoRUFBT29SQUFBQUVRQUFBQUFBUkFDS0FNUUJFZ0ZnQVpJQjRnSDZBaW9DZUFLMEF3d0RaQU9pQTl3RUVBUmVBQUFBQWdBQUFBQURsUU9WQUJRQUtRQUFKU0luSmljbU5EYzJOell5RnhZWEZoUUhCZ2NHSnpJM05qYzJOQ2NtSnlZaUJ3WUhCaFFYRmhjV0FmUnhZVjgzT1RrM1gySGlZVjgzT1RrM1gyRnhaRlZUTVRJeU1WTlZ5RlZUTVRJeU1WTlZVemszWDJIaVlWODNPVGszWDJIaVlWODNPVEl5TVZOVnlGVlRNVEl5TVZOVnlGVlRNVElBQUFJQUFBQUFBN01Ec3dBWEFDMEFBQUVpQndZSEJoVVVGeFlYRmpNeU56WTNOalUwSnlZbkpoTUhCaUl2QVNZMk93RVJORFk3QVRJV0ZSRXpNaFlCN25ablpEczlQVHRrWjNaOGFtWTdQajQ3Wm1raGRnNG9EbllPRFJkZEN3Y21Cd3RkRncwRHN6NDdabXA4ZG1ka096MDlPMlJuZG4xcFpqcysvZkNhRWhLYUVob0JGd2dMQ3dqKzZSb0FBd0FBQUFBRGxRT1ZBQlFBR0FBaEFBQWxJaWNtSnlZME56WTNOaklYRmhjV0ZBY0dCd1lERVRNUkp6STJOQ1lpQmhRV0FmUnhZVjgzT1RrM1gySGlZVjgzT1RrM1gyR1FQaDhSR1JraUdSbFRPVGRmWWVKaFh6YzVPVGRmWWVKaFh6YzVBZlQrM1FFaktoZ2pHQmdqR0FBQUFBQUNBQUFBQUFPeEErUUFGd0FzQUFBQkJnY0dEd0VSRkJjV0Z4WVhOamMyTnpZMUVTY21KeVlUQVFZdkFTWS9BVFl5SHdFV05qY2xOaklmQVJZQjlXbHNQM0EzUno1c1hteHNYVzA5U0Rkd1FHdVAvdFVFQklvREF4SUJCUUZ4QVFVQ0FSSUNCUUVSQkFQakZ5QVNKQkwrckk1MVpVZy9IQncvU0dWMWpnRlVFaVFTSVA2Ni90a0RBNDhFQkJrQ0FWWUNBUUhsQVFJUUJBQUFBQUFEQUFBQUFBT3hBK1FBRndBbUFDOEFBQUVHQndZUEFSRVVGeFlYRmhjMk56WTNOalVSSnlZbkpnY3pNaFlWQXhRR0t3RWlKd00wTmhNaUpqUTJNaFlVQmdIMWFXdEFjRGRIUG14ZWJHeGRiVDFJTjNCQWE0TTBCQVlNQXdJbUJRRUxCaDRQRmhZZUZSVUQ1QmdnRWlRUy9xMlBkV1JKUGgwZFBrbGtkWThCVXhJa0VpRDRCZ1QreGdJREJRRTZCQWIrUUJVZkZSVWZGUUFBQUFBQ0FBQUFBQU9WQTVVQUZBQWFBQUFsSWljbUp5WTBOelkzTmpJWEZoY1dGQWNHQndZREp3Y1hBU2NCOUhGaFh6YzVPVGRmWWVKaFh6YzVPVGRmWWFKekxKOEJGaTFUT1RkZlllSmhYemM1T1RkZlllSmhYemM1QVVoekxKOEJGU3dBQUFBQUF3QUFBQUFEbFFPVkFCUUFLUUF2QUFBbElpY21KeVkwTnpZM05qSVhGaGNXRkFjR0J3WW5NamMyTnpZMEp5WW5KaUlIQmdjR0ZCY1dGeFlUTnhjQkp6Y0I5SEZoWHpjNU9UZGZZZUpoWHpjNU9UZGZZWEZrVlZNeE1qSXhVMVhJVlZNeE1qSXhVMVV6OGlUKzZwOGpVemszWDJIaVlWODNPVGszWDJIaVlWODNPVEl5TVZOVnlGVlRNVEl5TVZOVnlGVlRNVElCQlBJai91dWZKQUFBQUFFQUFBQUFBNWtER0FBSEFBQWxBVGNYQVJjQkJnR0Yvdmc3emdIWU92M3ZBY3NCQ1R2UEFkZzcvZTRCQUFBQUFBSUFBQUFBQTVVRGxRQUZBQm9BQUFFMUl4VVhOd01pSnlZbkpqUTNOamMyTWhjV0Z4WVVCd1lIQmdJVFByRXN2bkZoWHpjNU9UZGZZZUpoWHpjNU9UZGZZUUlPNFBxeExQN2tPVGRmWWVKaFh6YzVPVGRmWWVKaFh6YzVBQUFBQUFNQUFBQUFBNVVEbFFBRkFCb0FMd0FBQVJjSEp6VXpBeUluSmljbU5EYzJOell5RnhZWEZoUUhCZ2NHSnpJM05qYzJOQ2NtSnlZaUJ3WUhCaFFYRmhjV0FnMmlJN0V5R1hGaFh6YzVPVGRmWWVKaFh6YzVPVGRmWVhGa1ZWTXhNakl4VTFYSVZWTXhNakl4VTFVQ0NhSWtzZnI5WlRrM1gySGlZVjgzT1RrM1gySGlZVjgzT1RJeU1WTlZ5RlZUTVRJeU1WTlZ5RlZUTVRJQUFBTUFBQUFBQTVVRGxRQVVBQmdBSVFBQUpTSW5KaWNtTkRjMk56WXlGeFlYRmhRSEJnY0dBeE16RXdNeU5qUW1JZzRCRmdIMGNXRmZOems1TjE5aDRtRmZOems1TjE5aGtRVTJCU0FRRlJVZ0ZRRVdVemszWDJIaVlWODNPVGszWDJIaVlWODNPUUtWL3NRQlBQNDNGaDhWRlI4V0FBQUFBQVFBQUFBQUE1VURsUUFVQUNrQUxRQTJBQUFsSWljbUp5WTBOelkzTmpJWEZoY1dGQWNHQndZbk1qYzJOelkwSnlZbkppSUhCZ2NHRkJjV0Z4WVRNeEVqRXlJbU5EWXlGaFFHQWZSeFlWODNPVGszWDJIaVlWODNPVGszWDJGeFpGVlRNVEl5TVZOVnlGVlRNVEl5TVZOVlN6SXlHUkVaR1NJWkdWTTVOMTloNG1GZk56azVOMTloNG1GZk56a3lNakZUVmNoVlV6RXlNakZUVmNoVlV6RXlBY0wrM1FGTkdDTVlHQ01ZQUFBQUF3QUFBQUFEbFFPVkFCUUFLUUExQUFBbElpY21KeVkwTnpZM05qSVhGaGNXRkFjR0J3WW5NamMyTnpZMEp5WW5KaUlIQmdjR0ZCY1dGeFlURndjbkJ5YzNKemNYTnhjQjlIRmhYemM1T1RkZlllSmhYemM1T1RkZllYRmtWVk14TWpJeFUxWElWVk14TWpJeFUxV0hnaU9DZ2lPQ2dpT0NnaU5UT1RkZlllSmhYemM1T1RkZlllSmhYemM1TWpJeFUxWElWVk14TWpJeFUxWElWVk14TWdGdmdpT0NnaU9DZ2lPQ2dpTUFBQUFDQUFBQUFBTlVBMElBR0FBbEFBQUJGd2NuRGdFaklpY21KeVkwTnpZM05qSVhGaGNXRlJRR0p6UXVBU0lPQVJRZUFUSStBUUtvcXlPc0oxODBUMFJDSnljbkowSkVuMFJDSmlnbERVRnZnMjlCUVcrRGIwRUJZS3dqckNBaktDWkNSSjlFUWljbkp5ZENSRTgyWVpkQmIwRkJiNE52UVVGdkFBQUFBZ0FBQUFBRGxRT1ZBQXNBSUFBQUFUY25CeWNIRndjWE54YzNBeUluSmljbU5EYzJOell5RnhZWEZoUUhCZ2NHQWlCOUxIMTlMSDE5TEgxOUxLbHhZVjgzT1RrM1gySGlZVjgzT1RrM1gyRUI5SDBzZlgwc2ZYMHNmWDBzL3R3NU4xOWg0bUZmTnprNU4xOWg0bUZmTnprQUFBQUNBQUFBQUFPVkE1VUFGQUFjQUFBbElpY21KeVkwTnpZM05qSVhGaGNXRkFjR0J3WURKemNuQndZZkFRSDBjV0ZmTnprNU4xOWg0bUZmTnprNU4xOWhIb3FLSzdVQkFiVlRPVGRmWWVKaFh6YzVPVGRmWWVKaFh6YzVBUktQankyN0FRRzZBQUFBQUFVQUFBQUFBMWNEYkFBSkFCMEFKd0FyQUM4QUFBRVRIZ0V6SVRJMk54TXpBdzRCSXlFaUppY0RJelUwTmpNaE1oWWRBU1V5RmgwQkl6VTBOak1ITXhNakV6TURJd0VhSWdFVERRRXVEUk1CSWpJaUFqQWgvdEloTUFJaVZnd0pBcG9KRFA3eENRelFEQWtWTWhVeWlUSVZNZ0xkL2NnT0VoSU9Bamo5eFNFdUxpRUNPeDRJREF3SUhvNE1DUjBkQ1F6Ni9va0JkLzZKQUFBQUFBQUFFQURHQUFFQUFBQUFBQUVBQkFBQUFBRUFBQUFBQUFJQUJ3QUVBQUVBQUFBQUFBTUFCQUFMQUFFQUFBQUFBQVFBQkFBUEFBRUFBQUFBQUFVQUN3QVRBQUVBQUFBQUFBWUFCQUFlQUFFQUFBQUFBQW9BS3dBaUFBRUFBQUFBQUFzQUV3Qk5BQU1BQVFRSkFBRUFDQUJnQUFNQUFRUUpBQUlBRGdCb0FBTUFBUVFKQUFNQUNBQjJBQU1BQVFRSkFBUUFDQUIrQUFNQUFRUUpBQVVBRmdDR0FBTUFBUVFKQUFZQUNBQ2NBQU1BQVFRSkFBb0FWZ0NrQUFNQUFRUUpBQXNBSmdENmQyVjFhVkpsWjNWc1lYSjNaWFZwZDJWMWFWWmxjbk5wYjI0Z01TNHdkMlYxYVVkbGJtVnlZWFJsWkNCaWVTQnpkbWN5ZEhSbUlHWnliMjBnUm05dWRHVnNiRzhnY0hKdmFtVmpkQzVvZEhSd09pOHZabTl1ZEdWc2JHOHVZMjl0QUhjQVpRQjFBR2tBVWdCbEFHY0FkUUJzQUdFQWNnQjNBR1VBZFFCcEFIY0FaUUIxQUdrQVZnQmxBSElBY3dCcEFHOEFiZ0FnQURFQUxnQXdBSGNBWlFCMUFHa0FSd0JsQUc0QVpRQnlBR0VBZEFCbEFHUUFJQUJpQUhrQUlBQnpBSFlBWndBeUFIUUFkQUJtQUNBQVpnQnlBRzhBYlFBZ0FFWUFid0J1QUhRQVpRQnNBR3dBYndBZ0FIQUFjZ0J2QUdvQVpRQmpBSFFBTGdCb0FIUUFkQUJ3QURvQUx3QXZBR1lBYndCdUFIUUFaUUJzQUd3QWJ3QXVBR01BYndCdEFBQUFBZ0FBQUFBQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0FRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFBWmphWEpqYkdVSVpHOTNibXh2WVdRRWFXNW1id3h6WVdabExYTjFZMk5sYzNNSmMyRm1aUzEzWVhKdUIzTjFZMk5sYzNNT2MzVmpZMlZ6Y3kxamFYSmpiR1VSYzNWalkyVnpjeTF1YnkxamFYSmpiR1VIZDJGcGRHbHVadzUzWVdsMGFXNW5MV05wY21Oc1pRUjNZWEp1QzJsdVptOHRZMmx5WTJ4bEJtTmhibU5sYkFaelpXRnlZMmdGWTJ4bFlYSUVZbUZqYXdaa1pXeGxkR1VBQUFBQSIpIGZvcm1hdCgidHJ1ZXR5cGUiKX0udW5pLWljb24tc3VjY2VzczpiZWZvcmV7Y29udGVudDoiXEVBMDYifS51bmktaWNvbi1zdWNjZXNzX2NpcmNsZTpiZWZvcmV7Y29udGVudDoiXEVBMDcifS51bmktaWNvbi1zdWNjZXNzX25vX2NpcmNsZTpiZWZvcmV7Y29udGVudDoiXEVBMDgifS51bmktaWNvbi1zYWZlX3N1Y2Nlc3M6YmVmb3Jle2NvbnRlbnQ6IlxFQTA0In0udW5pLWljb24tc2FmZV93YXJuOmJlZm9yZXtjb250ZW50OiJcRUEwNSJ9LnVuaS1pY29uLWluZm86YmVmb3Jle2NvbnRlbnQ6IlxFQTAzIn0udW5pLWljb24taW5mb19jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxFQTBDIn0udW5pLWljb24td2FybjpiZWZvcmV7Y29udGVudDoiXEVBMEIifS51bmktaWNvbi13YWl0aW5nOmJlZm9yZXtjb250ZW50OiJcRUEwOSJ9LnVuaS1pY29uLXdhaXRpbmdfY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcRUEwQSJ9LnVuaS1pY29uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXEVBMDEifS51bmktaWNvbi1jYW5jZWw6YmVmb3Jle2NvbnRlbnQ6IlxFQTBEIn0udW5pLWljb24tZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxFQTAyIn0udW5pLWljb24tc2VhcmNoOmJlZm9yZXtjb250ZW50OiJcRUEwRSJ9LnVuaS1pY29uLWNsZWFyOmJlZm9yZXtjb250ZW50OiJcRUEwRiJ9LnVuaS1pY29uLXNhZmVfc3VjY2VzcywudW5pLWljb24tc3VjY2VzcywudW5pLWljb24tc3VjY2Vzc19jaXJjbGUsLnVuaS1pY29uLXN1Y2Nlc3Nfbm9fY2lyY2xle2NvbG9yOiMwMDdhZmZ9LnVuaS1pY29uLXNhZmVfd2Fybntjb2xvcjojZmZiZTAwfS51bmktaWNvbi1pbmZve2NvbG9yOiMxMGFlZmZ9LnVuaS1pY29uLWluZm9fY2lyY2xle2NvbG9yOiMwMDdhZmZ9LnVuaS1pY29uLXdhcm57Y29sb3I6I2Y3NjI2MH0udW5pLWljb24td2FpdGluZywudW5pLWljb24td2FpdGluZ19jaXJjbGV7Y29sb3I6IzEwYWVmZn0udW5pLWljb24tY2lyY2xle2NvbG9yOiNjOWM5Yzl9LnVuaS1pY29uLWNhbmNlbHtjb2xvcjojZjQzNTMwfS51bmktaWNvbi1kb3dubG9hZHtjb2xvcjojMDA3YWZmfS51bmktaWNvbi1jbGVhciwudW5pLWljb24tc2VhcmNoe2NvbG9yOiNiMmIyYjJ9dW5pLWltYWdle3dpZHRoOjMyMHB4O2hlaWdodDoyNDBweDtkaXNwbGF5OmlubGluZS1ibG9jaztvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9dW5pLWltYWdlW2hpZGRlbl17ZGlzcGxheTpub25lfXVuaS1pbWFnZT5kaXYsdW5pLWltYWdlPmltZ3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlfXVuaS1pbWFnZT5pbWd7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtvcGFjaXR5OjB9dW5pLWltYWdlPi51bmktaW1hZ2Utd2lsbC1jaGFuZ2V7d2lsbC1jaGFuZ2U6dHJhbnNmb3JtfXVuaS1pbnB1dHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuNGVtO2hlaWdodDoxLjRlbTttaW4taGVpZ2h0OjEuNGVtO292ZXJmbG93OmhpZGRlbn11bmktaW5wdXRbaGlkZGVuXXtkaXNwbGF5Om5vbmV9LnVuaS1pbnB1dC1mb3JtLC51bmktaW5wdXQtaW5wdXQsLnVuaS1pbnB1dC1wbGFjZWhvbGRlciwudW5pLWlucHV0LXdyYXBwZXJ7b3V0bGluZTpub25lO2JvcmRlcjpub25lO3BhZGRpbmc6MDttYXJnaW46MDt0ZXh0LWRlY29yYXRpb246aW5oZXJpdH0udW5pLWlucHV0LWZvcm0sLnVuaS1pbnB1dC13cmFwcGVye2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LXdlYmtpdC1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy13ZWJraXQtanVzdGlmeS1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS51bmktaW5wdXQtaW5wdXQsLnVuaS1pbnB1dC1wbGFjZWhvbGRlcnt3aWR0aDoxMDAlfS51bmktaW5wdXQtcGxhY2Vob2xkZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOmF1dG8haW1wb3J0YW50O2xlZnQ6MDtjb2xvcjpncmV5O292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmNsaXA7d2hpdGUtc3BhY2U6cHJlO3dvcmQtYnJlYWs6a2VlcC1hbGw7cG9pbnRlci1ldmVudHM6bm9uZTtsaW5lLWhlaWdodDppbmhlcml0fS51bmktaW5wdXQtaW5wdXR7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6aW5oZXJpdDtvcGFjaXR5OjE7Zm9udDppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7bGV0dGVyLXNwYWNpbmc6aW5oZXJpdDt0ZXh0LWFsaWduOmluaGVyaXQ7dGV4dC1pbmRlbnQ6aW5oZXJpdDt0ZXh0LXRyYW5zZm9ybTppbmhlcml0O3RleHQtc2hhZG93OmluaGVyaXR9LnVuaS1pbnB1dC1pbnB1dFt0eXBlPXNlYXJjaF06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sLnVuaS1pbnB1dC1pbnB1dFt0eXBlPXNlYXJjaF06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257ZGlzcGxheTpub25lfS51bmktaW5wdXQtaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLnVuaS1pbnB1dC1pbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MH0udW5pLWlucHV0LWlucHV0W3R5cGU9bnVtYmVyXXstbW96LWFwcGVhcmFuY2U6dGV4dGZpZWxkfS51bmktaW5wdXQtaW5wdXQ6ZGlzYWJsZWR7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6Y3VycmVudGNvbG9yfS51bmktbGFiZWwtcG9pbnRlcntjdXJzb3I6cG9pbnRlcn11bmktbW92YWJsZS1hcmVhe2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTBweDtoZWlnaHQ6MTBweH11bmktbW92YWJsZS1hcmVhW2hpZGRlbl17ZGlzcGxheTpub25lfXVuaS1tb3ZhYmxlLXZpZXd7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDt0b3A6MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7Y3Vyc29yOmdyYWJ9dW5pLW1vdmFibGUtdmlld1toaWRkZW5de2Rpc3BsYXk6bm9uZX11bmktbmF2aWdhdG9ye2hlaWdodDphdXRvO3dpZHRoOmF1dG87ZGlzcGxheTpibG9jaztjdXJzb3I6cG9pbnRlcn11bmktbmF2aWdhdG9yW2hpZGRlbl17ZGlzcGxheTpub25lfS5uYXZpZ2F0b3ItaG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKTtvcGFjaXR5Oi43fXVuaS1waWNrZXItdmlldy1jb2x1bW57LXdlYmtpdC1mbGV4OjE7LXdlYmtpdC1ib3gtZmxleDoxO2ZsZXg6MTtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59dW5pLXBpY2tlci12aWV3LWNvbHVtbltoaWRkZW5de2Rpc3BsYXk6bm9uZX0udW5pLXBpY2tlci12aWV3LWdyb3Vwe2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0udW5pLXBpY2tlci12aWV3LW1hc2t7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0udW5pLXBpY2tlci12aWV3LWluZGljYXRvciwudW5pLXBpY2tlci12aWV3LW1hc2t7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3dpZHRoOjEwMCU7ei1pbmRleDozO3BvaW50ZXItZXZlbnRzOm5vbmV9LnVuaS1waWNrZXItdmlldy1tYXNre3RvcDowO2hlaWdodDoxMDAlO21hcmdpbjowIGF1dG87YmFja2dyb3VuZDotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsaHNsYSgwLDAlLDEwMCUsLjk1KSxoc2xhKDAsMCUsMTAwJSwuNikpLC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGJvdHRvbSxoc2xhKDAsMCUsMTAwJSwuOTUpLGhzbGEoMCwwJSwxMDAlLC42KSk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLGhzbGEoMCwwJSwxMDAlLC45NSksaHNsYSgwLDAlLDEwMCUsLjYpKSxsaW5lYXItZ3JhZGllbnQoMGRlZyxoc2xhKDAsMCUsMTAwJSwuOTUpLGhzbGEoMCwwJSwxMDAlLC42KSk7YmFja2dyb3VuZC1wb3NpdGlvbjp0b3AsYm90dG9tO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMnB4O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0udW5pLXBpY2tlci12aWV3LWluZGljYXRvcntoZWlnaHQ6MzRweDt0b3A6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LnVuaS1waWNrZXItdmlldy1jb250ZW50e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO3dpbGwtY2hhbmdlOnRyYW5zZm9ybTtwYWRkaW5nOjEwMnB4IDA7Y3Vyc29yOnBvaW50ZXJ9LnVuaS1waWNrZXItdmlldy1jb250ZW50Pip7aGVpZ2h0OjM0cHg7b3ZlcmZsb3c6aGlkZGVufS51bmktcGlja2VyLXZpZXctaW5kaWNhdG9yOmJlZm9yZXt0b3A6MDtib3JkZXItdG9wOjFweCBzb2xpZCAjZTVlNWU1Oy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVZKC41KTt0cmFuc2Zvcm06c2NhbGVZKC41KX0udW5pLXBpY2tlci12aWV3LWluZGljYXRvcjphZnRlcntib3R0b206MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1Oy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDEwMCU7dHJhbnNmb3JtLW9yaWdpbjowIDEwMCU7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVZKC41KTt0cmFuc2Zvcm06c2NhbGVZKC41KX0udW5pLXBpY2tlci12aWV3LWluZGljYXRvcjphZnRlciwudW5pLXBpY2tlci12aWV3LWluZGljYXRvcjpiZWZvcmV7Y29udGVudDoiICI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7aGVpZ2h0OjFweDtjb2xvcjojZTVlNWU1fXVuaS1waWNrZXItdmlld3tkaXNwbGF5OmJsb2NrfXVuaS1waWNrZXItdmlldyAudW5pLXBpY2tlci12aWV3LXdyYXBwZXJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDoxMDAlfXVuaS1waWNrZXItdmlld1toaWRkZW5de2Rpc3BsYXk6bm9uZX11bmktcHJvZ3Jlc3N7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1hbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn11bmktcHJvZ3Jlc3NbaGlkZGVuXXtkaXNwbGF5Om5vbmV9LnVuaS1wcm9ncmVzcy1iYXJ7LXdlYmtpdC1mbGV4OjE7LXdlYmtpdC1ib3gtZmxleDoxO2ZsZXg6MX0udW5pLXByb2dyZXNzLWlubmVyLWJhcnt3aWR0aDowO2hlaWdodDoxMDAlfS51bmktcHJvZ3Jlc3MtaW5mb3ttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO21pbi13aWR0aDoyZW07bWFyZ2luLWxlZnQ6MTVweDtmb250LXNpemU6MTZweH11bmktcmFkaW8tZ3JvdXBbaGlkZGVuXXtkaXNwbGF5Om5vbmV9dW5pLXJhZGlvey13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jaztjdXJzb3I6cG9pbnRlcn11bmktcmFkaW9baGlkZGVuXXtkaXNwbGF5Om5vbmV9dW5pLXJhZGlvW2Rpc2FibGVkXXtjdXJzb3I6bm90LWFsbG93ZWR9dW5pLXJhZGlvIC51bmktcmFkaW8td3JhcHBlcntkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWZsZXg7ZGlzcGxheTotd2Via2l0LWlubGluZS1ib3g7ZGlzcGxheTppbmxpbmUtZmxleDstd2Via2l0LWFsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX11bmktcmFkaW8gLnVuaS1yYWRpby1pbnB1dHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7bWFyZ2luLXJpZ2h0OjVweDtvdXRsaW5lOjA7Ym9yZGVyOjFweCBzb2xpZCAjZDFkMWQxO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDoyMnB4O2hlaWdodDoyMnB4O3Bvc2l0aW9uOnJlbGF0aXZlfUBtZWRpYSAoYW55LWhvdmVyOmhvdmVyKXt1bmktcmFkaW86bm90KFtkaXNhYmxlZF0pIC51bmktcmFkaW8taW5wdXQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLUhPVkVSLUJELUNPTE9SLCMwMDdhZmYpIWltcG9ydGFudH19dW5pLXJhZGlvIC51bmktcmFkaW8taW5wdXQudW5pLXJhZGlvLWlucHV0LWNoZWNrZWQ6YmVmb3Jle2ZvbnQ6bm9ybWFsIG5vcm1hbCBub3JtYWwgMTRweC8xIHVuaTtjb250ZW50OiJcRUEwOCI7Zm9udC1zaXplOjE4cHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTQ4JSkgc2NhbGUoLjczKTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNDglKSBzY2FsZSguNzMpfXVuaS1yYWRpbyAudW5pLXJhZGlvLWlucHV0LnVuaS1yYWRpby1pbnB1dC1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiNlMWUxZTE7Ym9yZGVyLWNvbG9yOiNkMWQxZDF9dW5pLXJhZGlvIC51bmktcmFkaW8taW5wdXQudW5pLXJhZGlvLWlucHV0LWRpc2FibGVkOmJlZm9yZXtjb2xvcjojYWRhZGFkfXVuaS1yYWRpby1ncm91cHtkaXNwbGF5OmJsb2NrfUAtd2Via2l0LWtleWZyYW1lcyBvbmNlLXNob3d7MCV7dG9wOjB9fUBrZXlmcmFtZXMgb25jZS1zaG93ezAle3RvcDowfX11bmktcmVzaXplLXNlbnNvcix1bmktcmVzaXplLXNlbnNvcj5kaXZ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7b3ZlcmZsb3c6aGlkZGVufXVuaS1yZXNpemUtc2Vuc29ye2Rpc3BsYXk6YmxvY2s7ei1pbmRleDotMTt2aXNpYmlsaXR5OmhpZGRlbjstd2Via2l0LWFuaW1hdGlvbjpvbmNlLXNob3cgMW1zO2FuaW1hdGlvbjpvbmNlLXNob3cgMW1zfXVuaS1yZXNpemUtc2Vuc29yPmRpdj5kaXZ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowfXVuaS1yZXNpemUtc2Vuc29yPmRpdjpmaXJzdC1jaGlsZD5kaXZ7d2lkdGg6MTAwMDAwcHg7aGVpZ2h0OjEwMDAwMHB4fXVuaS1yZXNpemUtc2Vuc29yPmRpdjpsYXN0LWNoaWxkPmRpdnt3aWR0aDoyMDAlO2hlaWdodDoyMDAlfXVuaS1zY3JvbGwtdmlld3tkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCV9dW5pLXNjcm9sbC12aWV3W2hpZGRlbl17ZGlzcGxheTpub25lfS51bmktc2Nyb2xsLXZpZXd7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7bWF4LWhlaWdodDppbmhlcml0fS51bmktc2Nyb2xsLXZpZXcsLnVuaS1zY3JvbGwtdmlldy1jb250ZW50e3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LnVuaS1zY3JvbGwtdmlldy1yZWZyZXNoZXJ7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS51bmktc2Nyb2xsLXZpZXctcmVmcmVzaHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDstd2Via2l0LWJveC1vcmllbnQ6aG9yaXpvbnRhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy13ZWJraXQtZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtZGlyZWN0aW9uOnJvd30udW5pLXNjcm9sbC12aWV3LXJlZnJlc2gsLnVuaS1zY3JvbGwtdmlldy1yZWZyZXNoLWlubmVye2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy13ZWJraXQtanVzdGlmeS1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstd2Via2l0LWFsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9LnVuaS1zY3JvbGwtdmlldy1yZWZyZXNoLWlubmVye2xpbmUtaGVpZ2h0OjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym94LXNoYWRvdzowIDFweCA2cHggcmdiYSgwLDAsMCwuMTE3NjQ3KSwwIDFweCA0cHggcmdiYSgwLDAsMCwuMTE3NjQ3KX0udW5pLXNjcm9sbC12aWV3LXJlZnJlc2hfX3NwaW5uZXJ7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOmNlbnRlciBjZW50ZXI7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIgY2VudGVyOy13ZWJraXQtYW5pbWF0aW9uOnVuaS1zY3JvbGwtdmlldy1yZWZyZXNoLXJvdGF0ZSAycyBsaW5lYXIgaW5maW5pdGU7YW5pbWF0aW9uOnVuaS1zY3JvbGwtdmlldy1yZWZyZXNoLXJvdGF0ZSAycyBsaW5lYXIgaW5maW5pdGV9LnVuaS1zY3JvbGwtdmlldy1yZWZyZXNoX19zcGlubmVyPmNpcmNsZXtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZS1saW5lY2FwOnJvdW5kOy13ZWJraXQtYW5pbWF0aW9uOnVuaS1zY3JvbGwtdmlldy1yZWZyZXNoLWRhc2ggMnMgbGluZWFyIGluZmluaXRlO2FuaW1hdGlvbjp1bmktc2Nyb2xsLXZpZXctcmVmcmVzaC1kYXNoIDJzIGxpbmVhciBpbmZpbml0ZX1ALXdlYmtpdC1rZXlmcmFtZXMgdW5pLXNjcm9sbC12aWV3LXJlZnJlc2gtcm90YXRlezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRvey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxdHVybik7dHJhbnNmb3JtOnJvdGF0ZSgxdHVybil9fUBrZXlmcmFtZXMgdW5pLXNjcm9sbC12aWV3LXJlZnJlc2gtcm90YXRlezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRvey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxdHVybik7dHJhbnNmb3JtOnJvdGF0ZSgxdHVybil9fUAtd2Via2l0LWtleWZyYW1lcyB1bmktc2Nyb2xsLXZpZXctcmVmcmVzaC1kYXNoezAle3N0cm9rZS1kYXNoYXJyYXk6MSwyMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6MH01MCV7c3Ryb2tlLWRhc2hhcnJheTo4OSwyMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6LTM1cHh9dG97c3Ryb2tlLWRhc2hhcnJheTo4OSwyMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6LTEyNHB4fX1Aa2V5ZnJhbWVzIHVuaS1zY3JvbGwtdmlldy1yZWZyZXNoLWRhc2h7MCV7c3Ryb2tlLWRhc2hhcnJheToxLDIwMDtzdHJva2UtZGFzaG9mZnNldDowfTUwJXtzdHJva2UtZGFzaGFycmF5Ojg5LDIwMDtzdHJva2UtZGFzaG9mZnNldDotMzVweH10b3tzdHJva2UtZGFzaGFycmF5Ojg5LDIwMDtzdHJva2UtZGFzaG9mZnNldDotMTI0cHh9fXVuaS1zbGlkZXJ7bWFyZ2luOjEwcHggMThweDtwYWRkaW5nOjA7ZGlzcGxheTpibG9ja311bmktc2xpZGVyW2hpZGRlbl17ZGlzcGxheTpub25lfXVuaS1zbGlkZXIgLnVuaS1zbGlkZXItd3JhcHBlcntkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWFsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21pbi1oZWlnaHQ6MTZweH11bmktc2xpZGVyIC51bmktc2xpZGVyLXRhcC1hcmVhey13ZWJraXQtZmxleDoxOy13ZWJraXQtYm94LWZsZXg6MTtmbGV4OjE7cGFkZGluZzo4cHggMH11bmktc2xpZGVyIC51bmktc2xpZGVyLWhhbmRsZS13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDoycHg7Ym9yZGVyLXJhZGl1czo1cHg7YmFja2dyb3VuZC1jb2xvcjojZTllOWU5O2N1cnNvcjpwb2ludGVyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH11bmktc2xpZGVyIC51bmktc2xpZGVyLWhhbmRsZS13cmFwcGVyLHVuaS1zbGlkZXIgLnVuaS1zbGlkZXItdHJhY2t7LXdlYmtpdC10cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjNzIGVhc2U7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4zcyBlYXNlfXVuaS1zbGlkZXIgLnVuaS1zbGlkZXItdHJhY2t7aGVpZ2h0OjEwMCU7Ym9yZGVyLXJhZGl1czo2cHg7YmFja2dyb3VuZC1jb2xvcjojMDA3YWZmfXVuaS1zbGlkZXIgLnVuaS1zbGlkZXItaGFuZGxlLHVuaS1zbGlkZXIgLnVuaS1zbGlkZXItdGh1bWJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7dG9wOjUwJTtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOjUwJTstd2Via2l0LXRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4zcyBlYXNlO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4zcyBlYXNlfXVuaS1zbGlkZXIgLnVuaS1zbGlkZXItaGFuZGxle3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bWFyZ2luLXRvcDotMTRweDttYXJnaW4tbGVmdDotMTRweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMCk7ei1pbmRleDozO2N1cnNvcjpncmFifXVuaS1zbGlkZXIgLnVuaS1zbGlkZXItdGh1bWJ7ei1pbmRleDoyO2JveC1zaGFkb3c6MCAwIDRweCByZ2JhKDAsMCwwLC4yKX11bmktc2xpZGVyIC51bmktc2xpZGVyLXN0ZXB7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtoZWlnaHQ6MnB4O2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwKTt6LWluZGV4OjF9dW5pLXNsaWRlciAudW5pLXNsaWRlci12YWx1ZXt3aWR0aDozY2g7Y29sb3I6Izg4ODtmb250LXNpemU6MTRweDttYXJnaW4tbGVmdDoxZW19dW5pLXNsaWRlciAudW5pLXNsaWRlci1kaXNhYmxlZCAudW5pLXNsaWRlci10cmFja3tiYWNrZ3JvdW5kLWNvbG9yOiNjY2N9dW5pLXNsaWRlciAudW5pLXNsaWRlci1kaXNhYmxlZCAudW5pLXNsaWRlci10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiNjY2N9dW5pLXN3aXBlci1pdGVte2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3dpbGwtY2hhbmdlOnRyYW5zZm9ybTtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2N1cnNvcjpncmFifXVuaS1zd2lwZXItaXRlbVtoaWRkZW5de2Rpc3BsYXk6bm9uZX11bmktc3dpcGVye2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjE1MHB4fXVuaS1zd2lwZXJbaGlkZGVuXXtkaXNwbGF5Om5vbmV9dW5pLXN3aXBlciAudW5pLXN3aXBlci13cmFwcGVye292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9dW5pLXN3aXBlciAudW5pLXN3aXBlci1zbGlkZXN7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjB9dW5pLXN3aXBlciAudW5pLXN3aXBlci1zbGlkZS1mcmFtZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt3aWxsLWNoYW5nZTp0cmFuc2Zvcm19dW5pLXN3aXBlciAudW5pLXN3aXBlci1kb3Rze3Bvc2l0aW9uOmFic29sdXRlO2ZvbnQtc2l6ZTowfXVuaS1zd2lwZXIgLnVuaS1zd2lwZXItZG90cy1ob3Jpem9udGFse2xlZnQ6NTAlO2JvdHRvbToxMHB4O3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKX11bmktc3dpcGVyIC51bmktc3dpcGVyLWRvdHMtaG9yaXpvbnRhbCAudW5pLXN3aXBlci1kb3R7bWFyZ2luLXJpZ2h0OjhweH11bmktc3dpcGVyIC51bmktc3dpcGVyLWRvdHMtaG9yaXpvbnRhbCAudW5pLXN3aXBlci1kb3Q6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH11bmktc3dpcGVyIC51bmktc3dpcGVyLWRvdHMtdmVydGljYWx7cmlnaHQ6MTBweDt0b3A6NTAlO3RleHQtYWxpZ246cmlnaHQ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX11bmktc3dpcGVyIC51bmktc3dpcGVyLWRvdHMtdmVydGljYWwgLnVuaS1zd2lwZXItZG90e2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo5cHh9dW5pLXN3aXBlciAudW5pLXN3aXBlci1kb3RzLXZlcnRpY2FsIC51bmktc3dpcGVyLWRvdDpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH11bmktc3dpcGVyIC51bmktc3dpcGVyLWRvdHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo4cHg7aGVpZ2h0OjhweDtjdXJzb3I6cG9pbnRlcjstd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6YmFja2dyb3VuZC1jb2xvcjt0cmFuc2l0aW9uLXByb3BlcnR5OmJhY2tncm91bmQtY29sb3I7LXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2U7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zKTtib3JkZXItcmFkaXVzOjUwJX11bmktc3dpcGVyIC51bmktc3dpcGVyLWRvdC1hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojMDAwfXVuaS1zd2lwZXIgLnVuaS1zd2lwZXItbmF2aWdhdGlvbnt3aWR0aDoyNnB4O2hlaWdodDoyNnB4O2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bWFyZ2luLXRvcDotMTNweDtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LXdlYmtpdC1hbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzO3RyYW5zaXRpb246YWxsIC4ycztib3JkZXItcmFkaXVzOjUwJTtvcGFjaXR5OjF9dW5pLXN3aXBlciAudW5pLXN3aXBlci1uYXZpZ2F0aW9uLWRpc2FibGVke29wYWNpdHk6LjM1O2N1cnNvcjpub3QtYWxsb3dlZH11bmktc3dpcGVyIC51bmktc3dpcGVyLW5hdmlnYXRpb24taGlkZXtvcGFjaXR5OjA7Y3Vyc29yOmF1dG87cG9pbnRlci1ldmVudHM6bm9uZX11bmktc3dpcGVyIC51bmktc3dpcGVyLW5hdmlnYXRpb24tcHJldntsZWZ0OjEwcHh9dW5pLXN3aXBlciAudW5pLXN3aXBlci1uYXZpZ2F0aW9uLXByZXYgaXttYXJnaW4tbGVmdDotMXB4O2xlZnQ6MTBweH11bmktc3dpcGVyIC51bmktc3dpcGVyLW5hdmlnYXRpb24tcHJldi51bmktc3dpcGVyLW5hdmlnYXRpb24tdmVydGljYWx7dG9wOjE4cHg7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTEzcHh9dW5pLXN3aXBlciAudW5pLXN3aXBlci1uYXZpZ2F0aW9uLXByZXYudW5pLXN3aXBlci1uYXZpZ2F0aW9uLXZlcnRpY2FsIGl7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDkwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi10b3A6LTJweH11bmktc3dpcGVyIC51bmktc3dpcGVyLW5hdmlnYXRpb24tbmV4dHtyaWdodDoxMHB4fXVuaS1zd2lwZXIgLnVuaS1zd2lwZXItbmF2aWdhdGlvbi1uZXh0IGl7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfXVuaS1zd2lwZXIgLnVuaS1zd2lwZXItbmF2aWdhdGlvbi1uZXh0LnVuaS1zd2lwZXItbmF2aWdhdGlvbi12ZXJ0aWNhbHt0b3A6YXV0bztib3R0b206NXB4O2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi0xM3B4fXVuaS1zd2lwZXIgLnVuaS1zd2lwZXItbmF2aWdhdGlvbi1uZXh0LnVuaS1zd2lwZXItbmF2aWdhdGlvbi12ZXJ0aWNhbCBpe21hcmdpbi10b3A6MnB4Oy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX11bmktc3dpdGNoey13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jaztjdXJzb3I6cG9pbnRlcn11bmktc3dpdGNoW2hpZGRlbl17ZGlzcGxheTpub25lfXVuaS1zd2l0Y2hbZGlzYWJsZWRde2N1cnNvcjpub3QtYWxsb3dlZH11bmktc3dpdGNoIC51bmktc3dpdGNoLXdyYXBwZXJ7ZGlzcGxheTotd2Via2l0LWlubGluZS1mbGV4O2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtYm94O2Rpc3BsYXk6aW5saW5lLWZsZXg7LXdlYmtpdC1hbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9dW5pLXN3aXRjaCAudW5pLXN3aXRjaC1pbnB1dHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NTJweDtoZWlnaHQ6MzJweDttYXJnaW4tcmlnaHQ6NXB4O2JvcmRlcjoxcHggc29saWQgI2RmZGZkZjtvdXRsaW5lOjA7Ym9yZGVyLXJhZGl1czoxNnB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtiYWNrZ3JvdW5kLWNvbG9yOiNkZmRmZGY7LXdlYmtpdC10cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjFzLGJvcmRlciAuMXM7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xcyxib3JkZXIgLjFzfXVuaS1zd2l0Y2hbZGlzYWJsZWRdIC51bmktc3dpdGNoLWlucHV0e29wYWNpdHk6Ljd9dW5pLXN3aXRjaCAudW5pLXN3aXRjaC1pbnB1dDpiZWZvcmV7d2lkdGg6NTBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZGZkZmR9dW5pLXN3aXRjaCAudW5pLXN3aXRjaC1pbnB1dDphZnRlcix1bmktc3dpdGNoIC51bmktc3dpdGNoLWlucHV0OmJlZm9yZXtjb250ZW50OiIgIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjMwcHg7Ym9yZGVyLXJhZGl1czoxNXB4O3RyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjNzOy13ZWJraXQtdHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuM3M7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcywtd2Via2l0LXRyYW5zZm9ybSAuM3N9dW5pLXN3aXRjaCAudW5pLXN3aXRjaC1pbnB1dDphZnRlcnt3aWR0aDozMHB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsMCwwLC40KX11bmktc3dpdGNoIC51bmktc3dpdGNoLWlucHV0LnVuaS1zd2l0Y2gtaW5wdXQtY2hlY2tlZHtib3JkZXItY29sb3I6IzAwN2FmZjtiYWNrZ3JvdW5kLWNvbG9yOiMwMDdhZmZ9dW5pLXN3aXRjaCAudW5pLXN3aXRjaC1pbnB1dC51bmktc3dpdGNoLWlucHV0LWNoZWNrZWQ6YmVmb3Jley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDApO3RyYW5zZm9ybTpzY2FsZSgwKX11bmktc3dpdGNoIC51bmktc3dpdGNoLWlucHV0LnVuaS1zd2l0Y2gtaW5wdXQtY2hlY2tlZDphZnRlcnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDIwcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDIwcHgpfXVuaS1zd2l0Y2ggLnVuaS1jaGVja2JveC1pbnB1dHttYXJnaW4tcmlnaHQ6NXB4Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtvdXRsaW5lOjA7Ym9yZGVyOjFweCBzb2xpZCAjZDFkMWQxO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjNweDt3aWR0aDoyMnB4O2hlaWdodDoyMnB4O3Bvc2l0aW9uOnJlbGF0aXZlO2NvbG9yOiMwMDdhZmZ9dW5pLXN3aXRjaDpub3QoW2Rpc2FibGVkXSkgLnVuaS1jaGVja2JveC1pbnB1dDpob3Zlcntib3JkZXItY29sb3I6IzAwN2FmZn11bmktc3dpdGNoIC51bmktY2hlY2tib3gtaW5wdXQudW5pLWNoZWNrYm94LWlucHV0LWNoZWNrZWQ6YmVmb3Jle2ZvbnQ6bm9ybWFsIG5vcm1hbCBub3JtYWwgMTRweC8xIHVuaTtjb250ZW50OiJcRUEwOCI7Y29sb3I6aW5oZXJpdDtmb250LXNpemU6MjJweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNDglKSBzY2FsZSguNzMpOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC00OCUpIHNjYWxlKC43Myl9dW5pLXN3aXRjaCAudW5pLWNoZWNrYm94LWlucHV0LnVuaS1jaGVja2JveC1pbnB1dC1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiNlMWUxZTF9dW5pLXN3aXRjaCAudW5pLWNoZWNrYm94LWlucHV0LnVuaS1jaGVja2JveC1pbnB1dC1kaXNhYmxlZDpiZWZvcmV7Y29sb3I6I2FkYWRhZH11bmktdGV4dFtzZWxlY3RhYmxlXXtjdXJzb3I6YXV0bzt1c2VyLXNlbGVjdDp0ZXh0Oy13ZWJraXQtdXNlci1zZWxlY3Q6dGV4dH11bmktdGV4dGFyZWF7d2lkdGg6MzAwcHg7aGVpZ2h0OjE1MHB4O2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6bm9ybWFsO3doaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtYnJlYWs6YnJlYWstYWxsfXVuaS10ZXh0YXJlYVtoaWRkZW5de2Rpc3BsYXk6bm9uZX0udW5pLXRleHRhcmVhLWNvbXB1dGUsLnVuaS10ZXh0YXJlYS1saW5lLC51bmktdGV4dGFyZWEtcGxhY2Vob2xkZXIsLnVuaS10ZXh0YXJlYS10ZXh0YXJlYSwudW5pLXRleHRhcmVhLXdyYXBwZXJ7b3V0bGluZTpub25lO2JvcmRlcjpub25lO3BhZGRpbmc6MDttYXJnaW46MDt0ZXh0LWRlY29yYXRpb246aW5oZXJpdH0udW5pLXRleHRhcmVhLXdyYXBwZXJ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO21pbi1oZWlnaHQ6aW5oZXJpdDtvdmVyZmxvdy15OmhpZGRlbn0udW5pLXRleHRhcmVhLWNvbXB1dGUsLnVuaS10ZXh0YXJlYS1saW5lLC51bmktdGV4dGFyZWEtcGxhY2Vob2xkZXIsLnVuaS10ZXh0YXJlYS10ZXh0YXJlYXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2xlZnQ6MDt0b3A6MDt3aGl0ZS1zcGFjZTppbmhlcml0O3dvcmQtYnJlYWs6aW5oZXJpdH0udW5pLXRleHRhcmVhLXBsYWNlaG9sZGVye2NvbG9yOmdyZXk7b3ZlcmZsb3c6aGlkZGVufS51bmktdGV4dGFyZWEtY29tcHV0ZSwudW5pLXRleHRhcmVhLWxpbmV7dmlzaWJpbGl0eTpoaWRkZW47aGVpZ2h0OmF1dG99LnVuaS10ZXh0YXJlYS1saW5le3dpZHRoOjFlbX0udW5pLXRleHRhcmVhLWNvbXB1dGUtYXV0by1oZWlnaHR7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkfS51bmktdGV4dGFyZWEtdGV4dGFyZWF7cmVzaXplOm5vbmU7YmFja2dyb3VuZDpub25lO2NvbG9yOmluaGVyaXQ7b3BhY2l0eToxO2ZvbnQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O2xldHRlci1zcGFjaW5nOmluaGVyaXQ7dGV4dC1hbGlnbjppbmhlcml0O3RleHQtaW5kZW50OmluaGVyaXQ7dGV4dC10cmFuc2Zvcm06aW5oZXJpdDt0ZXh0LXNoYWRvdzppbmhlcml0fS51bmktdGV4dGFyZWEtdGV4dGFyZWEtZml4LW1hcmdpbnt3aWR0aDphdXRvO3JpZ2h0OjA7bWFyZ2luOjAgLTNweH0udW5pLXRleHRhcmVhLXRleHRhcmVhOmRpc2FibGVkey13ZWJraXQtdGV4dC1maWxsLWNvbG9yOmN1cnJlbnRjb2xvcn11bmktYWR7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW59dW5pLWFkW2hpZGRlbl17ZGlzcGxheTpub25lfXVuaS1jb3Zlci1pbWFnZXtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEuMjtvdmVyZmxvdzpoaWRkZW47cG9pbnRlci1ldmVudHM6YXV0b311bmktY292ZXItaW1hZ2UsdW5pLWNvdmVyLWltYWdlIGltZ3toZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfXVuaS1jb3Zlci1pbWFnZVtoaWRkZW5de2Rpc3BsYXk6bm9uZX11bmktY292ZXItaW1hZ2UgLnVuaS1jb3Zlci1pbWFnZXt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RleHQtb3ZlcmZsb3c6aW5oZXJpdDtvdmVyZmxvdzppbmhlcml0O3doaXRlLXNwYWNlOm5vd3JhcDstd2Via2l0LWFsaWduLWl0ZW1zOmluaGVyaXQ7LXdlYmtpdC1ib3gtYWxpZ246aW5oZXJpdDthbGlnbi1pdGVtczppbmhlcml0Oy13ZWJraXQtanVzdGlmeS1jb250ZW50OmluaGVyaXQ7LXdlYmtpdC1ib3gtcGFjazppbmhlcml0O2p1c3RpZnktY29udGVudDppbmhlcml0Oy13ZWJraXQtZmxleC1kaXJlY3Rpb246aW5oZXJpdDstd2Via2l0LWJveC1vcmllbnQ6aW5oZXJpdDstd2Via2l0LWJveC1kaXJlY3Rpb246aW5oZXJpdDtmbGV4LWRpcmVjdGlvbjppbmhlcml0O2ZvbnQtc2l6ZTowO2Rpc3BsYXk6aW5oZXJpdH11bmktY292ZXItdmlld3tkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEuMjtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3BvaW50ZXItZXZlbnRzOmF1dG99dW5pLWNvdmVyLXZpZXdbaGlkZGVuXXtkaXNwbGF5Om5vbmV9dW5pLWNvdmVyLXZpZXcgLnVuaS1jb3Zlci12aWV3e3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dGV4dC1vdmVyZmxvdzppbmhlcml0O292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTppbmhlcml0Oy13ZWJraXQtYWxpZ24taXRlbXM6aW5oZXJpdDstd2Via2l0LWJveC1hbGlnbjppbmhlcml0O2FsaWduLWl0ZW1zOmluaGVyaXQ7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6aW5oZXJpdDstd2Via2l0LWJveC1wYWNrOmluaGVyaXQ7anVzdGlmeS1jb250ZW50OmluaGVyaXQ7LXdlYmtpdC1mbGV4LWRpcmVjdGlvbjppbmhlcml0Oy13ZWJraXQtYm94LW9yaWVudDppbmhlcml0Oy13ZWJraXQtYm94LWRpcmVjdGlvbjppbmhlcml0O2ZsZXgtZGlyZWN0aW9uOmluaGVyaXQ7LXdlYmtpdC1mbGV4LXdyYXA6aW5oZXJpdDtmbGV4LXdyYXA6aW5oZXJpdDtkaXNwbGF5OmluaGVyaXQ7b3ZlcmZsb3c6aW5oZXJpdH0udW5pLW1hcC1jb250cm9se3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDowO3otaW5kZXg6OTk5fS51bmktbWFwLWNvbnRyb2wtaWNvbntwb3NpdGlvbjphYnNvbHV0ZTttYXgtd2lkdGg6bm9uZX11bmktbWFwe3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjMwMHB4O2hlaWdodDoxNTBweDtkaXNwbGF5OmJsb2NrfXVuaS1tYXBbaGlkZGVuXXtkaXNwbGF5Om5vbmV9LmFtYXAtbWFya2VyLWxhYmVse3BhZGRpbmc6MDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMCl9LmFtYXAtbWFya2VyPi5hbWFwLWljb24+aW1ne2xlZnQ6MCFpbXBvcnRhbnQ7dG9wOjAhaW1wb3J0YW50fXVuaS1waWNrZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztjdXJzb3I6cG9pbnRlcn11bmktcGlja2VyW2hpZGRlbl17ZGlzcGxheTpub25lfXVuaS1waWNrZXJbZGlzYWJsZWRde2N1cnNvcjpub3QtYWxsb3dlZH0udW5pLXBpY2tlci1jb250YWluZXJ7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDtyaWdodDowO3RvcDowO2JvdHRvbTowO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4Ojk5OTtmb250LXNpemU6MTZweH0udW5pLXBpY2tlci1jb250YWluZXIgLnVuaS1waWNrZXItY3VzdG9tICp7Ym94LXNpemluZzpib3JkZXItYm94fS51bmktcGlja2VyLWNvbnRhaW5lciAudW5pLXBpY2tlci1jdXN0b217cG9zaXRpb246Zml4ZWQ7bGVmdDowO2JvdHRvbTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSk7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjt6LWluZGV4Ojk5OTt3aWR0aDoxMDAlO2JhY2tncm91bmQtY29sb3I6I2ZmZjt2aXNpYmlsaXR5OmhpZGRlbjstd2Via2l0LXRyYW5zaXRpb246dmlzaWJpbGl0eSAuM3MsLXdlYmtpdC10cmFuc2Zvcm0gLjNzO3RyYW5zaXRpb246dmlzaWJpbGl0eSAuM3MsLXdlYmtpdC10cmFuc2Zvcm0gLjNzO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyx2aXNpYmlsaXR5IC4zczt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MsdmlzaWJpbGl0eSAuM3MsLXdlYmtpdC10cmFuc2Zvcm0gLjNzfS51bmktcGlja2VyLWNvbnRhaW5lciAudW5pLXBpY2tlci1jdXN0b20udW5pLXBpY2tlci10b2dnbGV7dmlzaWJpbGl0eTp2aXNpYmxlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfS51bmktcGlja2VyLWNvbnRhaW5lciAudW5pLXBpY2tlci1jb250ZW50e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6MjM4cHg7YmFja2dyb3VuZC1jb2xvcjojZmZmfS51bmktcGlja2VyLWNvbnRhaW5lciAudW5pLXBpY2tlci1pdGVte3BhZGRpbmc6MDtoZWlnaHQ6MzRweDtsaW5lLWhlaWdodDozNHB4O3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiMwMDA7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO2N1cnNvcjpwb2ludGVyfS51bmktcGlja2VyLWNvbnRhaW5lciAudW5pLXBpY2tlci1oZWFkZXJ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlO2hlaWdodDo0NXB4fS51bmktcGlja2VyLWNvbnRhaW5lciAudW5pLXBpY2tlci1oZWFkZXI6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MDtoZWlnaHQ6MXB4O2NsZWFyOmJvdGg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNTtjb2xvcjojZTVlNWU1Oy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDEwMCU7dHJhbnNmb3JtLW9yaWdpbjowIDEwMCU7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVZKC41KTt0cmFuc2Zvcm06c2NhbGVZKC41KX0udW5pLXBpY2tlci1jb250YWluZXIgLnVuaS1waWNrZXItYWN0aW9ue2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjUwJTt0b3A6MDtoZWlnaHQ6MTAwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzowIDE0cHg7Zm9udC1zaXplOjE3cHg7bGluZS1oZWlnaHQ6NDVweDtvdmVyZmxvdzpoaWRkZW47Y3Vyc29yOnBvaW50ZXJ9LnVuaS1waWNrZXItY29udGFpbmVyIC51bmktcGlja2VyLWFjdGlvbi51bmktcGlja2VyLWFjdGlvbi1jYW5jZWx7ZmxvYXQ6bGVmdDtjb2xvcjojODg4fS51bmktcGlja2VyLWNvbnRhaW5lciAudW5pLXBpY2tlci1hY3Rpb24udW5pLXBpY2tlci1hY3Rpb24tY29uZmlybXtmbG9hdDpyaWdodDtjb2xvcjojMDA3YWZmfS51bmktcGlja2VyLWNvbnRhaW5lciAudW5pLXBpY2tlci1zZWxlY3R7ZGlzcGxheTpub25lfS51bmktcGlja2VyLXN5c3RlbXtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5Om5vbmU7ZGlzcGxheTpibG9jazt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59LnVuaS1waWNrZXItc3lzdGVtPmlucHV0e3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlcjpub25lO2hlaWdodDoxMDAlO29wYWNpdHk6MDtjdXJzb3I6cG9pbnRlcn0udW5pLXBpY2tlci1zeXN0ZW0+aW5wdXQuZmlyZWZveHt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJX0udW5pLXBpY2tlci1zeXN0ZW0+aW5wdXQuY2hyb21le3RvcDowO2xlZnQ6MDt3aWR0aDoyZW07Zm9udC1zaXplOjMycHg7aGVpZ2h0OjMycHh9QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo1MDBweCkgYW5kIChtaW4taGVpZ2h0OjUwMHB4KXsudW5pLW1hc2sudW5pLXBpY2tlci1tYXNre2JhY2tncm91bmQ6bm9uZX0udW5pLXBpY2tlci1jb250YWluZXIgLnVuaS1waWNrZXItY3VzdG9te3dpZHRoOjMwMHB4IWltcG9ydGFudDtsZWZ0OjUwJTtyaWdodDphdXRvO3RvcDo1MCU7Ym90dG9tOmF1dG87LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO29wYWNpdHk6MDtib3JkZXItcmFkaXVzOjVweDstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuM3MsdmlzaWJpbGl0eSAuM3M7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyx2aXNpYmlsaXR5IC4zcztib3gtc2hhZG93OjAgMCAyMHB4IDVweCByZ2JhKDAsMCwwLC4zKX0udW5pLXBpY2tlci1jb250YWluZXIgLnVuaS1waWNrZXItaGVhZGVye2JvcmRlci1yYWRpdXM6NXB4IDVweCAwIDB9LnVuaS1waWNrZXItY29udGFpbmVyIC51bmktcGlja2VyLWNvbnRlbnR7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MCAwIDVweCA1cHh9LnVuaS1waWNrZXItY29udGFpbmVyIC51bmktcGlja2VyLWN1c3RvbS51bmktcGlja2VyLXRvZ2dsZXtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpfS51bmktc2VsZWN0b3Itc2VsZWN0IC51bmktcGlja2VyLWNvbnRlbnQsLnVuaS1zZWxlY3Rvci1zZWxlY3QgLnVuaS1waWNrZXItaGVhZGVye2Rpc3BsYXk6bm9uZX0udW5pLXNlbGVjdG9yLXNlbGVjdCAudW5pLXBpY2tlci1zZWxlY3R7ZGlzcGxheTpibG9jazttYXgtaGVpZ2h0OjMwMHB4O292ZXJmbG93OmF1dG87YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6NXB4O3BhZGRpbmc6NnB4IDB9LnVuaS1zZWxlY3Rvci1zZWxlY3QgLnVuaS1waWNrZXItaXRlbXtwYWRkaW5nOjAgMTBweDtjb2xvcjojNTU1fS51bmktc2VsZWN0b3Itc2VsZWN0IC51bmktcGlja2VyLWl0ZW06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjZmNmY2fS51bmktc2VsZWN0b3Itc2VsZWN0IC51bmktcGlja2VyLWl0ZW0uc2VsZWN0ZWR7Y29sb3I6IzAwN2FmZn19dW5pLXZpZGVve3dpZHRoOjMwMHB4O2hlaWdodDoyMjVweDtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDowO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX11bmktdmlkZW9baGlkZGVuXXtkaXNwbGF5Om5vbmV9LnVuaS12aWRlby1jb250YWluZXJ7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO292ZXJmbG93OmhpZGRlbjtvYmplY3QtcG9zaXRpb246aW5oZXJpdH0udW5pLXZpZGVvLWNvbnRhaW5lci51bmktdmlkZW8tdHlwZS1mdWxsc2NyZWVue3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5fS51bmktdmlkZW8tdmlkZW97d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvYmplY3QtcG9zaXRpb246aW5oZXJpdH0udW5pLXZpZGVvLWNvdmVye2JvdHRvbTowO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy13ZWJraXQtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstd2Via2l0LWp1c3RpZnktY29udGVudDpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LXdlYmtpdC1hbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6cmdiYSgxLDEsMSwuNSk7ei1pbmRleDoxfS51bmktdmlkZW8tY292ZXIsLnVuaS12aWRlby1zbG90c3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJX0udW5pLXZpZGVvLXNsb3Rze2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbjtwb2ludGVyLWV2ZW50czpub25lfS51bmktdmlkZW8tY292ZXItcGxheS1idXR0b257d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtiYWNrZ3JvdW5kLXNpemU6NTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJSA1MCU7Y3Vyc29yOnBvaW50ZXJ9LnVuaS12aWRlby1jb3Zlci1kdXJhdGlvbntjb2xvcjojZmZmO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjE7bWFyZ2luLXRvcDoxMHB4fS51bmktdmlkZW8tYmFye2hlaWdodDo0NHB4O2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNSk7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO3JpZ2h0OjA7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy13ZWJraXQtYWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjAgMTBweDt6LWluZGV4OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0udW5pLXZpZGVvLWJhci51bmktdmlkZW8tYmFyLWZ1bGx7bGVmdDowfS51bmktdmlkZW8tY29udHJvbHN7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtZmxleDoxOy13ZWJraXQtZmxleC1ncm93OjE7ZmxleC1ncm93OjE7bWFyZ2luOjAgOC41cHh9LnVuaS12aWRlby1jb250cm9sLWJ1dHRvbnt3aWR0aDoxM3B4O2hlaWdodDoxNXB4O3BhZGRpbmc6MTQuNXB4IDEyLjVweCAxNC41cHggMTIuNXB4O21hcmdpbi1sZWZ0Oi04LjVweDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2N1cnNvcjpwb2ludGVyfS51bmktdmlkZW8tY29udHJvbC1idXR0b246YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZC1zaXplOjEwMCU7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCUgNTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0udW5pLXZpZGVvLWNvbnRyb2wtYnV0dG9uLnVuaS12aWRlby1jb250cm9sLWJ1dHRvbi1wbGF5OmFmdGVyLC51bmktdmlkZW8tY292ZXItcGxheS1idXR0b257YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQm9BQUFBZUNBWUFBQUF5Mnc3WUFBQUFBWE5TUjBJQXJzNGM2UUFBQVdoSlJFRlVTQTFqK1AvLy8wY2dCb0hqUUd6Q1FDc0F0Z0pCL0FNeTV3Q3hHTlh0UTlpQnd2b0E1QlVDTVF2VkxFUXhIcE56RFNqa1JoWExNTTNHS3JJZUtLcEVrWVZZamNVdStBTW8zQUxFM0dSWmlOMU12S0tQZ2JJUkpGdUcxMGo4a29lQTBnWkVXNGpmTElLeWY0RXFwZ094TUVFTENScEZuSUozUUdVNVFNeU0wMExpekNGYTFTV2dTa2VzbGhGdEJHa0tWd0dWeTZGWVNKcCtrbFIvQTZxdUIySk9rSVdNSUswb05sT2Y4eEJvWkRFOUxBSTduWW42SHNCcTRsOTZXSFFFYUxVcEF5aU9hQVNlQU0yTmd2dVBCcGFBQ3Q4MklFWXRmS2xzMFVhZ2VjcHdYeUF6cUdUUmRhQTU3c2ptWXJBcHRBalVzQ2tHWWxZTWc5RUZ5TFFJMUlpWkI4VGk2T2JoNUpOaDBRbWdIbE9jQnVLU0lNR2k1MEMxOFVETWlNc3N2T0pFV1BRTHFLWWJpSG54R2tSSWtvQkYyNER5YW9UTUlFb2VoMFczZ2VJK1JCbEFyQ0kwaXo0RCtSVkF6RWFzZnFMVkFRMTlBY1NnNUxvWWlLV0kxa2lpUWdDTUJMbkVFY2ZEU2dBQUFBQkpSVTVFcmtKZ2dnPT0iKX0udW5pLXZpZGVvLWNvbnRyb2wtYnV0dG9uLnVuaS12aWRlby1jb250cm9sLWJ1dHRvbi1wYXVzZTphZnRlcntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCSUFBQUFnQ0FZQUFBQWZmQ2p4QUFBQUFYTlNSMElBcnM0YzZRQUFBRmxKUkVGVVNBM3Rrc0VLQUNBSVE3WC8vNXpxOTh3T2dRYXl1bThRYUd3ZUhoTXpHLzZPdWp6S0F5bW4rMExNcWl2dTFYem5XbVg4L2VjaFRJeU15QWdUd0E3MmlJd3dBZXhnajhnSUU4Q08zYU1SYkRQTWFFeTVCUkdhS2NadjhZeFJBQUFBQUVsRlRrU3VRbUNDIil9LnVuaS12aWRlby1jdXJyZW50LXRpbWUsLnVuaS12aWRlby1kdXJhdGlvbntoZWlnaHQ6MTQuNXB4O2xpbmUtaGVpZ2h0OjE0LjVweDttYXJnaW4tdG9wOjE1cHg7bWFyZ2luLWJvdHRvbToxNC41cHg7Zm9udC1zaXplOjEycHg7Y29sb3I6I2NiY2JjYn0udW5pLXZpZGVvLXByb2dyZXNzLWNvbnRhaW5lcnstd2Via2l0LWJveC1mbGV4OjI7LXdlYmtpdC1mbGV4LWdyb3c6MjtmbGV4LWdyb3c6Mjtwb3NpdGlvbjpyZWxhdGl2ZX0udW5pLXZpZGVvLXByb2dyZXNze2hlaWdodDoycHg7bWFyZ2luOjIxcHggMTJweDtiYWNrZ3JvdW5kLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC40KTtwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6cG9pbnRlcn0udW5pLXZpZGVvLXByb2dyZXNzLWJ1ZmZlcmVke3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt3aWR0aDowO2hlaWdodDoxMDAlOy13ZWJraXQtdHJhbnNpdGlvbjp3aWR0aCAuMXM7dHJhbnNpdGlvbjp3aWR0aCAuMXM7YmFja2dyb3VuZC1jb2xvcjpoc2xhKDAsMCUsMTAwJSwuOCl9LnVuaS12aWRlby1iYWxse3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7cGFkZGluZzoxNHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMjFweDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2xlZnQ6MDttYXJnaW4tbGVmdDotMjJweH0udW5pLXZpZGVvLWlubmVye3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6NTAlfS51bmktdmlkZW8tZGFubXUtYnV0dG9ue3doaXRlLXNwYWNlOm5vd3JhcDtsaW5lLWhlaWdodDoxO3BhZGRpbmc6MnB4IDEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjZmZmO2JvcmRlci1yYWRpdXM6NXB4O2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiNmZmY7bWFyZ2luOjAgOC41cHg7Y3Vyc29yOnBvaW50ZXJ9LnVuaS12aWRlby1kYW5tdS1idXR0b24udW5pLXZpZGVvLWRhbm11LWJ1dHRvbi1hY3RpdmV7Ym9yZGVyLWNvbG9yOiM0OGMyM2Q7Y29sb3I6IzQ4YzIzZH0udW5pLXZpZGVvLWZ1bGxzY3JlZW57d2lkdGg6MTdweDtoZWlnaHQ6MTdweDtwYWRkaW5nOjguNXB4O2JveC1zaXppbmc6Y29udGVudC1ib3g7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0lBQUFBaUNBWUFBQUE2Und2Q0FBQUFBWE5TUjBJQXJzNGM2UUFBQVFSSlJFRlVXQW50MWQwTndpQVFCL0NtUzdoSFg1ekZ4TEYwQWgyaEUvbGc3QlQ0UHlNSlVqNk95dDI5OUJJaW9aVDdBUllHNTl3THBUWG1vWE9NR08vUWVjeHR3eVdXNG80MkF1cEdBTGtGZFgxTWtIeEUzUTdqSWJRUHFOdGhRb2dwSm9aa01MUmxzbi9nRk1RRWs0T29ZMG9RVlV3Tm9vYmhRRlF3Z014VUtGa3QwQzgrWnk2MWQ4U2VSNWlIV0NMT3dGL01DYjhUcC8vZXgzUUZzRTFIbENmS0ZVWDJPaWpORk1uUEtEN2s3NlljQm9MNDAyWmg4Qjc3K01qbFhyVnZ3ZmdsWEEzMmIwTXJSZ3hDRTJuQmlFSmFNT0lRTGtZRndzR29RV29ZVlVnSm93NHBZRDRXZXE0YXlCcWZ3RFlRbW5VSzAzMDFrSVR1anVhd3U2NS9sMkI1QTR6M1FlK1V0N0VCQUFBQUFFbEZUa1N1UW1DQyIpO2JhY2tncm91bmQtc2l6ZTo1MCU7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCUgNTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtjdXJzb3I6cG9pbnRlcn0udW5pLXZpZGVvLWZ1bGxzY3JlZW4udW5pLXZpZGVvLXR5cGUtZnVsbHNjcmVlbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDSUFBQUFpQ0FZQUFBQTZSd3ZDQUFBQkJFbEVRVlJZaGNYV3dRM0NNQXdGME8rcU96QUtRekFBbDBwTXhRUXdRaG1HS3djRVJ4YmdjNGxFVmRIVWJtM3pKUjhxSmVtVG82WUJ5UzNKTzhranlRYkdrSFFwa096NHpjbUs4WVEwQldEQ2tPeEwrVURLb21iTVlLd2ZaQWttREdMRmhFSXNtSENJRnBNQzBXRFNJSE9ZVkVnTmt3NnBZUEloRTVqL1FDb1lGMGc3ZUVrUFlHZWorY1g4MngvbDZhSUFJT2I5Q2NyYWpyakZFL0lBUUdQMUlnSVJjWVZzVnMzMit2eCtuQzluV3E2ZEFaRGhPYVBIQkVER2g1NE80dzBwYTlveEVaQkZtQ2pJQkdiNlFoNEpNV0dpSVdwTUJrU0Z5WUxNWWpJaE5VdzdOOUdRaTJhUWlMeEpIc3BqVitybDFoRnJScDI1dVYyTVJHUVJCc0Fld1BVRC9IaEpWT091Q3p3QUFBQUFTVVZPUks1Q1lJST0iKX0udW5pLXZpZGVvLWRhbm11e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtib3R0b206MDt3aWR0aDoxMDAlO21hcmdpbi10b3A6MTRweDttYXJnaW4tYm90dG9tOjQ0cHg7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MTRweDtvdmVyZmxvdzp2aXNpYmxlfS51bmktdmlkZW8tZGFubXUtaXRlbXtsaW5lLWhlaWdodDoxO3Bvc2l0aW9uOmFic29sdXRlO2NvbG9yOiNmZmY7d2hpdGUtc3BhY2U6bm93cmFwO2xlZnQ6MTAwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGV4KDApO3RyYW5zZm9ybTp0cmFuc2xhdGV4KDApOy13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTpsZWZ0LC13ZWJraXQtdHJhbnNmb3JtO3RyYW5zaXRpb24tcHJvcGVydHk6bGVmdCwtd2Via2l0LXRyYW5zZm9ybTt0cmFuc2l0aW9uLXByb3BlcnR5OmxlZnQsdHJhbnNmb3JtO3RyYW5zaXRpb24tcHJvcGVydHk6bGVmdCx0cmFuc2Zvcm0sLXdlYmtpdC10cmFuc2Zvcm07LXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOjNzO3RyYW5zaXRpb24tZHVyYXRpb246M3M7LXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyfS51bmktdmlkZW8tdG9hc3R7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwJTt0b3A6NTAlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTtib3JkZXItcmFkaXVzOjVweDtiYWNrZ3JvdW5kLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC44KTtjb2xvcjojMDAwO2Rpc3BsYXk6bm9uZX0udW5pLXZpZGVvLXRvYXN0LnVuaS12aWRlby10b2FzdC12b2x1bWV7d2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2Rpc3BsYXk6YmxvY2t9LnVuaS12aWRlby10b2FzdC12b2x1bWUgLnVuaS12aWRlby10b2FzdC10aXRsZXt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjE2cHg7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLXRvcDoxMHB4O2Rpc3BsYXk6YmxvY2t9LnVuaS12aWRlby10b2FzdC12b2x1bWUgLnVuaS12aWRlby10b2FzdC1pY29ue2ZpbGw6IzAwMDt3aWR0aDo1MCU7aGVpZ2h0OjUwJTttYXJnaW4tbGVmdDoyNSU7ZGlzcGxheTpibG9ja30udW5pLXZpZGVvLXRvYXN0LXZvbHVtZSAudW5pLXZpZGVvLXRvYXN0LXZhbHVle3dpZHRoOjgwcHg7aGVpZ2h0OjVweDttYXJnaW4tdG9wOjVweDttYXJnaW4tbGVmdDoxMHB4fS51bmktdmlkZW8tdG9hc3Qtdm9sdW1lIC51bmktdmlkZW8tdG9hc3QtdmFsdWU+LnVuaS12aWRlby10b2FzdC12YWx1ZS1jb250ZW50e292ZXJmbG93OmhpZGRlbn0udW5pLXZpZGVvLXRvYXN0LXZvbHVtZS1ncmlkc3t3aWR0aDo4MHB4O2hlaWdodDo1cHh9LnVuaS12aWRlby10b2FzdC12b2x1bWUtZ3JpZHMtaXRlbXtmbG9hdDpsZWZ0O3dpZHRoOjcuMXB4O2hlaWdodDo1cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwfS51bmktdmlkZW8tdG9hc3Qtdm9sdW1lLWdyaWRzLWl0ZW06bm90KDpmaXJzdC1jaGlsZCl7bWFyZ2luLWxlZnQ6MXB4fS51bmktdmlkZW8tdG9hc3QudW5pLXZpZGVvLXRvYXN0LXByb2dyZXNze2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44KTtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE4cHg7cGFkZGluZzo2cHh9dW5pLXZpZXd7ZGlzcGxheTpibG9ja311bmktdmlld1toaWRkZW5de2Rpc3BsYXk6bm9uZX11bmktd2ViLXZpZXd7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXh9dW5pLXdlYi12aWV3LnVuaS13ZWJ2aWV3LS1mdWxsc2NyZWVue3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowO3RvcDowO2JvdHRvbTowfWJvZHk6OmFmdGVye3Bvc2l0aW9uOmZpeGVkO2NvbnRlbnQ6Jyc7bGVmdDotMTAwMHB4O3RvcDotMTAwMHB4Oy13ZWJraXQtYW5pbWF0aW9uOnNoYWRvdy1wcmVsb2FkIC4xczstd2Via2l0LWFuaW1hdGlvbi1kZWxheTozczthbmltYXRpb246c2hhZG93LXByZWxvYWQgLjFzO2FuaW1hdGlvbi1kZWxheTozc31ALXdlYmtpdC1rZXlmcmFtZXMgc2hhZG93LXByZWxvYWR7MCV7YmFja2dyb3VuZC1pbWFnZTp1cmwoaHR0cHM6Ly9jZG4uZGNsb3VkLm5ldC5jbi9pbWcvc2hhZG93LWdyZXkucG5nKX0xMDAle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vY2RuLmRjbG91ZC5uZXQuY24vaW1nL3NoYWRvdy1ncmV5LnBuZyl9fUBrZXlmcmFtZXMgc2hhZG93LXByZWxvYWR7MCV7YmFja2dyb3VuZC1pbWFnZTp1cmwoaHR0cHM6Ly9jZG4uZGNsb3VkLm5ldC5jbi9pbWcvc2hhZG93LWdyZXkucG5nKX0xMDAle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vY2RuLmRjbG91ZC5uZXQuY24vaW1nL3NoYWRvdy1ncmV5LnBuZyl9fQ=="}},"time_used":761,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":577,"receive":184,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"ultradns","sensor_type":"DNS","title":"DigiCert UltraDNS","description":"DigiCert UltraDNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://vercara.digicert.com/ultra-dns-public","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"cira_dns","sensor_type":"DNS","title":"CIRA Canadian Shield DNS","description":"CIRA Canadian Shield DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cira.ca/en/canadian-shield/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2026-07-27","alert":"Phishing Block","trigger":"conversemy.today","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"conversemy.today/h5/js/chunk-vendors.d318dcb07cf938391b1b.js","fqdn":"conversemy.today","domain":"conversemy.today","tld":"today"},"ip":{"addr":"172.67.186.159","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://conversemy.today/h5/","date":"2026-07-27T14:04:58.127Z","timestamp":1785161098127,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"conversemy.today","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Wed, 03 Jun 2026 13:05:53 GMT","end":"Tue, 01 Sep 2026 14:04:34 GMT"},"fingerprint":{"sha1":"DA:07:CF:C0:8B:27:11:C8:01:8C:18:C7:9A:48:45:36:4D:57:CB:22","sha256":"60:34:7C:18:C1:93:C0:94:5E:DB:6D:FA:42:1F:5A:C2:1B:A1:BB:ED:FF:58:B3:04:61:FB:A1:74:11:43:EB:02"}}},"request":{"raw":"GET /h5/js/chunk-vendors.d318dcb07cf938391b1b.js HTTP/1.1\r\nHost: conversemy.today\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://conversemy.today/h5/\r\nCookie: think_lang=en-us; PHPSESSID=471a1719effa18edc02fec5b29d1e4e3\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\nserver: cloudflare\r\ndate: Mon, 27 Jul 2026 14:04:58 GMT\r\ncontent-type: application/javascript\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding, Accept-Encoding\r\nlast-modified: Sat, 31 Jan 2026 19:17:17 GMT\r\netag: W/\"697e553d-cfac5\"\r\nstrict-transport-security: max-age=31536000\r\ncache-control: no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0\r\npragma: no-cache\r\nexpires: 0\r\ncontent-encoding: gzip\r\ncf-cache-status: BYPASS\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=33%2BGdDFlx2lvFokg66XXzSb%2FPyna4uP9S5h6aJt6EeNFe2cnlz%2F%2F9esBT4wCNtuAq%2BVLPXQ8P4KNtP440p2uEoqeaEwWhGd1swXhucT4NY%2FB6T7z6LmXhlDaTXxVNXcNMpQ4\"}]}\r\ncf-ray: a21c323f4eb9723c-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":850629,"size_decoded":265991,"mime_type":"application/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (65192), with no line terminators","md5":"5ee76cd09f112566c4fc18388d016605","sha1":"7bcda0cb3d1892a645f3c1581349ec391bd673ae","sha256":"e9564f2eb72d40aa71a155b956586c20638897a24201bc0269fbaf93061e50e5","sha512":"636821110a94c8e45e8e6ce7acf4ea886e8d11c72652faaf603f895162f30353d6bee7ca9d8b0f05266edcba3adabb7b52118f77fd5bf179082583875578a1ba","ssdeep":"6144:BAE2TfRoTbg/CED1cCfUB5vm++KSDh8Z3v8zD9lDuTC8enhexekd65G6yAR5XIqE:BP2T5vCw1czyK9v8zPznEeYaG/AXXIqE","tlshash":"6305088df286b0b60be760b5403f220bb2376959b40a84d4f675e4d4ad7894e2237f7d","first_seen":"2025-10-12T09:56:40.488681Z","last_seen":"2026-07-27T14:05:33.338713Z","times_seen":25,"resource_available":true,"data":"KHdpbmRvd1sid2VicGFja0pzb25wIl09d2luZG93WyJ3ZWJwYWNrSnNvbnAiXXx8W10pLnB1c2goW1siY2h1bmstdmVuZG9ycyJdLHsiMDA5NCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixpPW4oImJiMmYiKSxvPW4oImNmZTkiKSxhPW4oImUzMzAiKSxzPW4oIjY5NjQiKSxjPW4oImYxODMiKSx1PW4oIjZkNjEiKSxsPW4oImFjYWMiKSxmPW4oIjg2MWQiKSxkPW4oIjY5ZjMiKS5lbmZvcmNlLGg9bigiZDAzOSIpLHA9bigiY2RjZSIpLHY9T2JqZWN0LGc9QXJyYXkuaXNBcnJheSxtPXYuaXNFeHRlbnNpYmxlLGI9di5pc0Zyb3plbix5PXYuaXNTZWFsZWQsXz12LmZyZWV6ZSx3PXYuc2VhbCxTPSFvLkFjdGl2ZVhPYmplY3QmJiJBY3RpdmVYT2JqZWN0ImluIG8seD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSxrPXUoIldlYWtNYXAiLHgsbCksQz1rLnByb3RvdHlwZSxUPWEoQy5zZXQpLE89ZnVuY3Rpb24oKXtyZXR1cm4gaSYmaCgoZnVuY3Rpb24oKXt2YXIgdD1fKFtdKTtyZXR1cm4gVChuZXcgayx0LDEpLCFiKHQpfSkpfTtpZihwKWlmKFMpe3I9bC5nZXRDb25zdHJ1Y3Rvcih4LCJXZWFrTWFwIiwhMCksYy5lbmFibGUoKTt2YXIgQT1hKENbImRlbGV0ZSJdKSxFPWEoQy5oYXMpLGo9YShDLmdldCk7cyhDLHtkZWxldGU6ZnVuY3Rpb24odCl7aWYoZih0KSYmIW0odCkpe3ZhciBlPWQodGhpcyk7cmV0dXJuIGUuZnJvemVufHwoZS5mcm96ZW49bmV3IHIpLEEodGhpcyx0KXx8ZS5mcm96ZW5bImRlbGV0ZSJdKHQpfXJldHVybiBBKHRoaXMsdCl9LGhhczpmdW5jdGlvbih0KXtpZihmKHQpJiYhbSh0KSl7dmFyIGU9ZCh0aGlzKTtyZXR1cm4gZS5mcm96ZW58fChlLmZyb3plbj1uZXcgciksRSh0aGlzLHQpfHxlLmZyb3plbi5oYXModCl9cmV0dXJuIEUodGhpcyx0KX0sZ2V0OmZ1bmN0aW9uKHQpe2lmKGYodCkmJiFtKHQpKXt2YXIgZT1kKHRoaXMpO3JldHVybiBlLmZyb3plbnx8KGUuZnJvemVuPW5ldyByKSxFKHRoaXMsdCk/aih0aGlzLHQpOmUuZnJvemVuLmdldCh0KX1yZXR1cm4gaih0aGlzLHQpfSxzZXQ6ZnVuY3Rpb24odCxlKXtpZihmKHQpJiYhbSh0KSl7dmFyIG49ZCh0aGlzKTtuLmZyb3plbnx8KG4uZnJvemVuPW5ldyByKSxFKHRoaXMsdCk/VCh0aGlzLHQsZSk6bi5mcm96ZW4uc2V0KHQsZSl9ZWxzZSBUKHRoaXMsdCxlKTtyZXR1cm4gdGhpc319KX1lbHNlIE8oKSYmcyhDLHtzZXQ6ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gZyh0KSYmKGIodCk/bj1fOnkodCkmJihuPXcpKSxUKHRoaXMsdCxlKSxuJiZuKHQpLHRoaXN9fSl9LCIwMGI0IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oImFjMWYiKTt2YXIgcj1uKCIyM2U3IiksaT1uKCJjNjViIiksbz1uKCIxNjI2IiksYT1uKCI4MjVhIikscz1uKCI1NzdlIiksYz1mdW5jdGlvbigpe3ZhciB0PSExLGU9L1thY10vO3JldHVybiBlLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gdD0hMCwvLi8uZXhlYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LCEwPT09ZS50ZXN0KCJhYmMiKSYmdH0oKSx1PS8uLy50ZXN0O3Ioe3RhcmdldDoiUmVnRXhwIixwcm90bzohMCxmb3JjZWQ6IWN9LHt0ZXN0OmZ1bmN0aW9uKHQpe3ZhciBlPWEodGhpcyksbj1zKHQpLHI9ZS5leGVjO2lmKCFvKHIpKXJldHVybiBpKHUsZSxuKTt2YXIgYz1pKHIsZSxuKTtyZXR1cm4gbnVsbCE9PWMmJihhKGMpLCEwKX19KX0sIjAwZWUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYjYyMiIpLGk9cigidG9TdHJpbmdUYWciKSxvPXt9O29baV09InoiLHQuZXhwb3J0cz0iW29iamVjdCB6XSI9PT1TdHJpbmcobyl9LCIwMTVkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKSxpPW4oImUzMzAiKSxvPXIuVWludDhBcnJheSxhPXIuU3ludGF4RXJyb3Iscz1yLnBhcnNlSW50LGM9TWF0aC5taW4sdT0vW15cZGEtZl0vaSxsPWkodS5leGVjKSxmPWkoIiIuc2xpY2UpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPXQubGVuZ3RoO2lmKG4lMiE9PTApdGhyb3cgbmV3IGEoIlN0cmluZyBzaG91bGQgYmUgYW4gZXZlbiBudW1iZXIgb2YgY2hhcmFjdGVycyIpO3ZhciByPWU/YyhlLmxlbmd0aCxuLzIpOm4vMixpPWV8fG5ldyBvKHIpLGQ9MCxoPTA7d2hpbGUoaDxyKXt2YXIgcD1mKHQsZCxkKz0yKTtpZihsKHUscCkpdGhyb3cgbmV3IGEoIlN0cmluZyBzaG91bGQgb25seSBjb250YWluIGhleCBjaGFyYWN0ZXJzIik7aVtoKytdPXMocCwxNil9cmV0dXJue2J5dGVzOmkscmVhZDpkfX19LCIwMWI0IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKCl7dGhpcy5oZWFkPW51bGwsdGhpcy50YWlsPW51bGx9O3IucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dmFyIGU9e2l0ZW06dCxuZXh0Om51bGx9LG49dGhpcy50YWlsO24/bi5uZXh0PWU6dGhpcy5oZWFkPWUsdGhpcy50YWlsPWV9LGdldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuaGVhZDtpZih0KXt2YXIgZT10aGlzLmhlYWQ9dC5uZXh0O3JldHVybiBudWxsPT09ZSYmKHRoaXMudGFpbD1udWxsKSx0Lml0ZW19fX0sdC5leHBvcnRzPXJ9LCIwMzY2IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjQ2MjUiKSxpPW4oIjU5ZWQiKSxvPW4oIjQwZDUiKSxhPXIoci5iaW5kKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaSh0KSx2b2lkIDA9PT1lP3Q6bz9hKHQsZSk6ZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fX0sIjA0ZjgiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMTIxMiIpLGk9bigiZDAzOSIpLG89bigiY2ZlOSIpLGE9by5TdHJpbmc7dC5leHBvcnRzPSEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmIWkoKGZ1bmN0aW9uKCl7dmFyIHQ9U3ltYm9sKCJzeW1ib2wgZGV0ZWN0aW9uIik7cmV0dXJuIWEodCl8fCEoT2JqZWN0KHQpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJnImJnI8NDF9KSl9LCIwNTM4IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImUzMzAiKSxpPW4oIjU5ZWQiKSxvPW4oIjg2MWQiKSxhPW4oIjFhMmQiKSxzPW4oImYzNmEiKSxjPW4oIjQwZDUiKSx1PUZ1bmN0aW9uLGw9cihbXS5jb25jYXQpLGY9cihbXS5qb2luKSxkPXt9LGg9ZnVuY3Rpb24odCxlLG4pe2lmKCFhKGQsZSkpe2Zvcih2YXIgcj1bXSxpPTA7aTxlO2krKylyW2ldPSJhWyIraSsiXSI7ZFtlXT11KCJDLGEiLCJyZXR1cm4gbmV3IEMoIitmKHIsIiwiKSsiKSIpfXJldHVybiBkW2VdKHQsbil9O3QuZXhwb3J0cz1jP3UuYmluZDpmdW5jdGlvbih0KXt2YXIgZT1pKHRoaXMpLG49ZS5wcm90b3R5cGUscj1zKGFyZ3VtZW50cywxKSxhPWZ1bmN0aW9uKCl7dmFyIG49bChyLHMoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhP2goZSxuLmxlbmd0aCxuKTplLmFwcGx5KHQsbil9O3JldHVybiBvKG4pJiYoYS5wcm90b3R5cGU9biksYX19LCIwNTdmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImM2YjYiKSxpPW4oImZjNmEiKSxvPW4oIjI0MWMiKS5mLGE9bigiZjM2YSIpLHM9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KTpbXSxjPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gbyh0KX1jYXRjaChlKXtyZXR1cm4gYShzKX19O3QuZXhwb3J0cy5mPWZ1bmN0aW9uKHQpe3JldHVybiBzJiYiV2luZG93Ij09PXIodCk/Yyh0KTpvKGkodCkpfX0sIjA2YzUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bigiN2E4MiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmRlZmF1bHQ9byxuKCJkNDAxIiksbigiYTYzMCIpLG4oImZiNmEiKSxuKCJkM2I3IiksbigiYWMxZiIpLG4oIjAwYjQiKSxuKCIyNWYwIiksbigiM2NhMyIpO3ZhciByPWkobigiNmI3NSIpKTtmdW5jdGlvbiBpKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1mdW5jdGlvbiBvKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybigwLHIuZGVmYXVsdCkodCxlKTt2YXIgbj17fS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/KDAsci5kZWZhdWx0KSh0LGUpOnZvaWQgMH19fSwiMDZjZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI4M2FiIiksaT1uKCJjNjViIiksbz1uKCJkMWU3IiksYT1uKCI1YzZjIikscz1uKCJmYzZhIiksYz1uKCJhMDRiIiksdT1uKCIxYTJkIiksbD1uKCIwY2ZiIiksZj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2UuZj1yP2Y6ZnVuY3Rpb24odCxlKXtpZih0PXModCksZT1jKGUpLGwpdHJ5e3JldHVybiBmKHQsZSl9Y2F0Y2gobil7fWlmKHUodCxlKSlyZXR1cm4gYSghaShvLmYsdCxlKSx0W2VdKX19LCIwN2FjIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oIjZmNTMiKS52YWx1ZXM7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITB9LHt2YWx1ZXM6ZnVuY3Rpb24odCl7cmV0dXJuIGkodCl9fSl9LCIwN2Q2IjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiZGVmaW5lIGNhbm5vdCBiZSB1c2VkIGluZGlyZWN0Iil9fSwiMDdmYSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI1MGM0Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByKHQubGVuZ3RoKX19LCIwODNhIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjBkNTEiKSxpPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighZGVsZXRlIHRbZV0pdGhyb3cgbmV3IGkoIkNhbm5vdCBkZWxldGUgcHJvcGVydHkgIityKGUpKyIgb2YgIityKHQpKX19LCIwOWYwIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlKXt2YXIgbj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLGksbyxhLHM9W10sYz0hMCx1PSExO3RyeXtpZihvPShuPW4uY2FsbCh0KSkubmV4dCwwPT09ZSl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShyPW8uY2FsbChuKSkuZG9uZSkmJihzLnB1c2goci52YWx1ZSkscy5sZW5ndGghPT1lKTtjPSEwKTt9Y2F0Y2godCl7dT0hMCxpPXR9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPW5bInJldHVybiJdJiYoYT1uWyJyZXR1cm4iXSgpLE9iamVjdChhKSE9PWEpKXJldHVybn1maW5hbGx5e2lmKHUpdGhyb3cgaX19cmV0dXJuIHN9fW4oIjdhODIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXIsbigiYTRkMyIpLG4oImUwMWEiKSxuKCJkMjhiIiksbigiMTRkOSIpLG4oImQzYjciKSxuKCIzY2EzIiksbigiZGRiMCIpfSwiMGEwMCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCIzNGFmIil9LCIwYjI1IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjU5MjYiKSxpPW4oIjUwYzQiKSxvPVJhbmdlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpcmV0dXJuIDA7dmFyIGU9cih0KSxuPWkoZSk7aWYoZSE9PW4pdGhyb3cgbmV3IG8oIldyb25nIGxlbmd0aCBvciBpbmRleCIpO3JldHVybiBufX0sIjBiNDIiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZThiNSIpLGk9bigiNjhlZSIpLG89bigiODYxZCIpLGE9bigiYjYyMiIpLHM9YSgic3BlY2llcyIpLGM9QXJyYXk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiByKHQpJiYoZT10LmNvbnN0cnVjdG9yLGkoZSkmJihlPT09Y3x8cihlLnByb3RvdHlwZSkpP2U9dm9pZCAwOm8oZSkmJihlPWVbc10sbnVsbD09PWUmJihlPXZvaWQgMCkpKSx2b2lkIDA9PT1lP2M6ZX19LCIwYjQzIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjA0ZjgiKTt0LmV4cG9ydHM9ciYmISFTeW1ib2xbImZvciJdJiYhIVN5bWJvbC5rZXlGb3J9LCIwYzQ3IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKSxpPW4oImQ0NGUiKTtpKHIuSlNPTiwiSlNPTiIsITApfSwiMGNiMiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlMzMwIiksaT1uKCI3YjBiIiksbz1NYXRoLmZsb29yLGE9cigiIi5jaGFyQXQpLHM9cigiIi5yZXBsYWNlKSxjPXIoIiIuc2xpY2UpLHU9L1wkKFskJidgXXxcZHsxLDJ9fDxbXj5dKj4pL2csbD0vXCQoWyQmJ2BdfFxkezEsMn0pL2c7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHIsZixkKXt2YXIgaD1uK3QubGVuZ3RoLHA9ci5sZW5ndGgsdj1sO3JldHVybiB2b2lkIDAhPT1mJiYoZj1pKGYpLHY9dSkscyhkLHYsKGZ1bmN0aW9uKGkscyl7dmFyIHU7c3dpdGNoKGEocywwKSl7Y2FzZSIkIjpyZXR1cm4iJCI7Y2FzZSImIjpyZXR1cm4gdDtjYXNlImAiOnJldHVybiBjKGUsMCxuKTtjYXNlIiciOnJldHVybiBjKGUsaCk7Y2FzZSI8Ijp1PWZbYyhzLDEsLTEpXTticmVhaztkZWZhdWx0OnZhciBsPStzO2lmKDA9PT1sKXJldHVybiBpO2lmKGw+cCl7dmFyIGQ9byhsLzEwKTtyZXR1cm4gMD09PWQ/aTpkPD1wP3ZvaWQgMD09PXJbZC0xXT9hKHMsMSk6cltkLTFdK2EocywxKTppfXU9cltsLTFdfXJldHVybiB2b2lkIDA9PT11PyIiOnV9KSl9fSwiMGNjYiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlMzMwIiksaT1uKCI1MGM0Iiksbz1uKCI1NzdlIiksYT1uKCIxMTQ4Iikscz1uKCIxZDgwIiksYz1yKGEpLHU9cigiIi5zbGljZSksbD1NYXRoLmNlaWwsZj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLHIpe3ZhciBhLGYsZD1vKHMoZSkpLGg9aShuKSxwPWQubGVuZ3RoLHY9dm9pZCAwPT09cj8iICI6byhyKTtyZXR1cm4gaDw9cHx8IiI9PT12P2Q6KGE9aC1wLGY9Yyh2LGwoYS92Lmxlbmd0aCkpLGYubGVuZ3RoPmEmJihmPXUoZiwwLGEpKSx0P2QrZjpmK2QpfX07dC5leHBvcnRzPXtzdGFydDpmKCExKSxlbmQ6ZighMCl9fSwiMGNmYiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI4M2FiIiksaT1uKCJkMDM5Iiksbz1uKCJjYzEyIik7dC5leHBvcnRzPSFyJiYhaSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9PU9iamVjdC5kZWZpbmVQcm9wZXJ0eShvKCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KSl9LCIwZDIxIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH1uKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD1yfSwiMGQyNiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlMzMwIiksaT1FcnJvcixvPXIoIiIucmVwbGFjZSksYT1mdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKG5ldyBpKHQpLnN0YWNrKX0oInp4Y2FzZCIpLHM9L1xuXHMqYXQgW146XSo6W15cbl0qLyxjPXMudGVzdChhKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZihjJiYic3RyaW5nIj09dHlwZW9mIHQmJiFpLnByZXBhcmVTdGFja1RyYWNlKXdoaWxlKGUtLSl0PW8odCxzLCIiKTtyZXR1cm4gdH19LCIwZDUxIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPVN0cmluZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiByKHQpfWNhdGNoKGUpe3JldHVybiJPYmplY3QifX19LCIwZGM2IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oIjdhODIiKTt2YXIgcj1uKCI0ZWE0IikuZGVmYXVsdDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXZvaWQgMCxuKCJkM2I3IiksbigiYWMxZiIpLG4oIjAwYjQiKTt2YXIgaT1yKG4oImMxNGYiKSksbz1yKG4oIjFkYTEiKSksYT1yKG4oImQ0ZWMiKSkscz1yKG4oImJlZTIiKSksYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXsoMCxhLmRlZmF1bHQpKHRoaXMsdCksdGhpcy5jb25maWc9e3R5cGU6Im5hdmlnYXRlVG8iLHVybDoiIixkZWx0YToxLHBhcmFtczp7fSxhbmltYXRpb25UeXBlOiJwb3AtaW4iLGFuaW1hdGlvbkR1cmF0aW9uOjMwMCxpbnRlcmNlcHQ6ITF9LHRoaXMucm91dGU9dGhpcy5yb3V0ZS5iaW5kKHRoaXMpfXJldHVybigwLHMuZGVmYXVsdCkodCxbe2tleToiYWRkUm9vdFBhdGgiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiIvIj09PXRbMF0/dDoiLyIuY29uY2F0KHQpfX0se2tleToibWl4aW5QYXJhbSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0PXQmJnRoaXMuYWRkUm9vdFBhdGgodCk7dmFyIG49IiI7cmV0dXJuLy4qXC8uKlw/Lio9LiovLnRlc3QodCk/KG49dW5pLiR1LnF1ZXJ5UGFyYW1zKGUsITEpLHQrIiYiK24pOihuPXVuaS4kdS5xdWVyeVBhcmFtcyhlKSx0K24pfX0se2tleToicm91dGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9KDAsby5kZWZhdWx0KSgoMCxpLmRlZmF1bHQpKCkubSgoZnVuY3Rpb24gdCgpe3ZhciBlLG4scixvLGE9YXJndW1lbnRzO3JldHVybigwLGkuZGVmYXVsdCkoKS53KChmdW5jdGlvbih0KXt3aGlsZSgxKXN3aXRjaCh0Lm4pe2Nhc2UgMDppZihlPWEubGVuZ3RoPjAmJnZvaWQgMCE9PWFbMF0/YVswXTp7fSxuPWEubGVuZ3RoPjEmJnZvaWQgMCE9PWFbMV0/YVsxXTp7fSxyPXt9LCJzdHJpbmciPT09dHlwZW9mIGU/KHIudXJsPXRoaXMubWl4aW5QYXJhbShlLG4pLHIudHlwZT0ibmF2aWdhdGVUbyIpOihyPXVuaS4kdS5kZWVwTWVyZ2UodGhpcy5jb25maWcsZSksci51cmw9dGhpcy5taXhpblBhcmFtKGUudXJsLGUucGFyYW1zKSksbi5pbnRlcmNlcHQmJih0aGlzLmNvbmZpZy5pbnRlcmNlcHQ9bi5pbnRlcmNlcHQpLHIucGFyYW1zPW4scj11bmkuJHUuZGVlcE1lcmdlKHRoaXMuY29uZmlnLHIpLCJmdW5jdGlvbiIhPT10eXBlb2YgdW5pLiR1LnJvdXRlSW50ZXJjZXB0KXt0Lm49MjticmVha31yZXR1cm4gdC5uPTEsbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsZSl7dW5pLiR1LnJvdXRlSW50ZXJjZXB0KHIsdCl9KSk7Y2FzZSAxOm89dC52LG8mJnRoaXMub3BlblBhZ2UociksdC5uPTM7YnJlYWs7Y2FzZSAyOnRoaXMub3BlblBhZ2Uocik7Y2FzZSAzOnJldHVybiB0LmEoMil9fSksdCx0aGlzKX0pKSk7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZX0oKX0se2tleToib3BlblBhZ2UiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudXJsLG49KHQudHlwZSx0LmRlbHRhKSxyPXQuYW5pbWF0aW9uVHlwZSxpPXQuYW5pbWF0aW9uRHVyYXRpb247Im5hdmlnYXRlVG8iIT10LnR5cGUmJiJ0byIhPXQudHlwZXx8dW5pLm5hdmlnYXRlVG8oe3VybDplLGFuaW1hdGlvblR5cGU6cixhbmltYXRpb25EdXJhdGlvbjppfSksInJlZGlyZWN0VG8iIT10LnR5cGUmJiJyZWRpcmVjdCIhPXQudHlwZXx8dW5pLnJlZGlyZWN0VG8oe3VybDplfSksInN3aXRjaFRhYiIhPXQudHlwZSYmInRhYiIhPXQudHlwZXx8dW5pLnN3aXRjaFRhYih7dXJsOmV9KSwicmVMYXVuY2giIT10LnR5cGUmJiJsYXVuY2giIT10LnR5cGV8fHVuaS5yZUxhdW5jaCh7dXJsOmV9KSwibmF2aWdhdGVCYWNrIiE9dC50eXBlJiYiYmFjayIhPXQudHlwZXx8dW5pLm5hdmlnYXRlQmFjayh7ZGVsdGE6bn0pfX1dKX0oKTtlLmRlZmF1bHQ9KG5ldyBjKS5yb3V0ZX0sIjBlNDQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4hIXQmJiJvYmplY3QiPT10eXBlb2YgdH0odCkmJiFmdW5jdGlvbih0KXt2YXIgZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk7cmV0dXJuIltvYmplY3QgUmVnRXhwXSI9PT1lfHwiW29iamVjdCBEYXRlXSI9PT1lfHxmdW5jdGlvbih0KXtyZXR1cm4gdC4kJHR5cGVvZj09PWl9KHQpfSh0KX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yP1N5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKTo2MDEwMztmdW5jdGlvbiBvKHQsZSl7cmV0dXJuITEhPT1lLmNsb25lJiZlLmlzTWVyZ2VhYmxlT2JqZWN0KHQpP3UoQXJyYXkuaXNBcnJheSh0KT9bXTp7fSx0LGUpOnR9ZnVuY3Rpb24gYSh0LGUsbil7cmV0dXJuIHQuY29uY2F0KGUpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG8odCxuKX0pKX1mdW5jdGlvbiBzKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KS5jb25jYXQoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3BlcnR5SXNFbnVtZXJhYmxlKGUpfSkpOltdfSh0KSl9ZnVuY3Rpb24gYyh0LGUpe3RyeXtyZXR1cm4gZSBpbiB0fWNhdGNoKHQpe3JldHVybiExfX1mdW5jdGlvbiB1KHQsZSxuKXsobj1ufHx7fSkuYXJyYXlNZXJnZT1uLmFycmF5TWVyZ2V8fGEsbi5pc01lcmdlYWJsZU9iamVjdD1uLmlzTWVyZ2VhYmxlT2JqZWN0fHxyLG4uY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQ9bzt2YXIgaT1BcnJheS5pc0FycmF5KGUpO3JldHVybiBpPT09QXJyYXkuaXNBcnJheSh0KT9pP24uYXJyYXlNZXJnZSh0LGUsbik6ZnVuY3Rpb24odCxlLG4pe3ZhciByPXt9O3JldHVybiBuLmlzTWVyZ2VhYmxlT2JqZWN0KHQpJiZzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JbZV09byh0W2VdLG4pfSkpLHMoZSkuZm9yRWFjaCgoZnVuY3Rpb24oaSl7KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGModCxlKSYmIShPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpJiZPYmplY3QucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0LGUpKX0pKHQsaSl8fChyW2ldPWModCxpKSYmbi5pc01lcmdlYWJsZU9iamVjdChlW2ldKT9mdW5jdGlvbih0LGUpe2lmKCFlLmN1c3RvbU1lcmdlKXJldHVybiB1O3ZhciBuPWUuY3VzdG9tTWVyZ2UodCk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjp1fShpLG4pKHRbaV0sZVtpXSxuKTpvKGVbaV0sbikpfSkpLHJ9KHQsZSxuKTpvKGUsbil9dS5hbGw9ZnVuY3Rpb24odCxlKXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgRXJyb3IoImZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBhcnJheSIpO3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxuKXtyZXR1cm4gdSh0LG4sZSl9KSx7fSl9O3ZhciBsPXU7ZnVuY3Rpb24gZih0KXt2YXIgZT0odD10fHx7fSkuc3RvcmFnZXx8d2luZG93JiZ3aW5kb3cubG9jYWxTdG9yYWdlLG49dC5rZXl8fCJ2dWV4IjtmdW5jdGlvbiByKHQsZSl7dmFyIG49ZS5nZXRJdGVtKHQpO3RyeXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4/SlNPTi5wYXJzZShuKToib2JqZWN0Ij09dHlwZW9mIG4/bjp2b2lkIDB9Y2F0Y2godCl7fX1mdW5jdGlvbiBpKCl7cmV0dXJuITB9ZnVuY3Rpb24gbyh0LGUsbil7cmV0dXJuIG4uc2V0SXRlbSh0LEpTT04uc3RyaW5naWZ5KGUpKX1mdW5jdGlvbiBhKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiEvXihfX3Byb3RvX198Y29uc3RydWN0b3J8cHJvdG90eXBlKSQvLnRlc3QoZSkmJigoZT1lLnNwbGl0P2Uuc3BsaXQoIi4iKTplLnNsaWNlKDApKS5zbGljZSgwLC0xKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbZV09dFtlXXx8e319KSx0KVtlLnBvcCgpXT1uKSx0fShlLG4sKHI9dCx2b2lkIDA9PT0ocj0oKGk9bikuc3BsaXQ/aS5zcGxpdCgiLiIpOmkpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmdFtlXX0pLHIpKT92b2lkIDA6cikpO3ZhciByLGl9KSx7fSk6dH1mdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5zdWJzY3JpYmUoZSl9fSh0LmFzc2VydFN0b3JhZ2V8fGZ1bmN0aW9uKCl7ZS5zZXRJdGVtKCJAQCIsMSksZS5yZW1vdmVJdGVtKCJAQCIpfSkoZSk7dmFyIGMsdT1mdW5jdGlvbigpe3JldHVybih0LmdldFN0YXRlfHxyKShuLGUpfTtyZXR1cm4gdC5mZXRjaEJlZm9yZVVzZSYmKGM9dSgpKSxmdW5jdGlvbihyKXt0LmZldGNoQmVmb3JlVXNlfHwoYz11KCkpLCJvYmplY3QiPT10eXBlb2YgYyYmbnVsbCE9PWMmJihyLnJlcGxhY2VTdGF0ZSh0Lm92ZXJ3cml0ZT9jOmwoci5zdGF0ZSxjLHthcnJheU1lcmdlOnQuYXJyYXlNZXJnZXJ8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9LGNsb25lOiExfSkpLCh0LnJlaHlkcmF0ZWR8fGZ1bmN0aW9uKCl7fSkocikpLCh0LnN1YnNjcmliZXJ8fHMpKHIpKChmdW5jdGlvbihyLHMpeyh0LmZpbHRlcnx8aSkocikmJih0LnNldFN0YXRlfHxvKShuLCh0LnJlZHVjZXJ8fGEpKHMsdC5wYXRocyksZSl9KSl9fWVbImRlZmF1bHQiXT1mfSwiMGViNiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJkMDY2Iiksbz1uKCIyYTA3IiksYT1uKCJkMDM5Iikscz1uKCI3YzczIiksYz1uKCI1YzZjIiksdT1uKCI5YmYyIikuZixsPW4oImNiMmQiKSxmPW4oImVkZDAiKSxkPW4oIjFhMmQiKSxoPW4oIjE5YWEiKSxwPW4oIjgyNWEiKSx2PW4oImFhMWYiKSxnPW4oImUzOTEiKSxtPW4oImNmOTgiKSxiPW4oIjBkMjYiKSx5PW4oIjY5ZjMiKSxfPW4oIjgzYWIiKSx3PW4oImM0MzAiKSxTPSJET01FeGNlcHRpb24iLHg9IkRBVEFfQ0xPTkVfRVJSIixrPWkoIkVycm9yIiksQz1pKFMpfHxmdW5jdGlvbigpe3RyeXt2YXIgdD1pKCJNZXNzYWdlQ2hhbm5lbCIpfHxvKCJ3b3JrZXJfdGhyZWFkcyIpLk1lc3NhZ2VDaGFubmVsOyhuZXcgdCkucG9ydDEucG9zdE1lc3NhZ2UobmV3IFdlYWtNYXApfWNhdGNoKGUpe2lmKGUubmFtZT09PXgmJjI1PT09ZS5jb2RlKXJldHVybiBlLmNvbnN0cnVjdG9yfX0oKSxUPUMmJkMucHJvdG90eXBlLE89ay5wcm90b3R5cGUsQT15LnNldCxFPXkuZ2V0dGVyRm9yKFMpLGo9InN0YWNrImluIG5ldyBrKFMpLE09ZnVuY3Rpb24odCl7cmV0dXJuIGQobSx0KSYmbVt0XS5tP21bdF0uYzowfSxJPWZ1bmN0aW9uKCl7aCh0aGlzLFApO3ZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1nKHQ8MT92b2lkIDA6YXJndW1lbnRzWzBdKSxuPWcodDwyP3ZvaWQgMDphcmd1bWVudHNbMV0sIkVycm9yIikscj1NKG4pO2lmKEEodGhpcyx7dHlwZTpTLG5hbWU6bixtZXNzYWdlOmUsY29kZTpyfSksX3x8KHRoaXMubmFtZT1uLHRoaXMubWVzc2FnZT1lLHRoaXMuY29kZT1yKSxqKXt2YXIgaT1uZXcgayhlKTtpLm5hbWU9Uyx1KHRoaXMsInN0YWNrIixjKDEsYihpLnN0YWNrLDEpKSl9fSxQPUkucHJvdG90eXBlPXMoTyksJD1mdW5jdGlvbih0KXtyZXR1cm57ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OnR9fSxMPWZ1bmN0aW9uKHQpe3JldHVybiAkKChmdW5jdGlvbigpe3JldHVybiBFKHRoaXMpW3RdfSkpfTtfJiYoZihQLCJjb2RlIixMKCJjb2RlIikpLGYoUCwibWVzc2FnZSIsTCgibWVzc2FnZSIpKSxmKFAsIm5hbWUiLEwoIm5hbWUiKSkpLHUoUCwiY29uc3RydWN0b3IiLGMoMSxJKSk7dmFyIFI9YSgoZnVuY3Rpb24oKXtyZXR1cm4hKG5ldyBDIGluc3RhbmNlb2Ygayl9KSksTj1SfHxhKChmdW5jdGlvbigpe3JldHVybiBPLnRvU3RyaW5nIT09dnx8IjI6IDEiIT09U3RyaW5nKG5ldyBDKDEsMikpfSkpLEQ9Unx8YSgoZnVuY3Rpb24oKXtyZXR1cm4gMjUhPT1uZXcgQygxLCJEYXRhQ2xvbmVFcnJvciIpLmNvZGV9KSksQj1SfHwyNSE9PUNbeF18fDI1IT09VFt4XSxGPXc/Tnx8RHx8QjpSO3Ioe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6Rn0se0RPTUV4Y2VwdGlvbjpGP0k6Q30pO3ZhciB6PWkoUyksVz16LnByb3RvdHlwZTtmb3IodmFyIEggaW4gTiYmKHd8fEM9PT16KSYmbChXLCJ0b1N0cmluZyIsdiksRCYmXyYmQz09PXomJmYoVywiY29kZSIsJCgoZnVuY3Rpb24oKXtyZXR1cm4gTShwKHRoaXMpLm5hbWUpfSkpKSxtKWlmKGQobSxIKSl7dmFyIFU9bVtIXSxxPVUucyxWPWMoNixVLmMpO2QoeixxKXx8dSh6LHEsViksZChXLHEpfHx1KFcscSxWKX19LCIwZjMzIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKSxpPW4oImQwMzkiKSxvPXIuUmVnRXhwLGE9IWkoKGZ1bmN0aW9uKCl7dmFyIHQ9ITA7dHJ5e28oIi4iLCJkIil9Y2F0Y2godSl7dD0hMX12YXIgZT17fSxuPSIiLHI9dD8iZGdpbXN5IjoiZ2ltc3kiLGk9ZnVuY3Rpb24odCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbis9ciwhMH19KX0sYT17ZG90QWxsOiJzIixnbG9iYWw6ImciLGlnbm9yZUNhc2U6ImkiLG11bHRpbGluZToibSIsc3RpY2t5OiJ5In07Zm9yKHZhciBzIGluIHQmJihhLmhhc0luZGljZXM9ImQiKSxhKWkocyxhW3NdKTt2YXIgYz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8ucHJvdG90eXBlLCJmbGFncyIpLmdldC5jYWxsKGUpO3JldHVybiBjIT09cnx8biE9PXJ9KSk7dC5leHBvcnRzPXtjb3JyZWN0OmF9fSwiMTA3YyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkMDM5IiksaT1uKCJjZmU5Iiksbz1pLlJlZ0V4cDt0LmV4cG9ydHM9cigoZnVuY3Rpb24oKXt2YXIgdD1vKCIoPzxhPmIpIiwiZyIpO3JldHVybiJiIiE9PXQuZXhlYygiYiIpLmdyb3Vwcy5hfHwiYmMiIT09ImIiLnJlcGxhY2UodCwiJDxhPmMiKX0pKX0sIjEwZDEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bigiMDA5NCIpfSwxMTQ4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNTkyNiIpLGk9bigiNTc3ZSIpLG89bigiMWQ4MCIpLGE9UmFuZ2VFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9aShvKHRoaXMpKSxuPSIiLHM9cih0KTtpZihzPDB8fHM9PT0xLzApdGhyb3cgbmV3IGEoIldyb25nIG51bWJlciBvZiByZXBldGl0aW9ucyIpO2Zvcig7cz4wOyhzPj4+PTEpJiYoZSs9ZSkpMSZzJiYobis9ZSk7cmV0dXJuIG59fSwxMjEyOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsaSxvPW4oImNmZTkiKSxhPW4oImI1ZGIiKSxzPW8ucHJvY2VzcyxjPW8uRGVubyx1PXMmJnMudmVyc2lvbnN8fGMmJmMudmVyc2lvbixsPXUmJnUudjg7bCYmKHI9bC5zcGxpdCgiLiIpLGk9clswXT4wJiZyWzBdPDQ/MTorKHJbMF0rclsxXSkpLCFpJiZhJiYocj1hLm1hdGNoKC9FZGdlXC8oXGQrKS8pLCghcnx8clsxXT49NzQpJiYocj1hLm1hdGNoKC9DaHJvbWVcLyhcZCspLyksciYmKGk9K3JbMV0pKSksdC5leHBvcnRzPWl9LDEyNzY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjNjViIiksaT1uKCJlMzMwIiksbz1uKCJkNzg0IiksYT1uKCI4MjVhIikscz1uKCI4NjFkIiksYz1uKCIxZDgwIiksdT1uKCI0ODQwIiksbD1uKCI4YWE1IiksZj1uKCI1MGM0IiksZD1uKCI1NzdlIiksaD1uKCJkYzRhIikscD1uKCIxNGMzIiksdj1uKCI5ZjdmIiksZz1uKCJkMDM5IiksbT12LlVOU1VQUE9SVEVEX1ksYj00Mjk0OTY3Mjk1LHk9TWF0aC5taW4sXz1pKFtdLnB1c2gpLHc9aSgiIi5zbGljZSksUz0hZygoZnVuY3Rpb24oKXt2YXIgdD0vKD86KS8sZT10LmV4ZWM7dC5leGVjPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfTt2YXIgbj0iYWIiLnNwbGl0KHQpO3JldHVybiAyIT09bi5sZW5ndGh8fCJhIiE9PW5bMF18fCJiIiE9PW5bMV19KSkseD0iYyI9PT0iYWJiYyIuc3BsaXQoLyhiKSovKVsxXXx8NCE9PSJ0ZXN0Ii5zcGxpdCgvKD86KS8sLTEpLmxlbmd0aHx8MiE9PSJhYiIuc3BsaXQoLyg/OmFiKSovKS5sZW5ndGh8fDQhPT0iLiIuc3BsaXQoLyguPykoLj8pLykubGVuZ3RofHwiLiIuc3BsaXQoLygpKCkvKS5sZW5ndGg+MXx8IiIuc3BsaXQoLy4/LykubGVuZ3RoO28oInNwbGl0IiwoZnVuY3Rpb24odCxlLG4pe3ZhciBpPSIwIi5zcGxpdCh2b2lkIDAsMCkubGVuZ3RoP2Z1bmN0aW9uKHQsbil7cmV0dXJuIHZvaWQgMD09PXQmJjA9PT1uP1tdOnIoZSx0aGlzLHQsbil9OmU7cmV0dXJuW2Z1bmN0aW9uKGUsbil7dmFyIG89Yyh0aGlzKSxhPXMoZSk/aChlLHQpOnZvaWQgMDtyZXR1cm4gYT9yKGEsZSxvLG4pOnIoaSxkKG8pLGUsbil9LGZ1bmN0aW9uKHQscil7dmFyIG89YSh0aGlzKSxzPWQodCk7aWYoIXgpe3ZhciBjPW4oaSxvLHMscixpIT09ZSk7aWYoYy5kb25lKXJldHVybiBjLnZhbHVlfXZhciBoPXUobyxSZWdFeHApLHY9by51bmljb2RlLGc9KG8uaWdub3JlQ2FzZT8iaSI6IiIpKyhvLm11bHRpbGluZT8ibSI6IiIpKyhvLnVuaWNvZGU/InUiOiIiKSsobT8iZyI6InkiKSxTPW5ldyBoKG0/Il4oPzoiK28uc291cmNlKyIpIjpvLGcpLGs9dm9pZCAwPT09cj9iOnI+Pj4wO2lmKDA9PT1rKXJldHVybltdO2lmKDA9PT1zLmxlbmd0aClyZXR1cm4gbnVsbD09PXAoUyxzKT9bc106W107dmFyIEM9MCxUPTAsTz1bXTt3aGlsZShUPHMubGVuZ3RoKXtTLmxhc3RJbmRleD1tPzA6VDt2YXIgQSxFPXAoUyxtP3cocyxUKTpzKTtpZihudWxsPT09RXx8KEE9eShmKFMubGFzdEluZGV4KyhtP1Q6MCkpLHMubGVuZ3RoKSk9PT1DKVQ9bChzLFQsdik7ZWxzZXtpZihfKE8sdyhzLEMsVCkpLE8ubGVuZ3RoPT09aylyZXR1cm4gTztmb3IodmFyIGo9MTtqPD1FLmxlbmd0aC0xO2orKylpZihfKE8sRVtqXSksTy5sZW5ndGg9PT1rKXJldHVybiBPO1Q9Qz1BfX1yZXR1cm4gXyhPLHcocyxDKSksT31dfSkseHx8IVMsbSl9LCIxMjlmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz1PYmplY3QuaXN8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lPzAhPT10fHwxL3Q9PT0xL2U6dCE9PXQmJmUhPT1lfX0sIjEzMWEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiZDJiYiIpO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwfSx7c2V0UHJvdG90eXBlT2Y6aX0pfSwiMTM0YiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIik7dmFyIHI9bigiNGVhNCIpLmRlZmF1bHQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDAsbigiZmI2YSIpLG4oIjRlYzkiKSxuKCJkM2I3IiksbigiNGQ2MyIpLG4oImM2MDciKSxuKCJhYzFmIiksbigiMmMzZSIpLG4oIjI1ZjAiKSxuKCI2MDYyIiksbigiMWU3MCIpLG4oIjc5YTQiKSxuKCJjMWExIiksbigiOGIwMCIpLG4oImE0ZTciKSxuKCIxZTVhIiksbigiNzJjMyIpLG4oIjNjYTMiKSxuKCJkZGIwIik7dmFyIGk9cihuKCI1M2NhIikpLG89cihuKCI3Njc4IikpO2Z1bmN0aW9uIGEoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307aWYodD0oMCxvLmRlZmF1bHQpKHQpLCJvYmplY3QiIT09KDAsaS5kZWZhdWx0KSh0KXx8bnVsbD09PXR8fCJvYmplY3QiIT09KDAsaS5kZWZhdWx0KShlKXx8bnVsbD09PWUpcmV0dXJuIHQ7dmFyIG49QXJyYXkuaXNBcnJheSh0KT90LnNsaWNlKCk6T2JqZWN0LmFzc2lnbih7fSx0KTtmb3IodmFyIHIgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHIpKXt2YXIgcz1lW3JdLGM9bltyXTtzIGluc3RhbmNlb2YgRGF0ZT9uW3JdPW5ldyBEYXRlKHMpOnMgaW5zdGFuY2VvZiBSZWdFeHA/bltyXT1uZXcgUmVnRXhwKHMpOnMgaW5zdGFuY2VvZiBNYXA/bltyXT1uZXcgTWFwKHMpOnMgaW5zdGFuY2VvZiBTZXQ/bltyXT1uZXcgU2V0KHMpOiJvYmplY3QiPT09KDAsaS5kZWZhdWx0KShzKSYmbnVsbCE9PXM/bltyXT1hKGMscyk6bltyXT1zfXJldHVybiBufWUuZGVmYXVsdD1hfSwiMTNhNiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1NYXRoLnJvdW5kO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1yKHQpO3JldHVybiBlPDA/MDplPjI1NT8yNTU6MjU1JmV9fSwiMTNkMiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlMzMwIiksaT1uKCJkMDM5Iiksbz1uKCIxNjI2IiksYT1uKCIxYTJkIikscz1uKCI4M2FiIiksYz1uKCI1ZTc3IikuQ09ORklHVVJBQkxFLHU9bigiODkyNSIpLGw9bigiNjlmMyIpLGY9bC5lbmZvcmNlLGQ9bC5nZXQsaD1TdHJpbmcscD1PYmplY3QuZGVmaW5lUHJvcGVydHksdj1yKCIiLnNsaWNlKSxnPXIoIiIucmVwbGFjZSksbT1yKFtdLmpvaW4pLGI9cyYmIWkoKGZ1bmN0aW9uKCl7cmV0dXJuIDghPT1wKChmdW5jdGlvbigpe30pLCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSkpLHk9U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpLF89dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXsiU3ltYm9sKCI9PT12KGgoZSksMCw3KSYmKGU9IlsiK2coaChlKSwvXlN5bWJvbFwoKFteKV0qKVwpLiokLywiJDEiKSsiXSIpLG4mJm4uZ2V0dGVyJiYoZT0iZ2V0ICIrZSksbiYmbi5zZXR0ZXImJihlPSJzZXQgIitlKSwoIWEodCwibmFtZSIpfHxjJiZ0Lm5hbWUhPT1lKSYmKHM/cCh0LCJuYW1lIix7dmFsdWU6ZSxjb25maWd1cmFibGU6ITB9KTp0Lm5hbWU9ZSksYiYmbiYmYShuLCJhcml0eSIpJiZ0Lmxlbmd0aCE9PW4uYXJpdHkmJnAodCwibGVuZ3RoIix7dmFsdWU6bi5hcml0eX0pO3RyeXtuJiZhKG4sImNvbnN0cnVjdG9yIikmJm4uY29uc3RydWN0b3I/cyYmcCh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pOnQucHJvdG90eXBlJiYodC5wcm90b3R5cGU9dm9pZCAwKX1jYXRjaChpKXt9dmFyIHI9Zih0KTtyZXR1cm4gYShyLCJzb3VyY2UiKXx8KHIuc291cmNlPW0oeSwic3RyaW5nIj09dHlwZW9mIGU/ZToiIikpLHR9O0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz1fKChmdW5jdGlvbigpe3JldHVybiBvKHRoaXMpJiZkKHRoaXMpLnNvdXJjZXx8dSh0aGlzKX0pLCJ0b1N0cmluZyIpfSwiMTNkNSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJkNThmIikubGVmdCxvPW4oImE2NDAiKSxhPW4oIjEyMTIiKSxzPW4oIjlhZGMiKSxjPSFzJiZhPjc5JiZhPDgzLHU9Y3x8IW8oInJlZHVjZSIpO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDp1fSx7cmVkdWNlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIGkodGhpcyx0LGUsZT4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSwiMTQ1ZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI3YjBiIiksaT1uKCIyM2NiIiksbz1uKCIwN2ZhIiksYT1uKCIwODNhIikscz1NYXRoLm1pbjt0LmV4cG9ydHM9W10uY29weVdpdGhpbnx8ZnVuY3Rpb24odCxlKXt2YXIgbj1yKHRoaXMpLGM9byhuKSx1PWkodCxjKSxsPWkoZSxjKSxmPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwLGQ9cygodm9pZCAwPT09Zj9jOmkoZixjKSktbCxjLXUpLGg9MTtsPHUmJnU8bCtkJiYoaD0tMSxsKz1kLTEsdSs9ZC0xKTt3aGlsZShkLS0gPjApbCBpbiBuP25bdV09bltsXTphKG4sdSksdSs9aCxsKz1oO3JldHVybiBufX0sIjE0YzMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYzY1YiIpLGk9bigiODI1YSIpLG89bigiMTYyNiIpLGE9bigiYzZiNiIpLHM9bigiOTI2MyIpLGM9VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPXQuZXhlYztpZihvKG4pKXt2YXIgdT1yKG4sdCxlKTtyZXR1cm4gbnVsbCE9PXUmJmkodSksdX1pZigiUmVnRXhwIj09PWEodCkpcmV0dXJuIHIocyx0LGUpO3Rocm93IG5ldyBjKCJSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyIil9fSwiMTRkOSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCI3YjBiIiksbz1uKCIwN2ZhIiksYT1uKCIzYTM0Iikscz1uKCIzNTExIiksYz1uKCJkMDM5IiksdT1jKChmdW5jdGlvbigpe3JldHVybiA0Mjk0OTY3Mjk3IT09W10ucHVzaC5jYWxsKHtsZW5ndGg6NDI5NDk2NzI5Nn0sMSl9KSksbD1mdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sImxlbmd0aCIse3dyaXRhYmxlOiExfSkucHVzaCgpfWNhdGNoKHQpe3JldHVybiB0IGluc3RhbmNlb2YgVHlwZUVycm9yfX0sZj11fHwhbCgpO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGFyaXR5OjEsZm9yY2VkOmZ9LHtwdXNoOmZ1bmN0aW9uKHQpe3ZhciBlPWkodGhpcyksbj1vKGUpLHI9YXJndW1lbnRzLmxlbmd0aDtzKG4rcik7Zm9yKHZhciBjPTA7YzxyO2MrKyllW25dPWFyZ3VtZW50c1tjXSxuKys7cmV0dXJuIGEoZSxuKSxufX0pfSwiMTRlNSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJjNjViIiksbz1uKCI1OWVkIiksYT1uKCJmMDY5Iikscz1uKCJlNjY3IiksYz1uKCIyMjY2IiksdT1uKCI1ZWVkIik7cih7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwLGZvcmNlZDp1fSx7YWxsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1hLmYoZSkscj1uLnJlc29sdmUsdT1uLnJlamVjdCxsPXMoKGZ1bmN0aW9uKCl7dmFyIG49byhlLnJlc29sdmUpLGE9W10scz0wLGw9MTtjKHQsKGZ1bmN0aW9uKHQpe3ZhciBvPXMrKyxjPSExO2wrKyxpKG4sZSx0KS50aGVuKChmdW5jdGlvbih0KXtjfHwoYz0hMCxhW29dPXQsLS1sfHxyKGEpKX0pLHUpfSkpLC0tbHx8cihhKX0pKTtyZXR1cm4gbC5lcnJvciYmdShsLnZhbHVlKSxuLnByb21pc2V9fSl9LCIxNTdhIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKSxpPW4oIjgzYWIiKSxvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFpKXJldHVybiByW3RdO3ZhciBlPW8ocix0KTtyZXR1cm4gZSYmZS52YWx1ZX19LCIxNTliIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKSxpPW4oImZkYmMiKSxvPW4oIjc4NWEiKSxhPW4oIjE3YzIiKSxzPW4oIjkxMTIiKSxjPWZ1bmN0aW9uKHQpe2lmKHQmJnQuZm9yRWFjaCE9PWEpdHJ5e3ModCwiZm9yRWFjaCIsYSl9Y2F0Y2goZSl7dC5mb3JFYWNoPWF9fTtmb3IodmFyIHUgaW4gaSlpW3VdJiZjKHJbdV0mJnJbdV0ucHJvdG90eXBlKTtjKG8pfSwxNjI2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9Im9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuYWxsO3QuZXhwb3J0cz0idW5kZWZpbmVkIj09dHlwZW9mIHImJnZvaWQgMCE9PXI/ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR8fHQ9PT1yfTpmdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH19LDE3ODc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI4NjFkIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByKHQpfHxudWxsPT09dH19LCIxN2MyIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImI3MjciKS5mb3JFYWNoLGk9bigiYTY0MCIpLG89aSgiZm9yRWFjaCIpO3QuZXhwb3J0cz1vP1tdLmZvckVhY2g6ZnVuY3Rpb24odCl7cmV0dXJuIHIodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19LCIxODJkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImY4Y2QiKSxpPVJhbmdlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49cih0KTtpZihuJWUpdGhyb3cgbmV3IGkoIldyb25nIG9mZnNldCIpO3JldHVybiBufX0sIjE5YWEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiM2E5YiIpLGk9VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKHIoZSx0KSlyZXR1cm4gdDt0aHJvdyBuZXcgaSgiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LCIxYTJkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImUzMzAiKSxpPW4oIjdiMGIiKSxvPXIoe30uaGFzT3duUHJvcGVydHkpO3QuZXhwb3J0cz1PYmplY3QuaGFzT3dufHxmdW5jdGlvbih0LGUpe3JldHVybiBvKGkodCksZSl9fSwiMWJlNCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkMDY2Iik7dC5leHBvcnRzPXIoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LCIxYzMxIjpmdW5jdGlvbih0LGUsbil7KGZ1bmN0aW9uKHQpe3ZhciByPW4oIjcwMzciKS5kZWZhdWx0O24oImE0ZDMiKSxuKCJlMDFhIiksbigiZDI4YiIpLG4oIjk0NGEiKSxuKCJkOWUyIiksbigiZDQwMSIpLG4oIjk5YWYiKSxuKCI0ZGU0IiksbigiN2RiMCIpLG4oImM3NDAiKSxuKCJhNjMwIiksbigiY2FhZCIpLG4oImM5NzUiKSxuKCJkODFkIiksbigiMTRkOSIpLG4oIjEzZDUiKSxuKCIyNmU5IiksbigiZmI2YSIpLG4oIjRlODIiKSxuKCJhNDM0IiksbigiM2M2NSIpLG4oImMxOWYiKSxuKCJhY2U0IiksbigiMmM2NiIpLG4oIjI0OWQiKSxuKCI0MGU5IiksbigiZjRiMyIpLG4oImU5ZjUiKSxuKCI5MTBkIiksbigiZjY2NSIpLG4oIjdkNTQiKSxuKCJhYjQzIiksbigiOTQ4NSIpLG4oImE3MzIiKSxuKCJlOWM0IiksbigiMGM0NyIpLG4oIjIzZGMiKSxuKCJhOWUzIiksbigiMWQxYyIpLG4oIjdhODIiKSxuKCJlNDM5IiksbigiZGJiNCIpLG4oIjM0MTAiKSxuKCJiNjRiIiksbigiMTMxYSIpLG4oImQzYjciKSxuKCIwN2FjIiksbigiYWNkOCIpLG4oImUyNWUiKSxuKCI0YWUxIiksbigiNWQ0MSIpLG4oImY4YzkiKSxuKCI0ZDYzIiksbigiYzYwNyIpLG4oImFjMWYiKSxuKCIyYzNlIiksbigiMDBiNCIpLG4oIjI1ZjAiKSxuKCIyNTMyIiksbigiM2NhMyIpLG4oIjQ2NmQiKSxuKCI1MzE5IiksbigiNWI4MSIpLG4oIjg0MWMiKSxuKCIxMjc2IiksbigiMmNhMCIpLG4oIjQ5OGEiKSxuKCI1Y2M2IiksbigiOGE1OSIpLG4oIjkwN2EiKSxuKCI5YThjIiksbigiYTk3NSIpLG4oIjczNWUiKSxuKCJjMWFjIiksbigiZDEzOSIpLG4oIjNhN2IiKSxuKCI5ODZhIiksbigiMWQwMiIpLG4oImQ1ZDYiKSxuKCI4MmY4IiksbigiZTkxZiIpLG4oIjYwYmQiKSxuKCI1Zjk2IiksbigiMzI4MCIpLG4oIjNmY2MiKSxuKCJjYTkxIiksbigiMjVhMSIpLG4oImNkMjYiKSxuKCIzYzVkIiksbigiMjk1NCIpLG4oIjY0OWUiKSxuKCIyMTljIiksbigiYjM5YSIpLG4oIjZjZTUiKSxuKCIyODM0IiksbigiNzJmNyIpLG4oIjRlYTEiKSxuKCI2MWFlIiksbigiMGEwMCIpLG4oImI2ZjMiKSxuKCI0ODAxIiksbigiODFiMiIpLG4oIjE1OWIiKSxuKCJkZGIwIiksbigiMGViNiIpLG4oImI3ZWYiKSxuKCI4YmQ0IiksbigiYzczZCIpLG4oIjJiM2QiKSxuKCJiZjE5IiksbigiOTg2MSIpLG4oIjg4YTciKSxuKCIyNzFhIiksbigiNTQ5NCIpLGZ1bmN0aW9uKGksbyl7Im9iamVjdCI9PT1yKGUpJiYib2JqZWN0Ij09PXIodCk/dC5leHBvcnRzPW8obigiMzdkYyIpLG4oImUxNDMiKSxuKCJhN2E3IikpOm4oIjA3ZDYiKShbLCxdLG8pfSgidW5kZWZpbmVkIiE9PXR5cGVvZiBzZWxmJiZzZWxmLChmdW5jdGlvbih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPXt9O2Z1bmN0aW9uIG4ocil7aWYoZVtyXSlyZXR1cm4gZVtyXS5leHBvcnRzO3ZhciBpPWVbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiB0W3JdLmNhbGwoaS5leHBvcnRzLGksaS5leHBvcnRzLG4pLGkubD0hMCxpLmV4cG9ydHN9cmV0dXJuIG4ubT10LG4uYz1lLG4uZD1mdW5jdGlvbih0LGUscil7bi5vKHQsZSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse2VudW1lcmFibGU6ITAsZ2V0OnJ9KX0sbi5yPWZ1bmN0aW9uKHQpeyJ1bmRlZmluZWQiIT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxuLnQ9ZnVuY3Rpb24odCxlKXtpZigxJmUmJih0PW4odCkpLDgmZSlyZXR1cm4gdDtpZig0JmUmJiJvYmplY3QiPT09cih0KSYmdCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBpPU9iamVjdC5jcmVhdGUobnVsbCk7aWYobi5yKGkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSksMiZlJiYic3RyaW5nIiE9dHlwZW9mIHQpZm9yKHZhciBvIGluIHQpbi5kKGksbyxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0uYmluZChudWxsLG8pKTtyZXR1cm4gaX0sbi5uPWZ1bmN0aW9uKHQpe3ZhciBlPXQmJnQuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiB0WyJkZWZhdWx0Il19OmZ1bmN0aW9uKCl7cmV0dXJuIHR9O3JldHVybiBuLmQoZSwiYSIsZSksZX0sbi5vPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfSxuLnA9IiIsbihuLnM9IjM5M2QiKX0oeyIwMDcxIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKTt2YXIgcj1uKCIzNDBkIiksaT1uKCI3MWE0Iik7ZnVuY3Rpb24gbyh0KXt2YXIgZT17fTtmb3IodmFyIG4gaW4gdCl7dmFyIG89dFtuXTtPYmplY3QoclsiayJdKShvKSYmKGVbbl09T2JqZWN0KGlbImEiXSkobyksZGVsZXRlIHRbbl0pfXJldHVybiBlfX0sIjAxMjYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJnZXRMYXVuY2hPcHRpb25zU3luYyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKGUsImdldEVudGVyT3B0aW9uc1N5bmMiLChmdW5jdGlvbigpe3JldHVybiBvfSkpO3ZhciByPW4oIjNkMWUiKTtmdW5jdGlvbiBpKCl7cmV0dXJuIE9iamVjdChyWyJlIl0pKCl9ZnVuY3Rpb24gbygpe3JldHVybiBPYmplY3QoclsiZCJdKSgpfX0sIjAxYWEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZTMyZSIpLGk9bi5uKHIpO2kuYX0sIjAxZmQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJnZXRUaGVtZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSksbi5kKGUsImdldEJyb3dzZXJJbmZvIiwoZnVuY3Rpb24oKXtyZXR1cm4gaH0pKTt2YXIgcj1uKCIzNDBkIik7ZnVuY3Rpb24gaSgpe3ZhciB0PW5hdmlnYXRvci51c2VyQWdlbnQsZT10LmluZGV4T2YoImNvbXBhdGlibGUiKT4tMSYmdC5pbmRleE9mKCJNU0lFIik+LTEsbj10LmluZGV4T2YoIkVkZ2UiKT4tMSYmIWUscj10LmluZGV4T2YoIlRyaWRlbnQiKT4tMSYmdC5pbmRleE9mKCJydjoxMS4wIik+LTE7aWYoZSl7dmFyIGk9bmV3IFJlZ0V4cCgiTVNJRSAoXFxkK1xcLlxcZCspOyIpO2kudGVzdCh0KTt2YXIgbz1wYXJzZUZsb2F0KFJlZ0V4cC4kMSk7cmV0dXJuIG8+Nj9vOjZ9cmV0dXJuIG4/LTE6cj8xMTotMX1mdW5jdGlvbiBvKCl7aWYoITAhPT1fX3VuaUNvbmZpZy5kYXJrbW9kZSlyZXR1cm4gT2JqZWN0KHJbIm0iXSkoX191bmlDb25maWcuZGFya21vZGUpP19fdW5pQ29uZmlnLmRhcmttb2RlOiJsaWdodCI7dHJ5e3JldHVybiB3aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiKS5tYXRjaGVzPyJsaWdodCI6ImRhcmsifWNhdGNoKHQpe3JldHVybiJsaWdodCJ9fXZhciBhPW5hdmlnYXRvci51c2VyQWdlbnQscz0vYW5kcm9pZC9pLnRlc3QoYSksYz0vaXBob25lfGlwYWR8aXBvZC9pLnRlc3QoYSksdT1hLm1hdGNoKC9XaW5kb3dzIE5UIChbXGR8XGQuXGRdKikvaSksbD0vTWFjaW50b3NofE1hYy9pLnRlc3QoYSksZj0vTGludXh8WDExL2kudGVzdChhKSxkPWwmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cz4wO2Z1bmN0aW9uIGgoKXt2YXIgdCxlLG4scj1uYXZpZ2F0b3IubGFuZ3VhZ2UsaD0icGhvbmUiO2lmKGMpe3Q9ImlPUyI7dmFyIHA9YS5tYXRjaCgvT1NccyhbXHdfXSspXHNsaWtlLyk7cCYmKGU9cFsxXS5yZXBsYWNlKC9fL2csIi4iKSk7dmFyIHY9YS5tYXRjaCgvXCgoW2EtekEtWl0rKTsvKTt2JiYobj12WzFdKX1lbHNlIGlmKHMpe3Q9IkFuZHJvaWQiO3ZhciBnPWEubWF0Y2goL0FuZHJvaWRbXHMvXShbXHdcLl0rKVs7XHNdLyk7ZyYmKGU9Z1sxXSk7Zm9yKHZhciBtPWEubWF0Y2goL1woKC4rPylcKS8pLGI9bT9tWzFdLnNwbGl0KCI7Iik6YS5zcGxpdCgiICIpLHk9Wy9cYkFuZHJvaWRcYi9pLC9cYkxpbnV4XGIvaSwvXGJVXGIvaSwvXlxzP1thLXpdW2Etel0kL2ksL15ccz9bYS16XVthLXpdLVthLXpdW2Etel0kL2ksL1xid3ZcYi9pLC9cL1tcZFwuLF0rJC8sL15ccz9bXGRcLixdKyQvLC9cYkJyb3dzZXJcYi9pLC9cYk1vYmlsZVxiL2ldLF89MDtfPGIubGVuZ3RoO18rKyl7dmFyIHc9YltfXTtpZih3LmluZGV4T2YoIkJ1aWxkIik+MCl7bj13LnNwbGl0KCJCdWlsZCIpWzBdLnRyaW0oKTticmVha31mb3IodmFyIFM9dm9pZCAwLHg9MDt4PHkubGVuZ3RoO3grKylpZih5W3hdLnRlc3Qodykpe1M9ITA7YnJlYWt9aWYoIVMpe249dy50cmltKCk7YnJlYWt9fX1lbHNlIGlmKGQpe2lmKG49ImlQYWQiLHQ9ImlPUyIsZT0iZnVuY3Rpb24iPT09dHlwZW9mIHdpbmRvdy5CaWdJbnQ/IjE0LjAiOiIxMy4wIiwxND09PXBhcnNlSW50KGUpKXt2YXIgaz1hLm1hdGNoKC9WZXJzaW9uXC8oXFMqKVxiLyk7ayYmKGU9a1sxXSl9aD0icGFkIn1lbHNlIGlmKHV8fGx8fGYpe249IlBDIix0PSJQQyIsaD0icGMiO3ZhciBDPWEubWF0Y2goL1woKC4rPylcKS8pWzFdO2lmKHUpe3N3aXRjaCh0PSJXaW5kb3dzIixlPSIiLHVbMV0pe2Nhc2UiNS4xIjplPSJYUCI7YnJlYWs7Y2FzZSI2LjAiOmU9IlZpc3RhIjticmVhaztjYXNlIjYuMSI6ZT0iNyI7YnJlYWs7Y2FzZSI2LjIiOmU9IjgiO2JyZWFrO2Nhc2UiNi4zIjplPSI4LjEiO2JyZWFrO2Nhc2UiMTAuMCI6ZT0iMTAiO2JyZWFrfXZhciBUPUMubWF0Y2goL1tXaW58V09XXShbXGRdKykvKTtUJiYoZSs9IiB4Ii5jb25jYXQoVFsxXSkpfWVsc2UgbD8odD0ibWFjT1MiLGU9Qy5tYXRjaCgvTWFjIE9TIFggKC4rKS8pfHwiIixlJiYoZT1lWzFdLnJlcGxhY2UoL18vZywiLiIpLC0xIT09ZS5pbmRleE9mKCI7IikmJihlPWUuc3BsaXQoIjsiKVswXSkpKTpmJiYodD0iTGludXgiLGU9Qy5tYXRjaCgvTGludXggKC4qKS8pfHwiIixlJiYoZT1lWzFdLC0xIT09ZS5pbmRleE9mKCI7IikmJihlPWUuc3BsaXQoIjsiKVswXSkpKX1lbHNlIHQ9Ik90aGVyIixlPSIwIixoPSJ1bmtub3duIjt2YXIgTz0iIi5jb25jYXQodCwiICIpLmNvbmNhdChlKSxBPXQudG9Mb2NhbGVMb3dlckNhc2UoKSxFPSIiLGo9U3RyaW5nKGkoKSk7aWYoIi0xIiE9PWopRT0iSUUiO2Vsc2UgZm9yKHZhciBNPVsiVmVyc2lvbiIsIkZpcmVmb3giLCJDaHJvbWUiLCJFZGdlezAsMX0iXSxJPVsiU2FmYXJpIiwiRmlyZWZveCIsIkNocm9tZSIsIkVkZ2UiXSxQPTA7UDxNLmxlbmd0aDtQKyspe3ZhciAkPU1bUF0sTD1uZXcgUmVnRXhwKCIoIi5jb25jYXQoJCwiKS8oXFxTKilcXGIiKSk7TC50ZXN0KGEpJiYoRT1JW1BdLGo9YS5tYXRjaChMKVsyXSl9dmFyIFI9InBvcnRyYWl0IixOPSJ1bmRlZmluZWQiPT09dHlwZW9mIHdpbmRvdy5zY3JlZW4ub3JpZW50YXRpb24/d2luZG93Lm9yaWVudGF0aW9uOndpbmRvdy5zY3JlZW4ub3JpZW50YXRpb24uYW5nbGU7cmV0dXJuIFI9OTA9PT1NYXRoLmFicyhOKT8ibGFuZHNjYXBlIjoicG9ydHJhaXQiLHtkZXZpY2VCcmFuZDp2b2lkIDAsYnJhbmQ6dm9pZCAwLGRldmljZU1vZGVsOm4sZGV2aWNlT3JpZW50YXRpb246Uixtb2RlbDpuLHN5c3RlbTpPLHBsYXRmb3JtOkEsYnJvd3Nlck5hbWU6RS50b0xvY2FsZUxvd2VyQ2FzZSgpLGJyb3dzZXJWZXJzaW9uOmosbGFuZ3VhZ2U6cixkZXZpY2VUeXBlOmgsdWE6YSxvc25hbWU6dCxvc3ZlcnNpb246ZSx0aGVtZTpvKCl9fX0sIjAyZmEiOmZ1bmN0aW9uKHQsZSl7fSwiMDM3MiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHd9KSksbi5kKGUsImciLChmdW5jdGlvbigpe3JldHVybiBTfSkpLG4uZChlLCJjIiwoZnVuY3Rpb24oKXtyZXR1cm4geH0pKSxuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGt9KSksbi5kKGUsImQiLChmdW5jdGlvbigpe3JldHVybiBDfSkpLG4uZChlLCJlIiwoZnVuY3Rpb24oKXtyZXR1cm4gUH0pKSxuLmQoZSwiZiIsKGZ1bmN0aW9uKCl7cmV0dXJuICR9KSk7dmFyIHI9bigiOGM3YyIpLGk9bigiMzQwZCIpLG89bigiYzgwYyIpLGE9bigiMGE4MCIpLHM9bigiYzE0YiIpLGM9bigiMGRiZCIpLHU9bigiMWRhOSIpLGw9bigiNGVmNSIpO2Z1bmN0aW9uIGYodCxlLG4pe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bix0fXZhciBkLGgscD0iemgtSGFucyIsdj0iemgtSGFudCIsZz0iZW4iLG09ImZyIixiPSJlcyIseT17fTtmdW5jdGlvbiBfKCl7aWYoSSgpKXt2YXIgdD1PYmplY3Qua2V5cyhfX3VuaUNvbmZpZy5sb2NhbGVzKTt0Lmxlbmd0aCYmdC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT15W3RdLG49X191bmlDb25maWcubG9jYWxlc1t0XTtlP09iamVjdC5hc3NpZ24oZSxuKTp5W3RdPW59KSl9fU9iamVjdC5hc3NpZ24oeSwoZD17fSxmKGQsZyxhKSxmKGQsYixzKSxmKGQsbSxjKSxmKGQscCx1KSxmKGQsdixsKSxkKSksaD1uYXZpZ2F0b3IuY29va2llRW5hYmxlZCYmd2luZG93LmxvY2FsU3RvcmFnZSYmbG9jYWxTdG9yYWdlW29bImUiXV18fF9fdW5pQ29uZmlnLmxvY2FsZXx8bmF2aWdhdG9yLmxhbmd1YWdlLF8oKTt2YXIgdz1PYmplY3QoclsiaW5pdFZ1ZUkxOG4iXSkoaCx5KSxTPXcudCx4PXcubWl4aW49e2JlZm9yZUNyZWF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT13LmkxOG4ud2F0Y2hMb2NhbGUoKGZ1bmN0aW9uKCl7dC4kZm9yY2VVcGRhdGUoKX0pKTt0aGlzLiRvbmNlKCJob29rOmJlZm9yZURlc3Ryb3kiLChmdW5jdGlvbigpe2UoKX0pKX0sbWV0aG9kczp7JCR0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFModCxlKX19fSxrPSh3LnNldExvY2FsZSx3LmdldExvY2FsZSk7ZnVuY3Rpb24gQyh0LGUsbil7dmFyIHI9dC5vYnNlcnZhYmxlKHtsb2NhbGU6bnx8dy5nZXRMb2NhbGUoKX0pLGk9W107ZS4kd2F0Y2hMb2NhbGU9ZnVuY3Rpb24odCl7aS5wdXNoKHQpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiJGxvY2FsZSIse2dldDpmdW5jdGlvbigpe3JldHVybiByLmxvY2FsZX0sc2V0OmZ1bmN0aW9uKHQpe3IubG9jYWxlPXQsaS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0pKX19KX12YXIgVD1bIiUiLCIlIl07ZnVuY3Rpb24gTygpe3ZhciB0PXVuaS5nZXRMb2NhbGUoKSxlPV9fdW5pQ29uZmlnLmxvY2FsZXM7cmV0dXJuIGVbdF18fGVbX191bmlDb25maWcuZmFsbGJhY2tMb2NhbGVdfHxlW2ddfHx7fX1mdW5jdGlvbiBBKHQpe3JldHVybiBPYmplY3QoclsiaXNJMThuU3RyIl0pKHQsVCk/dy5mKHQsTygpLFQpOnR9ZnVuY3Rpb24gRSh0LGUpe2lmKDEhPT1lLmxlbmd0aCl7dmFyIG49ZS5zaGlmdCgpO3JldHVybiBFKHQmJnRbbl0sZSl9aWYodCl7dmFyIG89ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChpWyJtIl0pKHQpJiZPYmplY3QoclsiaXNJMThuU3RyIl0pKHQsVCl9LGE9ZVswXSxzPVtdO2lmKEFycmF5LmlzQXJyYXkodCkmJihzPXQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbyh0W2FdKX0pKSkubGVuZ3RoKXJldHVybiBzO3ZhciBjPXRbYV07aWYobyhjKSlyZXR1cm4gdH19ZnVuY3Rpb24gaih0LGUpe3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIE0odCxlKX0pKX1mdW5jdGlvbiBNKHQsZSl7dmFyIG49RSh0LGUpO2lmKCFuKXJldHVybiExO3ZhciByPWVbZS5sZW5ndGgtMV07aWYoQXJyYXkuaXNBcnJheShuKSluLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBNKHQsW3JdKX0pKTtlbHNle3ZhciBpPW5bcl07T2JqZWN0LmRlZmluZVByb3BlcnR5KG4scix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEEoaSl9LHNldDpmdW5jdGlvbih0KXtpPXR9fSl9cmV0dXJuITB9ZnVuY3Rpb24gSSgpe3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIF9fdW5pQ29uZmlnJiZfX3VuaUNvbmZpZy5sb2NhbGVzJiYhIU9iamVjdC5rZXlzKF9fdW5pQ29uZmlnLmxvY2FsZXMpLmxlbmd0aH1mdW5jdGlvbiBQKHQpe2lmKEkoKSlyZXR1cm4gaih0LFtbInRpdGxlVGV4dCJdLFsic2VhcmNoSW5wdXQiLCJwbGFjZWhvbGRlciJdLFsiYnV0dG9ucyIsInRleHQiXV0pfWZ1bmN0aW9uICQodCl7cmV0dXJuIEkoKSYmdC5saXN0JiZ0Lmxpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7TSh0LFsidGV4dCJdKX0pKSx0fX0sIjAzZDAiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJzYXZlSW1hZ2VUb1Bob3Rvc0FsYnVtIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKTt2YXIgcj1uKCI0NzM4IiksaT17ZmlsZVBhdGg6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe2UuZmlsZVBhdGg9T2JqZWN0KHJbImEiXSkodCl9fX19LCIwNDI2IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXtuLmQoZSwib25UaGVtZUNoYW5nZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSksbi5kKGUsIm9mZlRoZW1lQ2hhbmdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKSxuLmQoZSwib25VSVN0eWxlQ2hhbmdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKTt2YXIgcj1uKCI5MTMxIiksaT1uKCI3NDVhIiksbz1uKCJjODBjIiksYT1bXSxzPVtdO2Z1bmN0aW9uIGModCl7YS5wdXNoKHQpfWZ1bmN0aW9uIHUodCl7aWYodCl7dmFyIGU9YS5pbmRleE9mKHQpO2U+PTAmJmEuc3BsaWNlKGUsMSl9fWZ1bmN0aW9uIGwoZSl7cy5wdXNoKGUpLHQud2FybignVGhlICJ1bmkub25VSVN0eWxlQ2hhbmdlIiBBUEkgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSAidW5pLm9uVGhlbWVDaGFuZ2UiLiBMZWFybiBtb3JlOiBodHRwczovL3VuaWFwcC5kY2xvdWQubmV0LmNuL2FwaS9zeXN0ZW0vdGhlbWUuJyl9T2JqZWN0KGlbImQiXSkob1siYiJdLChmdW5jdGlvbih0KXthLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdChyWyJhIl0pKGUsdCl9KSl9KSksT2JqZWN0KGlbImQiXSkoIm9uVUlTdHlsZUNoYW5nZSIsKGZ1bmN0aW9uKHQpe3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JqZWN0KHJbImEiXSkoZSx0KX0pKX0pKX0uY2FsbCh0aGlzLG4oIjQxOGIiKVsiZGVmYXVsdCJdKX0sIjA0ZDQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMzQwZCIpLGk9bigiYjQzNSIpO2VbImEiXT17cHJvcHM6e2Rhc2hBcnJheTp7dHlwZTpBcnJheSxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuWzAsMF19fSxwb2ludHM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITB9LHN0cm9rZVdpZHRoOnt0eXBlOk51bWJlcixkZWZhdWx0OjF9LHN0cm9rZUNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIjMDAwMDAwIn0sZmlsbENvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIjMDAwMDAwMDAifSx6SW5kZXg6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy4kcGFyZW50O2UubWFwUmVhZHkoKGZ1bmN0aW9uKCl7dC5kcmF3UG9seWdvbigpLE9iamVjdC5rZXlzKHQuJHByb3BzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0LiR3YXRjaChlLChmdW5jdGlvbigpe3QuZHJhd1BvbHlnb24oKX0pLHtkZWVwOiEwfSl9KSl9KSl9LG1ldGhvZHM6e2RyYXdQb2x5Z29uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wb2ludHMsZT10aGlzLnN0cm9rZVdpZHRoLG49dGhpcy5zdHJva2VDb2xvcixvPXRoaXMuZGFzaEFycmF5LGE9dGhpcy5maWxsQ29sb3Iscz10aGlzLnpJbmRleCxjPXRoaXMuJHBhcmVudCx1PWMuX21hcHMsbD1jLl9tYXAsZj10Lm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9dC5sYXRpdHVkZSxuPXQubG9uZ2l0dWRlO3JldHVybiBpWyJjIl0/W24sZV06bmV3IHUuTGF0TG5nKGUsbil9KSksZD1PYmplY3QoclsiaiJdKShhKSxoPWQucixwPWQuZyx2PWQuYixnPWQuYSxtPU9iamVjdChyWyJqIl0pKG4pLGI9bS5yLHk9bS5nLF89bS5iLHc9bS5hLFM9e2NsaWNrYWJsZTohMCxjdXJzb3I6ImNyb3NzaGFpciIsZWRpdGFibGU6ITEsbWFwOmwsZmlsbENvbG9yOiIiLHBhdGg6ZixzdHJva2VDb2xvcjoiIixzdHJva2VEYXNoU3R5bGU6by5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdD4wfSkpPyJkYXNoIjoic29saWQiLHN0cm9rZVdlaWdodDplLHZpc2libGU6ITAsekluZGV4OnN9O3UuQ29sb3I/KFMuZmlsbENvbG9yPW5ldyB1LkNvbG9yKGgscCx2LGcpLFMuc3Ryb2tlQ29sb3I9bmV3IHUuQ29sb3IoYix5LF8sdykpOihTLmZpbGxDb2xvcj0icmdiKCIuY29uY2F0KGgsIiwgIikuY29uY2F0KHAsIiwgIikuY29uY2F0KHYsIikiKSxTLmZpbGxPcGFjaXR5PWcsUy5zdHJva2VDb2xvcj0icmdiKCIuY29uY2F0KGIsIiwgIikuY29uY2F0KHksIiwgIikuY29uY2F0KF8sIikiKSxTLnN0cm9rZU9wYWNpdHk9dyksdGhpcy5wb2x5Z29uSW5zP3RoaXMucG9seWdvbklucy5zZXRPcHRpb25zKFMpOnRoaXMucG9seWdvbklucz1uZXcgdS5Qb2x5Z29uKFMpfX0sYmVmb3JlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMucG9seWdvbklucy5zZXRNYXAobnVsbCksdGhpcy5wb2x5Z29uSW5zPW51bGx9LHJlbmRlcjpmdW5jdGlvbigpe3JldHVybiBudWxsfX19LCIwNGVkIjpmdW5jdGlvbih0LGUsbil7fSwiMDUwZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpLGk9bigiMWZlOSIpO2kua2V5cygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5hc3NpZ24ocixpKHQpKX0pKTt2YXIgbz1yLGE9bigiYjE1ZSIpO2VbImEiXT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksbyxhWyJhIl0pfSwiMDY3MSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyNGYyIiksaT1uLm4ocik7aS5hfSwiMDY4MCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCxlLHIpe3ZhciBpPW4oIjk1MWMiKSxvPW4ubihpKSxhPW4oImVlZmYiKTtmdW5jdGlvbiBzKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fWZ1bmN0aW9uIHUodCxlLG4pe3JldHVybiBlJiZjKHQucHJvdG90eXBlLGUpLG4mJmModCxuKSx0fXZhciBsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaSgpe3ModGhpcyxpKSx0aGlzLl9pbml0KCl9cmV0dXJuIHUoaSxbe2tleToiX2luaXQiLHZhbHVlOmZ1bmN0aW9uKCl7ZS5VbmlWaWV3SlNCcmlkZ2U9e3N1YnNjcmliZTp0LnN1YnNjcmliZSxwdWJsaXNoSGFuZGxlcjp0LnB1Ymxpc2hIYW5kbGVyLHN1YnNjcmliZUhhbmRsZXI6dC5zdWJzY3JpYmVIYW5kbGVyfSxlLlVuaVNlcnZpY2VKU0JyaWRnZT17c3Vic2NyaWJlOnIuc3Vic2NyaWJlLHB1Ymxpc2hIYW5kbGVyOnIucHVibGlzaEhhbmRsZXIsc3Vic2NyaWJlSGFuZGxlcjpyLnN1YnNjcmliZUhhbmRsZXJ9O3ZhciBpPW4oImI3ZGUiKSxzPWkuZGVmYXVsdCxjPWkuZ2V0QXBwLHU9aS5nZXRDdXJyZW50UGFnZXMsbD1bImNob29zZUltYWdlIl07bC5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkocyx0LHt3cml0YWJsZTohMSxjb25maWd1cmFibGU6ITF9KX0pKSxlLnVuaT1zLGUud3g9ZS51bmksZS5nZXRBcHA9YyxlLmdldEN1cnJlbnRQYWdlcz11LG8uYS51c2UobigiNTBlYyIpLmRlZmF1bHQse3JvdXRlczpfX3VuaVJvdXRlc30pLG8uYS51c2UobigiOTYwMiIpLmRlZmF1bHQse3JvdXRlczpfX3VuaVJvdXRlc30pLE9iamVjdChhWyJhIl0pKG8uYSksbigiNDVhMiIpLG4oIjUwZDMiKX19XSksaX0oKTtlLlVuaUFwcD1sLGUuX191bmlDb25maWcmJm5ldyBsfSkuY2FsbCh0aGlzLG4oIjMxZDIiKSxuKCIwZWU0IiksbigiMmM5ZiIpKX0sIjA3OTUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBpfSkpO3ZhciByPVsiVlVuaUxlZnRXaW5kb3ciLCJWVW5pVG9wV2luZG93IiwiVlVuaVJpZ2h0V2luZG93Il07ZnVuY3Rpb24gaSh0KXt3aGlsZSh0KXtpZigtMSE9PXIuaW5kZXhPZih0LiRvcHRpb25zLm5hbWUpKXJldHVybiEwO3Q9dC4kcGFyZW50fX19LCIwN2I1IjpmdW5jdGlvbih0LGUsbil7fSwiMDg1NCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7dmFyIHI9bigiMzQwZCIpO2VbImEiXT17bW91bnRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoInRyYW5zcGFyZW50Ij09PXRoaXMudHlwZSl7Zm9yKHZhciBuPXRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3IoIi51bmktcGFnZS1oZWFkLXRyYW5zcGFyZW50Iikuc3R5bGUscj10aGlzLiRlbC5xdWVyeVNlbGVjdG9yKCIudW5pLXBhZ2UtaGVhZF9fdGl0bGUiKSxpPXRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi51bmktYnRuLWljb24iKSxvPVtdLGE9dGhpcy50ZXh0Q29sb3Iscz0wO3M8aS5sZW5ndGg7cysrKW8ucHVzaChpW3NdLnN0eWxlKTtmb3IodmFyIGM9dGhpcy4kZWwucXVlcnlTZWxlY3RvckFsbCgiLnVuaS1wYWdlLWhlYWQtYnRuIiksdT1bXSxsPVtdLGY9MDtmPGMubGVuZ3RoO2YrKyl7dmFyIGQ9Y1tmXTt1LnB1c2goZ2V0Q29tcHV0ZWRTdHlsZShkKS5iYWNrZ3JvdW5kQ29sb3IpLGwucHVzaChkLnN0eWxlKX10aGlzLl9BPTAsdC5vbigib25QYWdlU2Nyb2xsIiwoZnVuY3Rpb24odCl7dmFyIGk9dC5zY3JvbGxUb3Ascz1NYXRoLm1pbihpL2Uub2Zmc2V0LDEpOzE9PT1zJiYxPT09ZS5fQXx8KHM+LjUmJmUuX0E8PS41P28uZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jb2xvcj1hfSkpOnM8PS41JiZlLl9BPi41JiZvLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuY29sb3I9IiNmZmYifSkpLGUuX0E9cyxyJiYoci5zdHlsZS5vcGFjaXR5PXMpLG4uYmFja2dyb3VuZENvbG9yPSJyZ2JhKCIuY29uY2F0KGUuX1IsIiwiKS5jb25jYXQoZS5fRywiLCIpLmNvbmNhdChlLl9CLCIsIikuY29uY2F0KHMsIikiKSxsLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIG49dVtlXSxyPW4ubWF0Y2goL1tcZCtcLl0rL2cpO3JbM109KDEtcykqKDQ9PT1yLmxlbmd0aD9yWzNdOjEpLHQuYmFja2dyb3VuZENvbG9yPSJyZ2JhKCIuY29uY2F0KHIsIikiKX0pKSl9KSl9ZWxzZSBpZigiZmxvYXQiPT09dGhpcy50eXBlKXtmb3IodmFyIGg9dGhpcy4kZWwucXVlcnlTZWxlY3RvckFsbCgiLnVuaS1idG4taWNvbiIpLHA9W10sdj0wO3Y8aC5sZW5ndGg7disrKXAucHVzaChoW3ZdLnN0eWxlKTtmb3IodmFyIGc9dGhpcy4kZWwucXVlcnlTZWxlY3RvckFsbCgiLnVuaS1wYWdlLWhlYWQtYnRuIiksbT1bXSxiPVtdLHk9MDt5PGcubGVuZ3RoO3krKyl7dmFyIF89Z1t5XTttLnB1c2goZ2V0Q29tcHV0ZWRTdHlsZShfKS5iYWNrZ3JvdW5kQ29sb3IpLGIucHVzaChfLnN0eWxlKX19fSxjb21wdXRlZDp7Y29sb3I6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNwYXJlbnQiPT09dGhpcy50eXBlPyIjZmZmIjp0aGlzLnRleHRDb2xvcn0sb2Zmc2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHBhcnNlSW50KHRoaXMuY292ZXJhZ2UpfSxiZ0NvbG9yOmZ1bmN0aW9uKCl7aWYoInRyYW5zcGFyZW50Ij09PXRoaXMudHlwZSl7dmFyIHQ9T2JqZWN0KHJbImoiXSkodGhpcy5iYWNrZ3JvdW5kQ29sb3IpLGU9dC5yLG49dC5nLGk9dC5iO3JldHVybiB0aGlzLl9SPWUsdGhpcy5fRz1uLHRoaXMuX0I9aSwicmdiYSgiLmNvbmNhdChlLCIsIikuY29uY2F0KG4sIiwiKS5jb25jYXQoaSwiLDApIil9cmV0dXJuIHRoaXMuYmFja2dyb3VuZENvbG9yfX19fSkuY2FsbCh0aGlzLG4oIjMxZDIiKSl9LCIwOWYwIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwib3BlbkRvY3VtZW50IiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKTt2YXIgcj17ZmlsZVBhdGg6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxmaWxlVHlwZTp7dHlwZTpTdHJpbmd9fX0sIjBhMTgiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYzlkNSIpLGk9bi5uKHIpO2kuYX0sIjBhODAiOmZ1bmN0aW9uKHQpe3QuZXhwb3J0cz1KU09OLnBhcnNlKCd7InVuaS5hcHAucXVpdCI6IlByZXNzIGJhY2sgYnV0dG9uIGFnYWluIHRvIGV4aXQiLCJ1bmkuYXN5bmMuZXJyb3IiOiJUaGUgY29ubmVjdGlvbiB0aW1lZCBvdXQsIGNsaWNrIHRoZSBzY3JlZW4gdG8gdHJ5IGFnYWluLiIsInVuaS5zaG93QWN0aW9uU2hlZXQuY2FuY2VsIjoiQ2FuY2VsIiwidW5pLnNob3dUb2FzdC51bnBhaXJlZCI6IlBsZWFzZSBub3RlIHNob3dUb2FzdCBtdXN0IGJlIHBhaXJlZCB3aXRoIGhpZGVUb2FzdCIsInVuaS5zaG93TG9hZGluZy51bnBhaXJlZCI6IlBsZWFzZSBub3RlIHNob3dMb2FkaW5nIG11c3QgYmUgcGFpcmVkIHdpdGggaGlkZUxvYWRpbmciLCJ1bmkuc2hvd01vZGFsLmNhbmNlbCI6IkNhbmNlbCIsInVuaS5zaG93TW9kYWwuY29uZmlybSI6Ik9LIiwidW5pLmNob29zZUltYWdlLmNhbmNlbCI6IkNhbmNlbCIsInVuaS5jaG9vc2VJbWFnZS5zb3VyY2VUeXBlLmFsYnVtIjoiQWxidW0iLCJ1bmkuY2hvb3NlSW1hZ2Uuc291cmNlVHlwZS5jYW1lcmEiOiJDYW1lcmEiLCJ1bmkuY2hvb3NlVmlkZW8uY2FuY2VsIjoiQ2FuY2VsIiwidW5pLmNob29zZVZpZGVvLnNvdXJjZVR5cGUuYWxidW0iOiJBbGJ1bSIsInVuaS5jaG9vc2VWaWRlby5zb3VyY2VUeXBlLmNhbWVyYSI6IkNhbWVyYSIsInVuaS5jaG9vc2VGaWxlLm5vdFVzZXJBY3RpdmF0aW9uIjoiRmlsZSBjaG9vc2VyIGRpYWxvZyBjYW4gb25seSBiZSBzaG93biB3aXRoIGEgdXNlciBhY3RpdmF0aW9uIiwidW5pLnByZXZpZXdJbWFnZS5jYW5jZWwiOiJDYW5jZWwiLCJ1bmkucHJldmlld0ltYWdlLmJ1dHRvbi5zYXZlIjoiU2F2ZSBJbWFnZSIsInVuaS5wcmV2aWV3SW1hZ2Uuc2F2ZS5zdWNjZXNzIjoiU2F2ZWQgc3VjY2Vzc2Z1bGx5IiwidW5pLnByZXZpZXdJbWFnZS5zYXZlLmZhaWwiOiJTYXZlIGZhaWxlZCIsInVuaS5zZXRDbGlwYm9hcmREYXRhLnN1Y2Nlc3MiOiJDb250ZW50IGNvcGllZCIsInVuaS5zY2FuQ29kZS50aXRsZSI6IlNjYW4gY29kZSIsInVuaS5zY2FuQ29kZS5hbGJ1bSI6IkFsYnVtIiwidW5pLnNjYW5Db2RlLmZhaWwiOiJSZWNvZ25pdGlvbiBmYWlsdXJlIiwidW5pLnNjYW5Db2RlLmZsYXNoLm9uIjoiVGFwIHRvIHR1cm4gbGlnaHQgb24iLCJ1bmkuc2NhbkNvZGUuZmxhc2gub2ZmIjoiVGFwIHRvIHR1cm4gbGlnaHQgb2ZmIiwidW5pLnN0YXJ0U290ZXJBdXRoZW50aWNhdGlvbi5hdXRoQ29udGVudCI6IkZpbmdlcnByaW50IHJlY29nbml0aW9uIiwidW5pLnN0YXJ0U290ZXJBdXRoZW50aWNhdGlvbi53YWl0aW5nQ29udGVudCI6IlVucmVjb2duaXphYmxlIiwidW5pLnBpY2tlci5kb25lIjoiRG9uZSIsInVuaS5waWNrZXIuY2FuY2VsIjoiQ2FuY2VsIiwidW5pLnZpZGVvLmRhbm11IjoiRGFubXUiLCJ1bmkudmlkZW8udm9sdW1lIjoiVm9sdW1lIiwidW5pLmJ1dHRvbi5mZWVkYmFjay50aXRsZSI6ImZlZWRiYWNrIiwidW5pLmJ1dHRvbi5mZWVkYmFjay5zZW5kIjoic2VuZCIsInVuaS5jaG9vc2VMb2NhdGlvbi5zZWFyY2giOiJGaW5kIFBsYWNlIiwidW5pLmNob29zZUxvY2F0aW9uLmNhbmNlbCI6IkNhbmNlbCJ9Jyl9LCIwYWJiIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbigidW5pLWljb24iLHQuX2coe30sdC4kbGlzdGVuZXJzKSxbbigiaSIse2NsYXNzOiJ1bmktaWNvbi0iK3QudHlwZSxzdHlsZTp7ImZvbnQtc2l6ZSI6dC5fY29udmVyUHgodC5zaXplKSxjb2xvcjp0LmNvbG9yfSxhdHRyczp7cm9sZToiaW1nIn19KV0pfSxpPVtdLG89e25hbWU6Ikljb24iLHByb3BzOnt0eXBlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMCxkZWZhdWx0OiIifSxzaXplOnt0eXBlOltTdHJpbmcsTnVtYmVyXSxkZWZhdWx0OjIzfSxjb2xvcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn19LG1ldGhvZHM6e19jb252ZXJQeDpmdW5jdGlvbih0KXtyZXR1cm4vXi0/XGQrW3VyXXB4JC9pLnRlc3QodCk/dC5yZXBsYWNlKC8oXi0/XGQrKVt1cl1weCQvaSwoZnVuY3Rpb24odCxlKXtyZXR1cm4iIi5jb25jYXQodW5pLnVweDJweChwYXJzZUZsb2F0KGUpKSwicHgiKX0pKTovXi0/W1xkXC5dKyQvLnRlc3QodCk/IiIuY29uY2F0KHQsInB4Iik6dHx8IiJ9fX0sYT1vLHM9KG4oIjViMzgiKSxuKCI4ODQ0IikpLGM9T2JqZWN0KHNbImEiXSkoYSxyLGksITEsbnVsbCxudWxsLG51bGwpO2VbImRlZmF1bHQiXT1jLmV4cG9ydHN9LCIwYjYyIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKTt2YXIgcj17fTtmdW5jdGlvbiBpKHQsZSxuKXt2YXIgaT0ic3RyaW5nIj09PXR5cGVvZiB0P3dpbmRvd1t0XTp0O2lmKGkpbigpO2Vsc2V7dmFyIG89cltlXTtpZighbyl7bz1yW2VdPVtdO3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2Euc3JjPWUsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKSxhLm9ubG9hZD1mdW5jdGlvbigpe28uZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pKSxkZWxldGUgcltlXX19by5wdXNoKG4pfX19LCIwYzQwIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgcixpPW4oIjM0MGQiKSxvPW4oIjBkYjgiKSxhPW4oIjBlNGEiKSxzPW4oIjg4YTgiKTt0LnN1YnNjcmliZSgiZ2V0U2VsZWN0ZWRUZXh0UmFuZ2UiLChmdW5jdGlvbihlKXt2YXIgbj1lLnBhZ2VJZCxyPWUuY2FsbGJhY2tJZCxpPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsbz1pLnRhZ05hbWUudG9Mb3dlckNhc2UoKSxhPVsiaW5wdXQiLCJ0ZXh0YXJlYSJdLHM9e307YS5pbmNsdWRlcyhvKT8ocy5lcnJNc2c9ImdldFNlbGVjdGVkVGV4dFJhbmdlOm9rIixzLnN0YXJ0PWkuc2VsZWN0aW9uU3RhcnQscy5lbmQ9aS5zZWxlY3Rpb25FbmQpOnMuZXJyTXNnPSJnZXRTZWxlY3RlZFRleHRSYW5nZTpmYWlsIG5vIGZvY3VzZWQiLHQucHVibGlzaEhhbmRsZXIoIm9uR2V0U2VsZWN0ZWRUZXh0UmFuZ2UiLHtjYWxsYmFja0lkOnIsZGF0YTpzfSxuKX0pKSxlWyJhIl09e25hbWU6IkZpZWxkIixtaXhpbnM6W29bImEiXSxhWyJhIl0sc1siYSJdXSxtb2RlbDp7cHJvcDoidmFsdWUiLGV2ZW50OiJ1cGRhdGU6dmFsdWUifSxwcm9wczp7dmFsdWU6e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6IiJ9LGF1dG9Gb2N1czp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LGZvY3VzOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sY3Vyc29yOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0Oi0xfSxzZWxlY3Rpb25TdGFydDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDotMX0sc2VsZWN0aW9uRW5kOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0Oi0xfSxjb25maXJtSG9sZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGlnbm9yZUNvbXBvc2l0aW9uRXZlbnQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntjb21wb3Npbmc6ITEsdmFsdWVTeW5jOnRoaXMuX2dldFZhbHVlU3RyaW5nKHRoaXMudmFsdWUsdGhpcy50eXBlKSxmb2N1c1N5bmM6dGhpcy5mb2N1cyxmaXhDb2xvcjowPT09U3RyaW5nKG5hdmlnYXRvci52ZW5kb3IpLmluZGV4T2YoIkFwcGxlIikmJkNTUy5zdXBwb3J0cygiaW1hZ2Utb3JpZW50YXRpb246ZnJvbS1pbWFnZSIpfX0sd2F0Y2g6e2ZvY3VzOmZ1bmN0aW9uKHQpe3Q/dGhpcy5fZm9jdXMoKTp0aGlzLl9ibHVyKCl9LGZvY3VzU3luYzpmdW5jdGlvbih0KXt0aGlzLiRlbWl0KCJ1cGRhdGU6Zm9jdXMiLHQpfSxjdXJzb3JOdW1iZXI6ZnVuY3Rpb24oKXt0aGlzLl9jaGVja0N1cnNvcigpfSxzZWxlY3Rpb25TdGFydE51bWJlcjpmdW5jdGlvbigpe3RoaXMuX2NoZWNrU2VsZWN0aW9uKCl9LHNlbGVjdGlvbkVuZE51bWJlcjpmdW5jdGlvbigpe3RoaXMuX2NoZWNrU2VsZWN0aW9uKCl9fSxjb21wdXRlZDp7bmVlZEZvY3VzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXV0b0ZvY3VzfHx0aGlzLmZvY3VzfSxjdXJzb3JOdW1iZXI6ZnVuY3Rpb24oKXt2YXIgdD1OdW1iZXIodGhpcy5jdXJzb3IpO3JldHVybiBpc05hTih0KT8tMTp0fSxzZWxlY3Rpb25TdGFydE51bWJlcjpmdW5jdGlvbigpe3ZhciB0PU51bWJlcih0aGlzLnNlbGVjdGlvblN0YXJ0KTtyZXR1cm4gaXNOYU4odCk/LTE6dH0sc2VsZWN0aW9uRW5kTnVtYmVyOmZ1bmN0aW9uKCl7dmFyIHQ9TnVtYmVyKHRoaXMuc2VsZWN0aW9uRW5kKTtyZXR1cm4gaXNOYU4odCk/LTE6dH19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fX3ZhbHVlQ2hhbmdlPU9iamVjdChpWyJkIl0pKChmdW5jdGlvbihlKXt0LnZhbHVlU3luYz10Ll9nZXRWYWx1ZVN0cmluZyhlLHQudHlwZSl9KSwxMDApO3RoaXMuJHdhdGNoKCJ2YWx1ZSIsZSksdGhpcy5fX3RyaWdnZXJJbnB1dD1PYmplY3QoaVsidSJdKSgoZnVuY3Rpb24oZSxuKXt0Ll9fdmFsdWVDaGFuZ2UuY2FuY2VsKCksdC4kZW1pdCgidXBkYXRlOnZhbHVlIixuLnZhbHVlKSx0LiR0cmlnZ2VyKCJpbnB1dCIsZSxuKX0pLDEwMCksdGhpcy4kdHJpZ2dlcklucHV0PWZ1bmN0aW9uKGUsbixyKXt0Ll9fdmFsdWVDaGFuZ2UuY2FuY2VsKCksdC5fX3RyaWdnZXJJbnB1dChlLG4pLHImJnQuX190cmlnZ2VySW5wdXQuZmx1c2goKX19LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9fdmFsdWVDaGFuZ2UuY2FuY2VsKCksdGhpcy5fX3RyaWdnZXJJbnB1dC5jYW5jZWwoKX0sZGlyZWN0aXZlczp7ZmllbGQ6e2luc2VydGVkOmZ1bmN0aW9uKHQsZSxuKXtuLmNvbnRleHQuX2luaXRGaWVsZCh0KX19fSxtZXRob2RzOntfZ2V0VmFsdWVTdHJpbmc6ZnVuY3Rpb24odCxlKXtyZXR1cm4ibnVtYmVyIj09PWUmJmlzTmFOKE51bWJlcih0KSkmJih0PSIiKSxudWxsPT09dD8iIjpTdHJpbmcodCl9LF9pbml0RmllbGQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9maWVsZD10LHI9cnx8RGF0ZS5ub3coKSx0aGlzLm5lZWRGb2N1cyYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLl9mb2N1cygpfSkpfSxfZm9jdXM6ZnVuY3Rpb24oKXtpZih0aGlzLm5lZWRGb2N1cyl7dmFyIHQ9dGhpcy5fZmllbGQ7dD90LmZvY3VzKCk6c2V0VGltZW91dCh0aGlzLl9mb2N1cy5iaW5kKHRoaXMpLDEwMCl9fSxfYmx1cjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ZpZWxkO3QmJnQuYmx1cigpfSxfb25Gb2N1czpmdW5jdGlvbih0KXt0aGlzLmZvY3VzU3luYz0hMCx0aGlzLiR0cmlnZ2VyKCJmb2N1cyIsdCx7dmFsdWU6dGhpcy52YWx1ZVN5bmN9KSx0aGlzLl9jaGVja1NlbGVjdGlvbigpLHRoaXMuX2NoZWNrQ3Vyc29yKCl9LF9vbkJsdXI6ZnVuY3Rpb24odCl7dGhpcy5jb21wb3NpbmcmJih0aGlzLmNvbXBvc2luZz0hMSx0aGlzLl9vbklucHV0KHQsITApKSx0aGlzLmZvY3VzU3luYz0hMTt2YXIgZSxuPXQudGFyZ2V0OyJudW1iZXIiPT09bi50eXBlPyhuLnR5cGU9InRleHQiLGU9bi5zZWxlY3Rpb25FbmQsbi50eXBlPSJudW1iZXIiKTplPW4uc2VsZWN0aW9uRW5kLHRoaXMuJHRyaWdnZXIoImJsdXIiLHQse3ZhbHVlOnRoaXMudmFsdWVTeW5jLGN1cnNvcjplfSl9LF9jaGVja1NlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ZpZWxkO3RoaXMuZm9jdXNTeW5jJiZ0aGlzLnNlbGVjdGlvblN0YXJ0TnVtYmVyPi0xJiZ0aGlzLnNlbGVjdGlvbkVuZE51bWJlcj4tMSYmIm51bWJlciIhPT10LnR5cGUmJih0LnNlbGVjdGlvblN0YXJ0PXRoaXMuc2VsZWN0aW9uU3RhcnROdW1iZXIsdC5zZWxlY3Rpb25FbmQ9dGhpcy5zZWxlY3Rpb25FbmROdW1iZXIpfSxfY2hlY2tDdXJzb3I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9maWVsZDt0aGlzLmZvY3VzU3luYyYmdGhpcy5zZWxlY3Rpb25TdGFydE51bWJlcjwwJiZ0aGlzLnNlbGVjdGlvbkVuZE51bWJlcjwwJiZ0aGlzLmN1cnNvck51bWJlcj4tMSYmIm51bWJlciIhPT10LnR5cGUmJih0LnNlbGVjdGlvbkVuZD10LnNlbGVjdGlvblN0YXJ0PXRoaXMuY3Vyc29yTnVtYmVyKX19fX0pLmNhbGwodGhpcyxuKCIzMWQyIikpfSwiMGM2MSI6ZnVuY3Rpb24odCxlLG4pe30sIjBjYWMiOmZ1bmN0aW9uKHQsZSxuKXt9LCIwZGIzIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXtmdW5jdGlvbiByKGUsbil7cmV0dXJuIG4/ZT9lLiRlbDpuLiRlbDp0LmVycm9yKCJwYWdlIGlzIG5vdCByZWFkeSIpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIHQubWF0Y2hlc3x8KHQubWF0Y2hlcz10Lm1hdGNoZXNTZWxlY3Rvcnx8dC5tb3pNYXRjaGVzU2VsZWN0b3J8fHQubXNNYXRjaGVzU2VsZWN0b3J8fHQub01hdGNoZXNTZWxlY3Rvcnx8dC53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGZ1bmN0aW9uKHQpe3ZhciBlPSh0aGlzLmRvY3VtZW50fHx0aGlzLm93bmVyRG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwodCksbj1lLmxlbmd0aDt3aGlsZSgtLW4+PTAmJmUuaXRlbShuKSE9PXRoaXMpO3JldHVybiBuPi0xfSksdH1uLmQoZSwiYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSksbi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBpfSkpfSkuY2FsbCh0aGlzLG4oIjQxOGIiKVsiZGVmYXVsdCJdKX0sIjBkYjgiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbj10aGlzLiRjaGlsZHJlbixpPW4ubGVuZ3RoLG89YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShvPjI/by0yOjApLHM9MjtzPG87cysrKWFbcy0yXT1hcmd1bWVudHNbc107Zm9yKHZhciBjPTA7YzxpO2MrKyl7dmFyIHU9bltjXSxsPXUuJG9wdGlvbnMubmFtZSYmdS4kb3B0aW9ucy5uYW1lLnN1YnN0cig0KTtpZih+dC5pbmRleE9mKGwpKXJldHVybiB1LiRlbWl0LmFwcGx5KHUsW2VdLmNvbmNhdChhKSksITE7aWYoITE9PT1yLmFwcGx5KHUsW3QsZV0uY29uY2F0KFthXSkpKXJldHVybiExfX1lWyJhIl09e21ldGhvZHM6eyRkaXNwYXRjaDpmdW5jdGlvbih0LGUpeyJzdHJpbmciPT09dHlwZW9mIHQmJih0PVt0XSk7dmFyIG49dGhpcy4kcGFyZW50fHx0aGlzLiRyb290LHI9bi4kb3B0aW9ucy5uYW1lJiZuLiRvcHRpb25zLm5hbWUuc3Vic3RyKDQpO3doaWxlKG4mJighcnx8IX50LmluZGV4T2YocikpKW49bi4kcGFyZW50LG4mJihyPW4uJG9wdGlvbnMubmFtZSYmbi4kb3B0aW9ucy5uYW1lLnN1YnN0cig0KSk7aWYobil7Zm9yKHZhciBpPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkoaT4yP2ktMjowKSxhPTI7YTxpO2ErKylvW2EtMl09YXJndW1lbnRzW2FdO24uJGVtaXQuYXBwbHkobixbZV0uY29uY2F0KG8pKX19LCRicm9hZGNhc3Q6ZnVuY3Rpb24odCxlKXsic3RyaW5nIj09PXR5cGVvZiB0JiYodD1bdF0pO2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4+Mj9uLTI6MCksbz0yO288bjtvKyspaVtvLTJdPWFyZ3VtZW50c1tvXTtyLmFwcGx5KHRoaXMsW3QsZV0uY29uY2F0KGkpKX19fX0sIjBkYmQiOmZ1bmN0aW9uKHQpe3QuZXhwb3J0cz1KU09OLnBhcnNlKCd7InVuaS5hcHAucXVpdCI6IkFwcHV5ZXogw6Agbm91dmVhdSBwb3VyIHF1aXR0ZXIgbFwnYXBwbGljYXRpb24iLCJ1bmkuYXN5bmMuZXJyb3IiOiJMYSBjb25uZXhpb24gYSBleHBpcsOpLCBjbGlxdWV6IHN1ciBsXCfDqWNyYW4gcG91ciByw6llc3NheWVyLiIsInVuaS5zaG93QWN0aW9uU2hlZXQuY2FuY2VsIjoiQW5udWxlciIsInVuaS5zaG93VG9hc3QudW5wYWlyZWQiOiJWZXVpbGxleiBub3RlciBxdWUgc2hvd1RvYXN0IGRvaXQgw6p0cmUgYXNzb2Npw6kgw6AgaGlkZVRvYXN0IiwidW5pLnNob3dMb2FkaW5nLnVucGFpcmVkIjoiVmV1aWxsZXogbm90ZXIgcXVlIHNob3dMb2FkaW5nIGRvaXQgw6p0cmUgYXNzb2Npw6kgw6AgaGlkZUxvYWRpbmciLCJ1bmkuc2hvd01vZGFsLmNhbmNlbCI6IkFubnVsZXIiLCJ1bmkuc2hvd01vZGFsLmNvbmZpcm0iOiJPSyIsInVuaS5jaG9vc2VJbWFnZS5jYW5jZWwiOiJBbm51bGVyIiwidW5pLmNob29zZUltYWdlLnNvdXJjZVR5cGUuYWxidW0iOiJBbGJ1bSIsInVuaS5jaG9vc2VJbWFnZS5zb3VyY2VUeXBlLmNhbWVyYSI6IkNhbcOpcmEiLCJ1bmkuY2hvb3NlVmlkZW8uY2FuY2VsIjoiQW5udWxlciIsInVuaS5jaG9vc2VWaWRlby5zb3VyY2VUeXBlLmFsYnVtIjoiQWxidW0iLCJ1bmkuY2hvb3NlVmlkZW8uc291cmNlVHlwZS5jYW1lcmEiOiJDYW3DqXJhIiwidW5pLmNob29zZUZpbGUubm90VXNlckFjdGl2YXRpb24iOiJMYSBib8OudGUgZGUgZGlhbG9ndWUgZHUgc8OpbGVjdGV1ciBkZSBmaWNoaWVyIG5lIHBldXQgw6p0cmUgYWZmaWNow6llIHF1XCdhdmVjIHVuZSBhY3RpdmF0aW9uIHBhciBsXCd1dGlsaXNhdGV1ciIsInVuaS5wcmV2aWV3SW1hZ2UuY2FuY2VsIjoiQW5udWxlciIsInVuaS5wcmV2aWV3SW1hZ2UuYnV0dG9uLnNhdmUiOiJHdWFyZGFyIGltYWdlbiIsInVuaS5wcmV2aWV3SW1hZ2Uuc2F2ZS5zdWNjZXNzIjoiRW5yZWdpc3Ryw6kgYXZlYyBzdWNjw6hzIiwidW5pLnByZXZpZXdJbWFnZS5zYXZlLmZhaWwiOiLDiWNoZWMgZGUgbGEgc2F1dmVnYXJkZSIsInVuaS5zZXRDbGlwYm9hcmREYXRhLnN1Y2Nlc3MiOiJDb250ZW51IGNvcGnDqSIsInVuaS5zY2FuQ29kZS50aXRsZSI6IkNvZGUgZOKAmWFuYWx5c2UiLCJ1bmkuc2NhbkNvZGUuYWxidW0iOiJBbGJ1bSIsInVuaS5zY2FuQ29kZS5mYWlsIjoiRmFsbG8gZGUgcmVjb25vY2ltaWVudG8iLCJ1bmkuc2NhbkNvZGUuZmxhc2gub24iOiJBcHB1eWV6IHBvdXIgYWN0aXZlciBsXCfDqWNsYWlyYWdlIiwidW5pLnNjYW5Db2RlLmZsYXNoLm9mZiI6IkFwcHV5ZXogcG91ciBkw6lzYWN0aXZlciBsXCfDqWNsYWlyYWdlIiwidW5pLnN0YXJ0U290ZXJBdXRoZW50aWNhdGlvbi5hdXRoQ29udGVudCI6IlJlY29ubmFpc3NhbmNlIGRlIGxcJ2VtcHJlaW50ZSBkaWdpdGFsZSIsInVuaS5zdGFydFNvdGVyQXV0aGVudGljYXRpb24ud2FpdGluZ0NvbnRlbnQiOiJNw6ljb25uYWlzc2FibGUiLCJ1bmkucGlja2VyLmRvbmUiOiJPSyIsInVuaS5waWNrZXIuY2FuY2VsIjoiQW5udWxlciIsInVuaS52aWRlby5kYW5tdSI6IkRhbm11IiwidW5pLnZpZGVvLnZvbHVtZSI6IkxlIFZvbHVtZSIsInVuaS5idXR0b24uZmVlZGJhY2sudGl0bGUiOiJyZXRvdXIgZFwnaW5mb3JtYXRpb24iLCJ1bmkuYnV0dG9uLmZlZWRiYWNrLnNlbmQiOiJlbnZveWVyIiwidW5pLmNob29zZUxvY2F0aW9uLnNlYXJjaCI6IlRyb3V2ZSIsInVuaS5jaG9vc2VMb2NhdGlvbi5jYW5jZWwiOiJBbm51bGVyIn0nKX0sIjBlNGEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bigiMzQwZCIpO3ZhciByLGk9bigiMGRiOCIpO2Z1bmN0aW9uIG8oKXt9ZVsiYSJdPXtuYW1lOiJLZXlib2FyZCIsbWl4aW5zOltpWyJhIl1dLHByb3BzOntjdXJzb3JTcGFjaW5nOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjB9LHNob3dDb25maXJtQmFyOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDoiYXV0byJ9LGFkanVzdFBvc2l0aW9uOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMH0sYXV0b0JsdXI6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfX0sY29tcHV0ZWQ6e2lzQXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PVN0cmluZyhuYXZpZ2F0b3IudmVuZG9yKS5pbmRleE9mKCJBcHBsZSIpfX0sZGlyZWN0aXZlczp7a2V5Ym9hcmQ6e2luc2VydGVkOmZ1bmN0aW9uKHQsZSxuKXtuLmNvbnRleHQuaW5pdEtleWJvYXJkKHQpfX19LG1ldGhvZHM6e2luaXRLZXlib2FyZDpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3QuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLChmdW5jdGlvbigpe2NsZWFyVGltZW91dChyKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsbywhMSl9KSk7dmFyIG49ZnVuY3Rpb24oKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsbywhMSksZS5pc0FwcGxlJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG8oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCl9O3QuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsKGZ1bmN0aW9uKCl7ZS5pc0FwcGxlJiZ0LmJsdXIoKSxuKCl9KSl9fX19LCIwZWU0IjpmdW5jdGlvbih0LGUpe3ZhciBuO249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKTt0cnl7bj1ufHxuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKX1jYXRjaChpKXsib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3c/InVuZGVmaW5lZCI6cih3aW5kb3cpKSYmKG49d2luZG93KX10LmV4cG9ydHM9bn0sIjExZGYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZjgyOSIpLGk9bi5uKHIpO2kuYX0sIjEyMGYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJ1bmktcmVzaXplLXNlbnNvciIse29uOnsifmFuaW1hdGlvbnN0YXJ0IjpmdW5jdGlvbihlKXtyZXR1cm4gdC51cGRhdGUoZSl9fX0sW24oImRpdiIse29uOntzY3JvbGw6dC51cGRhdGV9fSxbbigiZGl2IildKSxuKCJkaXYiLHtvbjp7c2Nyb2xsOnQudXBkYXRlfX0sW24oImRpdiIpXSldKX0saT1bXSxvPTFlNSxhPXtuYW1lOiJSZXNpemVTZW5zb3IiLHByb3BzOntpbml0aWFsOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57c2l6ZTp7d2lkdGg6LTEsaGVpZ2h0Oi0xfX19LHdhdGNoOntzaXplOntkZWVwOiEwLGhhbmRsZXI6ZnVuY3Rpb24odCl7dGhpcy4kZW1pdCgicmVzaXplIixPYmplY3QuYXNzaWduKHt9LHQpKX19fSxtb3VudGVkOmZ1bmN0aW9uKCl7ITA9PT10aGlzLmluaXRpYWwmJnRoaXMuJG5leHRUaWNrKHRoaXMudXBkYXRlKSx0aGlzLiRlbC5vZmZzZXRQYXJlbnQhPT10aGlzLiRlbC5wYXJlbnROb2RlJiYodGhpcy4kZWwucGFyZW50Tm9kZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSwiQW5pbWF0aW9uRXZlbnQiaW4gd2luZG93fHx0aGlzLnJlc2V0KCl9LGFjdGl2YXRlZDpmdW5jdGlvbigpe3RoaXMucmVzZXQoKX0sbWV0aG9kczp7cmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRlbC5maXJzdENoaWxkO3Quc2Nyb2xsTGVmdD1vLHQuc2Nyb2xsVG9wPW87dmFyIGU9dGhpcy4kZWwubGFzdENoaWxkO2Uuc2Nyb2xsTGVmdD1vLGUuc2Nyb2xsVG9wPW99LHVwZGF0ZTpmdW5jdGlvbigpe3RoaXMuc2l6ZS53aWR0aD10aGlzLiRlbC5vZmZzZXRXaWR0aCx0aGlzLnNpemUuaGVpZ2h0PXRoaXMuJGVsLm9mZnNldEhlaWdodCx0aGlzLnJlc2V0KCl9fX0scz1hLGM9KG4oIjJlYjEiKSxuKCI4ODQ0IikpLHU9T2JqZWN0KGNbImEiXSkocyxyLGksITEsbnVsbCxudWxsLG51bGwpO2VbImRlZmF1bHQiXT11LmV4cG9ydHN9LCIxMjNjIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwiY29ubmVjdFNvY2tldCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKGUsInNlbmRTb2NrZXRNZXNzYWdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKSxuLmQoZSwiY2xvc2VTb2NrZXQiLChmdW5jdGlvbigpe3JldHVybiBhfSkpO3ZhciByPXtPUFRJT05TOiJPUFRJT05TIixHRVQ6IkdFVCIsSEVBRDoiSEVBRCIsUE9TVDoiUE9TVCIsUFVUOiJQVVQiLERFTEVURToiREVMRVRFIixUUkFDRToiVFJBQ0UiLENPTk5FQ1Q6IkNPTk5FQ1QifSxpPXt1cmw6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxoZWFkZXI6e3R5cGU6T2JqZWN0LHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe2UuaGVhZGVyPXR8fHt9fX0sbWV0aG9kOnt0eXBlOlN0cmluZyx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXt0PSh0fHwiIikudG9VcHBlckNhc2UoKSxlLm1ldGhvZD1PYmplY3QudmFsdWVzKHIpLmluZGV4T2YodCk8MD9yLkdFVDp0fX0scHJvdG9jb2xzOnt0eXBlOltBcnJheSxTdHJpbmddLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpeyJzdHJpbmciPT09dHlwZW9mIHQmJih0PVt0XSksZS5wcm90b2NvbHM9KHR8fFtdKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIHR9KSl9fX0sbz17ZGF0YTp7dHlwZTpbU3RyaW5nLEFycmF5QnVmZmVyXX19LGE9e2NvZGU6e3R5cGU6TnVtYmVyfSxyZWFzb246e3R5cGU6U3RyaW5nfX19LCIxMmUyIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwiY3JlYXRlSW5uZXJBdWRpb0NvbnRleHQiLChmdW5jdGlvbigpe3JldHVybiBmfSkpO3ZhciByPW4oIjQ3MzgiKTtmdW5jdGlvbiBpKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fWZ1bmN0aW9uIGEodCxlLG4pe3JldHVybiBlJiZvKHQucHJvdG90eXBlLGUpLG4mJm8odCxuKSx0fWZ1bmN0aW9uIHModCxlLG4pe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bix0fXZhciBjPVsib25DYW5wbGF5Iiwib25QbGF5Iiwib25QYXVzZSIsIm9uU3RvcCIsIm9uRW5kZWQiLCJvblRpbWVVcGRhdGUiLCJvbkVycm9yIiwib25XYWl0aW5nIiwib25TZWVraW5nIiwib25TZWVrZWQiXSx1PVsib2ZmQ2FucGxheSIsIm9mZlBsYXkiLCJvZmZQYXVzZSIsIm9mZlN0b3AiLCJvZmZFbmRlZCIsIm9mZlRpbWVVcGRhdGUiLCJvZmZFcnJvciIsIm9mZldhaXRpbmciLCJvZmZTZWVraW5nIiwib2ZmU2Vla2VkIl0sbD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgZT10aGlzO2kodGhpcyx0KSxzKHRoaXMsIl9hdWRpbyIsdm9pZCAwKSxzKHRoaXMsIl9zdG9waW5nIix2b2lkIDApLHModGhpcywic3RhcnRUaW1lIix2b2lkIDApLHModGhpcywiX2V2ZW50cyIsdm9pZCAwKSxzKHRoaXMsIl9zcmMiLHZvaWQgMCk7dmFyIG49dGhpcy5fYXVkaW89bmV3IEF1ZGlvO3RoaXMuX3N0b3Bpbmc9ITE7dmFyIG89WyJzcmMiLCJhdXRvcGxheSIsImxvb3AiLCJkdXJhdGlvbiIsImN1cnJlbnRUaW1lIiwicGF1c2VkIiwidm9sdW1lIl07by5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtzZXQ6InNyYyI9PT10P2Z1bmN0aW9uKHQpe3JldHVybiBuLnNyYz1PYmplY3QoclsiYSJdKSh0KSxlLl9zcmM9dCx0fTpmdW5jdGlvbihlKXtyZXR1cm4gblt0XT1lLGV9LGdldDoic3JjIj09PXQ/ZnVuY3Rpb24oKXtyZXR1cm4gZS5fc3JjfTpmdW5jdGlvbigpe3JldHVybiBuW3RdfX0pfSkpLHRoaXMuc3RhcnRUaW1lPTAsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm9iZXlNdXRlU3dpdGNoIix7c2V0OmZ1bmN0aW9uKHQpe3JldHVybiExfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiYnVmZmVyZWQiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1uLmJ1ZmZlcmVkO3JldHVybiB0Lmxlbmd0aD90LmVuZCh0Lmxlbmd0aC0xKTowfX0pLHRoaXMuX2V2ZW50cz17fSxjLmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuX2V2ZW50c1t0XT1bXX0pKSxuLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZG1ldGFkYXRhIiwoZnVuY3Rpb24oKXt2YXIgdD1OdW1iZXIoZS5zdGFydFRpbWUpfHwwO3Q+MCYmKG4uY3VycmVudFRpbWU9dCl9KSk7dmFyIGE9WyJjYW5wbGF5IiwicGxheSIsInBhdXNlIiwiZW5kZWQiLCJ0aW1lVXBkYXRlIiwiZXJyb3IiLCJ3YWl0aW5nIiwic2Vla2luZyIsInNlZWtlZCJdLHU9WyJjYW5wbGF5IiwicGF1c2UiLCJzZWVraW5nIiwic2Vla2VkIiwidGltZVVwZGF0ZSJdO2EuZm9yRWFjaCgoZnVuY3Rpb24odCl7bi5hZGRFdmVudExpc3RlbmVyKHQudG9Mb3dlckNhc2UoKSwoZnVuY3Rpb24oKXtlLl9zdG9waW5nJiZ1LmluZGV4T2YodCk+PTB8fGUuX2V2ZW50c1sib24iLmNvbmNhdCh0LnN1YnN0cigwLDEpLnRvVXBwZXJDYXNlKCkpLmNvbmNhdCh0LnN1YnN0cigxKSldLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QoKX0pKX0pLCExKX0pKX1yZXR1cm4gYSh0LFt7a2V5OiJwbGF5Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3N0b3Bpbmc9ITEsdGhpcy5fYXVkaW8ucGxheSgpfX0se2tleToicGF1c2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fYXVkaW8ucGF1c2UoKX19LHtrZXk6InN0b3AiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fc3RvcGluZz0hMCx0aGlzLl9hdWRpby5wYXVzZSgpLHRoaXMuX2F1ZGlvLmN1cnJlbnRUaW1lPTAsdGhpcy5fZXZlbnRzLm9uU3RvcC5mb3JFYWNoKChmdW5jdGlvbih0KXt0KCl9KSl9fSx7a2V5OiJzZWVrIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLl9zdG9waW5nPSExLHQ9TnVtYmVyKHQpLCJudW1iZXIiIT09dHlwZW9mIHR8fGlzTmFOKHQpfHwodGhpcy5fYXVkaW8uY3VycmVudFRpbWU9dCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc3RvcCgpfX1dKSx0fSgpO2Z1bmN0aW9uIGYoKXtyZXR1cm4gbmV3IGx9Yy5mb3JFYWNoKChmdW5jdGlvbih0KXtsLnByb3RvdHlwZVt0XT1mdW5jdGlvbihlKXsiZnVuY3Rpb24iPT09dHlwZW9mIGUmJnRoaXMuX2V2ZW50c1t0XS5wdXNoKGUpfX0pKSx1LmZvckVhY2goKGZ1bmN0aW9uKHQpe2wucHJvdG90eXBlW3RdPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuX2V2ZW50c1t0LnJlcGxhY2UoIm9mZiIsIm9uIildLHI9bi5pbmRleE9mKGUpO3I+PTAmJm4uc3BsaWNlKHIsMSl9fSkpfSwxMzMyOmZ1bmN0aW9uKHQsZSxuKXt9LDE3MjA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJhMTg3IiksaT1uLm4ocik7aS5hfSwxODY3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiOWE3OCIpLGk9bi5uKHIpO2kuYX0sIjFjM2UiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJvbk5ldHdvcmtTdGF0dXNDaGFuZ2UiLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZChlLCJvZmZOZXR3b3JrU3RhdHVzQ2hhbmdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKTt2YXIgcj1uKCI5MTMxIiksaT1uKCI3NDVhIiksbz1bXTtmdW5jdGlvbiBhKHQpe28ucHVzaCh0KX1mdW5jdGlvbiBzKHQpe2lmKHQpe3ZhciBlPW8uaW5kZXhPZih0KTtlPj0wJiZvLnNwbGljZShlLDEpfX1PYmplY3QoaVsiZCJdKSgib25OZXR3b3JrU3RhdHVzQ2hhbmdlIiwoZnVuY3Rpb24odCl7by5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QoclsiYSJdKShlLHQpfSkpfSkpfSwiMWQyZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZnVuY3Rpb24odCxyKXt2YXIgaT1uKCIwMzcyIik7ZVsiZGVmYXVsdCJdPXtkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3Nob3dUb2FzdDp7dmlzaWJsZTohMX19fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPSIiLG89ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIpe249dCxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2Uuc2hvd1RvYXN0PXJ9KSwxMCl9fTt0Lm9uKCJvblNob3dUb2FzdCIsbygib25TaG93VG9hc3QiKSksdC5vbigib25TaG93TG9hZGluZyIsbygib25TaG93TG9hZGluZyIpKTt2YXIgYT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtpZihuKXt2YXIgbz0iIjtpZigib25IaWRlVG9hc3QiPT09dCYmIm9uU2hvd1RvYXN0IiE9PW4/bz1PYmplY3QoaVsiZyJdKSgidW5pLnNob3dUb2FzdC51bnBhaXJlZCIpOiJvbkhpZGVMb2FkaW5nIj09PXQmJiJvblNob3dMb2FkaW5nIiE9PW4mJihvPU9iamVjdChpWyJnIl0pKCJ1bmkuc2hvd0xvYWRpbmcudW5wYWlyZWQiKSksbylyZXR1cm4gci53YXJuKG8pO249IiIsc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLnNob3dUb2FzdC52aXNpYmxlPSExfSksMTApfX19O3Qub24oIm9uSGlkZVBvcHVwIixhKCJvbkhpZGVQb3B1cCIpKSx0Lm9uKCJvbkhpZGVUb2FzdCIsYSgib25IaWRlVG9hc3QiKSksdC5vbigib25IaWRlTG9hZGluZyIsYSgib25IaWRlTG9hZGluZyIpKX19fS5jYWxsKHRoaXMsbigiMmM5ZiIpLG4oIjQxOGIiKVsiZGVmYXVsdCJdKX0sIjFkYTkiOmZ1bmN0aW9uKHQpe3QuZXhwb3J0cz1KU09OLnBhcnNlKCd7InVuaS5hcHAucXVpdCI6IuWGjeaMieS4gOasoemAgOWHuuW6lOeUqCIsInVuaS5hc3luYy5lcnJvciI6Iui/nuaOpeacjeWKoeWZqOi2heaXtu+8jOeCueWHu+Wxj+W5lemHjeivlSIsInVuaS5zaG93QWN0aW9uU2hlZXQuY2FuY2VsIjoi5Y+W5raIIiwidW5pLnNob3dUb2FzdC51bnBhaXJlZCI6Iuivt+azqOaEjyBzaG93VG9hc3Qg5LiOIGhpZGVUb2FzdCDlv4XpobvphY3lr7nkvb/nlKgiLCJ1bmkuc2hvd0xvYWRpbmcudW5wYWlyZWQiOiLor7fms6jmhI8gc2hvd0xvYWRpbmcg5LiOIGhpZGVMb2FkaW5nIOW/hemhu+mFjeWvueS9v+eUqCIsInVuaS5zaG93TW9kYWwuY2FuY2VsIjoi5Y+W5raIIiwidW5pLnNob3dNb2RhbC5jb25maXJtIjoi56Gu5a6aIiwidW5pLmNob29zZUltYWdlLmNhbmNlbCI6IuWPlua2iCIsInVuaS5jaG9vc2VJbWFnZS5zb3VyY2VUeXBlLmFsYnVtIjoi5LuO55u45YaM6YCJ5oupIiwidW5pLmNob29zZUltYWdlLnNvdXJjZVR5cGUuY2FtZXJhIjoi5ouN5pGEIiwidW5pLmNob29zZVZpZGVvLmNhbmNlbCI6IuWPlua2iCIsInVuaS5jaG9vc2VWaWRlby5zb3VyY2VUeXBlLmFsYnVtIjoi5LuO55u45YaM6YCJ5oupIiwidW5pLmNob29zZVZpZGVvLnNvdXJjZVR5cGUuY2FtZXJhIjoi5ouN5pGEIiwidW5pLmNob29zZUZpbGUubm90VXNlckFjdGl2YXRpb24iOiLmlofku7bpgInmi6nlmajlr7nor53moYblj6rog73lnKjnlLHnlKjmiLfmv4DmtLvml7bmmL7npLoiLCJ1bmkucHJldmlld0ltYWdlLmNhbmNlbCI6IuWPlua2iCIsInVuaS5wcmV2aWV3SW1hZ2UuYnV0dG9uLnNhdmUiOiLkv53lrZjlm77lg48iLCJ1bmkucHJldmlld0ltYWdlLnNhdmUuc3VjY2VzcyI6IuS/neWtmOWbvuWDj+WIsOebuOWGjOaIkOWKnyIsInVuaS5wcmV2aWV3SW1hZ2Uuc2F2ZS5mYWlsIjoi5L+d5a2Y5Zu+5YOP5Yiw55u45YaM5aSx6LSlIiwidW5pLnNldENsaXBib2FyZERhdGEuc3VjY2VzcyI6IuWGheWuueW3suWkjeWItiIsInVuaS5zY2FuQ29kZS50aXRsZSI6IuaJq+eggSIsInVuaS5zY2FuQ29kZS5hbGJ1bSI6IuebuOWGjCIsInVuaS5zY2FuQ29kZS5mYWlsIjoi6K+G5Yir5aSx6LSlIiwidW5pLnNjYW5Db2RlLmZsYXNoLm9uIjoi6L276Kem54Wn5LquIiwidW5pLnNjYW5Db2RlLmZsYXNoLm9mZiI6Iui9u+inpuWFs+mXrSIsInVuaS5zdGFydFNvdGVyQXV0aGVudGljYXRpb24uYXV0aENvbnRlbnQiOiLmjIfnurnor4bliKvkuK0uLi4iLCJ1bmkuc3RhcnRTb3RlckF1dGhlbnRpY2F0aW9uLndhaXRpbmdDb250ZW50Ijoi5peg5rOV6K+G5YirIiwidW5pLnBpY2tlci5kb25lIjoi5a6M5oiQIiwidW5pLnBpY2tlci5jYW5jZWwiOiLlj5bmtogiLCJ1bmkudmlkZW8uZGFubXUiOiLlvLnluZUiLCJ1bmkudmlkZW8udm9sdW1lIjoi6Z+z6YePIiwidW5pLmJ1dHRvbi5mZWVkYmFjay50aXRsZSI6IumXrumimOWPjemmiCIsInVuaS5idXR0b24uZmVlZGJhY2suc2VuZCI6IuWPkemAgSIsInVuaS5jaG9vc2VMb2NhdGlvbi5zZWFyY2giOiLmkJzntKLlnLDngrkiLCJ1bmkuY2hvb3NlTG9jYXRpb24uY2FuY2VsIjoi5Y+W5raIIn0nKX0sIjFkYWEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUsbixyKXt2YXIgaSxvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGE9ZS5jYWxsYmFja3x8ImNhbGxiYWNrIixzPSJfX2NhbGxiYWNrIitEYXRlLm5vdygpK01hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5zbGljZSgyKSxjPWUudGltZW91dHx8M2U0O2Z1bmN0aW9uIHUoKXtjbGVhclRpbWVvdXQoaSksZGVsZXRlIHdpbmRvd1tzXSxvLnJlbW92ZSgpfXdpbmRvd1tzXT1mdW5jdGlvbih0KXsiZnVuY3Rpb24iPT09dHlwZW9mIG4mJm4odCksdSgpfSxvLm9uZXJyb3I9ZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT09dHlwZW9mIHImJnIoKSx1KCl9LGk9c2V0VGltZW91dCgoZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT09dHlwZW9mIHImJnIoKSx1KCl9KSxjKSxvLnNyYz10Kyh0LmluZGV4T2YoIj8iKT49MD8iJiI6Ij8iKSthKyI9IitzLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobyl9bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiByfSkpfSwiMWVmZCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsImdldFdpbmRvd0luZm8iLChmdW5jdGlvbigpe3JldHVybiBhfSkpO3ZhciByPW4oIjhkN2QiKSxpPW4oImY2MjEiKSxvPW4ubihpKTtmdW5jdGlvbiBhKCl7dmFyIHQ9d2luZG93LnNjcmVlbixlPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLG49L15BcHBsZS8udGVzdChuYXZpZ2F0b3IudmVuZG9yKSYmIm51bWJlciI9PT10eXBlb2Ygd2luZG93Lm9yaWVudGF0aW9uLGk9biYmOTA9PT1NYXRoLmFicyh3aW5kb3cub3JpZW50YXRpb24pLGE9bj9NYXRoW2k/Im1heCI6Im1pbiJdKHQud2lkdGgsdC5oZWlnaHQpOnQud2lkdGgscz1uP01hdGhbaT8ibWluIjoibWF4Il0odC5oZWlnaHQsdC53aWR0aCk6dC5oZWlnaHQsYz1NYXRoLm1pbih3aW5kb3cuaW5uZXJXaWR0aCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsYSl8fGEsdT13aW5kb3cuaW5uZXJIZWlnaHQsbD1vLmEudG9wLGY9e2xlZnQ6by5hLmxlZnQscmlnaHQ6Yy1vLmEucmlnaHQsdG9wOm8uYS50b3AsYm90dG9tOnUtby5hLmJvdHRvbSx3aWR0aDpjLW8uYS5sZWZ0LW8uYS5yaWdodCxoZWlnaHQ6dS1vLmEudG9wLW8uYS5ib3R0b219LGQ9T2JqZWN0KHJbImEiXSkoKSxoPWQudG9wLHA9ZC5ib3R0b207cmV0dXJuIHUtPWgsdS09cCx7d2luZG93VG9wOmgsd2luZG93Qm90dG9tOnAsd2luZG93V2lkdGg6Yyx3aW5kb3dIZWlnaHQ6dSxwaXhlbFJhdGlvOmUsc2NyZWVuV2lkdGg6YSxzY3JlZW5IZWlnaHQ6cyxzdGF0dXNCYXJIZWlnaHQ6bCxzYWZlQXJlYTpmLHNhZmVBcmVhSW5zZXRzOnt0b3A6by5hLnRvcCxyaWdodDpvLmEucmlnaHQsYm90dG9tOm8uYS5ib3R0b20sbGVmdDpvLmEubGVmdH0sc2NyZWVuVG9wOnMtdX19fSwiMWY4YSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInVuaS1yYWRpbyIsdC5fZyh7YXR0cnM6e2lkOnQuaWQsZGlzYWJsZWQ6dC5kaXNhYmxlZH0sb246e2NsaWNrOnQuX29uQ2xpY2t9fSx0LiRsaXN0ZW5lcnMpLFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXJhZGlvLXdyYXBwZXIiLHN0eWxlOnsiLS1IT1ZFUi1CRC1DT0xPUiI6dC5yYWRpb0NoZWNrZWQ/dC5yYWRpb1N0eWxlLmJvcmRlckNvbG9yOnQuYWN0aXZlQm9yZGVyQ29sb3J9fSxbbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1yYWRpby1pbnB1dCIsY2xhc3M6eyJ1bmktcmFkaW8taW5wdXQtY2hlY2tlZCI6dC5yYWRpb0NoZWNrZWQsInVuaS1yYWRpby1pbnB1dC1kaXNhYmxlZCI6dC5kaXNhYmxlZH0sc3R5bGU6dC5yYWRpb1N0eWxlfSksdC5fdCgiZGVmYXVsdCIpXSwyKV0pfSxpPVtdLG89bigiOTA5ZSIpLGE9e25hbWU6IlJhZGlvIixtaXhpbnM6W29bImEiXSxvWyJmIl1dLHByb3BzOntjaGVja2VkOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0saWQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LGRpc2FibGVkOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sdmFsdWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LGNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIjMDA3QUZGIn0sYmFja2dyb3VuZENvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxib3JkZXJDb2xvcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sYWN0aXZlQmFja2dyb3VuZENvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxhY3RpdmVCb3JkZXJDb2xvcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0saWNvbkNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIjZmZmZmZmIn19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57cmFkaW9DaGVja2VkOnRoaXMuY2hlY2tlZCxyYWRpb1ZhbHVlOnRoaXMudmFsdWV9fSxjb21wdXRlZDp7cmFkaW9TdHlsZTpmdW5jdGlvbigpe2lmKHRoaXMuZGlzYWJsZWQpcmV0dXJue2JhY2tncm91bmRDb2xvcjoiI0UxRTFFMSIsYm9yZGVyQ29sb3I6IiNEMUQxRDEifTt2YXIgdD17fTtyZXR1cm4gdGhpcy5yYWRpb0NoZWNrZWQ/KHQuY29sb3I9dGhpcy5pY29uQ29sb3IsdC5iYWNrZ3JvdW5kQ29sb3I9dGhpcy5hY3RpdmVCYWNrZ3JvdW5kQ29sb3J8fHRoaXMuY29sb3IsdC5ib3JkZXJDb2xvcj10aGlzLmFjdGl2ZUJvcmRlckNvbG9yfHx0LmJhY2tncm91bmRDb2xvcik6KHRoaXMuYm9yZGVyQ29sb3ImJih0LmJvcmRlckNvbG9yPXRoaXMuYm9yZGVyQ29sb3IpLHRoaXMuYmFja2dyb3VuZENvbG9yJiYodC5iYWNrZ3JvdW5kQ29sb3I9dGhpcy5iYWNrZ3JvdW5kQ29sb3IpKSx0fX0sd2F0Y2g6e2NoZWNrZWQ6ZnVuY3Rpb24odCl7dGhpcy5yYWRpb0NoZWNrZWQ9dH0sdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5yYWRpb1ZhbHVlPXR9fSxsaXN0ZW5lcnM6eyJsYWJlbC1jbGljayI6Il9vbkNsaWNrIiwiQGxhYmVsLWNsaWNrIjoiX29uQ2xpY2sifSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy4kZGlzcGF0Y2goIlJhZGlvR3JvdXAiLCJ1bmktcmFkaW8tZ3JvdXAtdXBkYXRlIix7dHlwZToiYWRkIix2bTp0aGlzfSksdGhpcy4kZGlzcGF0Y2goIkZvcm0iLCJ1bmktZm9ybS1ncm91cC11cGRhdGUiLHt0eXBlOiJhZGQiLHZtOnRoaXN9KX0sYmVmb3JlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuJGRpc3BhdGNoKCJSYWRpb0dyb3VwIiwidW5pLXJhZGlvLWdyb3VwLXVwZGF0ZSIse3R5cGU6InJlbW92ZSIsdm06dGhpc30pLHRoaXMuJGRpc3BhdGNoKCJGb3JtIiwidW5pLWZvcm0tZ3JvdXAtdXBkYXRlIix7dHlwZToicmVtb3ZlIix2bTp0aGlzfSl9LG1ldGhvZHM6e19vbkNsaWNrOmZ1bmN0aW9uKHQpe3RoaXMuZGlzYWJsZWR8fHRoaXMucmFkaW9DaGVja2VkfHwodGhpcy5yYWRpb0NoZWNrZWQ9ITAsdGhpcy4kZGlzcGF0Y2goIlJhZGlvR3JvdXAiLCJ1bmktcmFkaW8tY2hhbmdlIix0LHRoaXMpKX0sX3Jlc2V0Rm9ybURhdGE6ZnVuY3Rpb24oKXt0aGlzLnJhZGlvQ2hlY2tlZD10aGlzLm1pbn19fSxzPWEsYz0obigiOTg1NCIpLG4oIjg4NDQiKSksdT1PYmplY3QoY1siYSJdKShzLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPXUuZXhwb3J0c30sIjFmZGYiOmZ1bmN0aW9uKHQsZSxuKXt9LCIxZmU5IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9eyIuL2Jhc2UvYmFzZTY0LmpzIjoiNzhiNyIsIi4vYmFzZS9jYW4taS11c2UuanMiOiI5YmQ5IiwiLi9iYXNlL2ludGVyY2VwdG9yLmpzIjoiYzlkYSIsIi4vYmFzZS91cHgycHguanMiOiJjMTY1IiwiLi9jb250ZXh0L2F1ZGlvLmpzIjoiZTc0OCIsIi4vY29udGV4dC9iYWNrZ3JvdW5kLWF1ZGlvLmpzIjoiODZkMyIsIi4vY29udGV4dC9jYW52YXMuanMiOiI2MzUyIiwiLi9jb250ZXh0L2NyZWF0ZS1tYXAtY29udGV4dC5qcyI6ImVkMmMiLCIuL2NvbnRleHQvY3JlYXRlLXZpZGVvLWNvbnRleHQuanMiOiJlNjhhIiwiLi9jb250ZXh0L2VkaXRvci5qcyI6IjU4ODMiLCIuL2NvbnRleHQvaW5uZXItYXVkaW8uanMiOiJiZWFiIiwiLi9kZXZpY2UvbmV0d29yay5qcyI6IjFjM2UiLCIuL2RldmljZS90aGVtZS5qcyI6IjA0MjYiLCIuL2tleWJvYXJkL2dldC1zZWxlY3RlZC10ZXh0LXJhbmdlLmpzIjoiNzk1OCIsIi4va2V5Ym9hcmQva2V5Ym9hcmQuanMiOiI3MDY4IiwiLi9tZWRpYS9wcmV2aWV3LWltYWdlLmpzIjoiNzMxNyIsIi4vbWVkaWEvcmVjb3JkZXIuanMiOiJkOTFhIiwiLi9uZXR3b3JrL2Rvd25sb2FkLWZpbGUuanMiOiJjZjk3IiwiLi9uZXR3b3JrL3JlcXVlc3QuanMiOiJkYzAyIiwiLi9uZXR3b3JrL3NvY2tldC5qcyI6IjMyYTAiLCIuL25ldHdvcmsvdXBkYXRlLmpzIjoiYzRjZCIsIi4vbmV0d29yay91cGxvYWQtZmlsZS5qcyI6ImJjZWIiLCIuL3BsdWdpbi9fX2ZfXy5qcyI6IjYxYTUiLCIuL3BsdWdpbi9wdXNoLmpzIjoiOWY1NiIsIi4vdWkvY3JlYXRlLWFuaW1hdGlvbi5qcyI6ImEyZjYiLCIuL3VpL2NyZWF0ZS1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIuanMiOiJhNmYyIiwiLi91aS9jcmVhdGUtbWVkaWEtcXVlcnktb2JzZXJ2ZXIuanMiOiJhODc0IiwiLi91aS9jcmVhdGUtc2VsZWN0b3ItcXVlcnkuanMiOiI4Mzc5IiwiLi91aS9sb2FkLWZvbnQtZmFjZS5qcyI6ImZkY2QiLCIuL3VpL2xvY2FsZS5qcyI6ImViZGEiLCIuL3VpL3BhZ2Utc2Nyb2xsLXRvLmpzIjoiMzMxMyIsIi4vdWkvc2V0LXBhZ2UtbWV0YS5qcyI6ImJlOTIiLCIuL3VpL3RhYi1iYXIuanMiOiJlODdmIiwiLi91aS93aW5kb3cuanMiOiJjY2RmIn07ZnVuY3Rpb24gaSh0KXt2YXIgZT1vKHQpO3JldHVybiBuKGUpfWZ1bmN0aW9uIG8odCl7aWYoIW4ubyhyLHQpKXt2YXIgZT1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIit0KyInIik7dGhyb3cgZS5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixlfXJldHVybiByW3RdfWkua2V5cz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhyKX0saS5yZXNvbHZlPW8sdC5leHBvcnRzPWksaS5pZD0iMWZlOSJ9LDIwNjY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInVuaS1zd2lwZXItaXRlbSIsdC5fZyh7fSx0LiRsaXN0ZW5lcnMpLFt0Ll90KCJkZWZhdWx0IildLDIpfSxpPVtdLG89e25hbWU6IlN3aXBlckl0ZW0iLHByb3BzOntpdGVtSWQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy4kZWw7dC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHQuc3R5bGUud2lkdGg9IjEwMCUiLHQuc3R5bGUuaGVpZ2h0PSIxMDAlIjt2YXIgZT10aGlzLiR2bm9kZS5fY2FsbGJhY2tzO2UmJmUuZm9yRWFjaCgoZnVuY3Rpb24odCl7dCgpfSkpfX0sYT1vLHM9KG4oIjk1YmQiKSxuKCI4ODQ0IikpLGM9T2JqZWN0KHNbImEiXSkoYSxyLGksITEsbnVsbCxudWxsLG51bGwpO2VbImRlZmF1bHQiXT1jLmV4cG9ydHN9LCIyMTFmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXtuLmQoZSwidXBsb2FkRmlsZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSk7dmFyIHI9bigiYmRlZSIpO2Z1bmN0aW9uIGkodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gYSh0LGUsbil7cmV0dXJuIGUmJm8odC5wcm90b3R5cGUsZSksbiYmbyh0LG4pLHR9ZnVuY3Rpb24gcyh0LGUsbil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1uLHR9dmFyIGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7aSh0aGlzLHQpLHModGhpcywiX3hociIsdm9pZCAwKSxzKHRoaXMsIl9pc0Fib3J0Iix2b2lkIDApLHModGhpcywiX2NhbGxiYWNrcyIsW10pLHRoaXMuX3hocj1lLHRoaXMuX2NhbGxiYWNrSWQ9bn1yZXR1cm4gYSh0LFt7a2V5OiJvblByb2dyZXNzVXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXsiZnVuY3Rpb24iPT09dHlwZW9mIHQmJnRoaXMuX2NhbGxiYWNrcy5wdXNoKHQpfX0se2tleToib2ZmUHJvZ3Jlc3NVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2NhbGxiYWNrcy5pbmRleE9mKHQpO2U+PTAmJnRoaXMuX2NhbGxiYWNrcy5zcGxpY2UoZSwxKX19LHtrZXk6ImFib3J0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2lzQWJvcnQ9ITAsdGhpcy5feGhyJiYodGhpcy5feGhyLmFib3J0KCksZGVsZXRlIHRoaXMuX3hocil9fV0pLHR9KCk7ZnVuY3Rpb24gdShlLG4pe3ZhciBpPWUudXJsLG89ZS5maWxlLGE9ZS5maWxlUGF0aCxzPWUubmFtZSx1PWUuZmlsZXMsbD1lLmhlYWRlcixmPWUuZm9ybURhdGEsZD1lLnRpbWVvdXQsaD12b2lkIDA9PT1kP19fdW5pQ29uZmlnLm5ldHdvcmtUaW1lb3V0JiZfX3VuaUNvbmZpZy5uZXR3b3JrVGltZW91dC51cGxvYWRGaWxlfHw2ZTQ6ZCxwPXQsdj1wLmludm9rZUNhbGxiYWNrSGFuZGxlcixnPW5ldyBjKG51bGwsbik7ZnVuY3Rpb24gbSh0KXt2YXIgZSxyPW5ldyBYTUxIdHRwUmVxdWVzdCxvPW5ldyBGb3JtRGF0YTtPYmplY3Qua2V5cyhmKS5mb3JFYWNoKChmdW5jdGlvbih0KXtvLmFwcGVuZCh0LGZbdF0pfSkpLE9iamVjdC52YWx1ZXModSkuZm9yRWFjaCgoZnVuY3Rpb24oZSxuKXt2YXIgcj1lLm5hbWUsaT10W25dO28uYXBwZW5kKHJ8fCJmaWxlIixpLGkubmFtZXx8ImZpbGUtIi5jb25jYXQoRGF0ZS5ub3coKSkpfSkpLHIub3BlbigiUE9TVCIsaSksT2JqZWN0LmtleXMobCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ci5zZXRSZXF1ZXN0SGVhZGVyKHQsbFt0XSl9KSksci51cGxvYWQub25wcm9ncmVzcz1mdW5jdGlvbih0KXtnLl9jYWxsYmFja3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49dC5sb2FkZWQscj10LnRvdGFsLGk9TWF0aC5yb3VuZChuL3IqMTAwKTtlKHtwcm9ncmVzczppLHRvdGFsQnl0ZXNTZW50Om4sdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kOnJ9KX0pKX0sci5vbmVycm9yPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGUpLHYobix7ZXJyTXNnOiJ1cGxvYWRGaWxlOmZhaWwifSl9LHIub25hYm9ydD1mdW5jdGlvbigpe2NsZWFyVGltZW91dChlKSx2KG4se2Vyck1zZzoidXBsb2FkRmlsZTpmYWlsIGFib3J0In0pfSxyLm9ubG9hZD1mdW5jdGlvbigpe2NsZWFyVGltZW91dChlKTt2YXIgdD1yLnN0YXR1czt2KG4se2Vyck1zZzoidXBsb2FkRmlsZTpvayIsc3RhdHVzQ29kZTp0LGRhdGE6ci5yZXNwb25zZVRleHR8fHIucmVzcG9uc2V9KX0sZy5faXNBYm9ydD92KG4se2Vyck1zZzoidXBsb2FkRmlsZTpmYWlsIGFib3J0In0pOihlPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ci51cGxvYWQub25wcm9ncmVzcz1yLm9ubG9hZD1yLm9uYWJvcnQ9ci5vbmVycm9yPW51bGwsZy5hYm9ydCgpLHYobix7ZXJyTXNnOiJ1cGxvYWRGaWxlOmZhaWwgdGltZW91dCJ9KX0pLGgpLHIuc2VuZChvKSxnLl94aHI9cil9cmV0dXJuIEFycmF5LmlzQXJyYXkodSkmJnUubGVuZ3RofHwodT1be25hbWU6cyxmaWxlOm8sdXJpOmF9XSksUHJvbWlzZS5hbGwodS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlsZSxuPXQudXJpO3JldHVybiBlIGluc3RhbmNlb2YgQmxvYj9Qcm9taXNlLnJlc29sdmUoT2JqZWN0KHJbImEiXSkoZSkpOk9iamVjdChyWyJmIl0pKG4pfSkpKS50aGVuKG0pLmNhdGNoKChmdW5jdGlvbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dihuLHtlcnJNc2c6InVwbG9hZEZpbGU6ZmFpbCBmaWxlIGVycm9yIn0pfSksMCl9KSksZ319LmNhbGwodGhpcyxuKCIyYzlmIikpfSwiMjFmNSI6ZnVuY3Rpb24odCxlLG4pe30sMjIxNDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXtuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHl9KSksbi5kKGUsImIiLChmdW5jdGlvbigpe3JldHVybiBffSkpLG4uZChlLCJkIiwoZnVuY3Rpb24oKXtyZXR1cm4gd30pKSxuLmQoZSwiYyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGt9KSk7dmFyIHI9bigiMzQwZCIpLGk9bigiNzFhNCIpLG89bigiZDMzNCIpLGE9bigiMDA3MSIpLHM9bigiOGI4MiIpLGM9bigiNDFjYiIpO2Z1bmN0aW9uIHUodCxlLG4pe3ZhciByPSIiLmNvbmNhdChlLCI6ZmFpbCAiKS5jb25jYXQodCk7aWYoLTE9PT1uKXRocm93IG5ldyBFcnJvcihyKTtyZXR1cm4ibnVtYmVyIj09PXR5cGVvZiBuJiZ5KG4se2Vyck1zZzpyfSksITF9dmFyIGw9W3tuYW1lOiJjYWxsYmFjayIsdHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMH1dLGY9WyJiZWZvcmVWYWxpZGF0ZSIsImJlZm9yZUFsbCIsImJlZm9yZVN1Y2Nlc3MiXTtmdW5jdGlvbiBkKHQsZSxuKXt2YXIgaT1zWyJhIl1bdF07aWYoIWkmJk9iamVjdChvWyJhIl0pKHQpJiYoaT1sKSxpKXtpZihBcnJheS5pc0FycmF5KGkpJiZBcnJheS5pc0FycmF5KGUpKXt2YXIgYT1PYmplY3QuY3JlYXRlKG51bGwpLGQ9T2JqZWN0LmNyZWF0ZShudWxsKSxoPWUubGVuZ3RoO2kuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXthW3QubmFtZV09dCxoPm4mJihkW3QubmFtZV09ZVtuXSl9KSksaT1hLGU9ZH1pZihPYmplY3QoclsiayJdKShpLmJlZm9yZVZhbGlkYXRlKSl7dmFyIHA9aS5iZWZvcmVWYWxpZGF0ZShlKTtpZihwKXJldHVybiB1KHAsdCxuKX1mb3IodmFyIHY9T2JqZWN0LmtleXMoaSksZz0wO2c8di5sZW5ndGg7ZysrKWlmKC0xPT09Zi5pbmRleE9mKHZbZ10pKXt2YXIgbT1PYmplY3QoY1siYSJdKSh2W2ddLGksZSk7aWYobSlyZXR1cm4gdShtLHQsbil9fXJldHVybiEwfXZhciBoPTEscD17fTtmdW5jdGlvbiB2KHQsZSl7dmFyIG49aCsrLHI9ImFwaS4iK3QrIi4iK247cmV0dXJuIHBbbl09e25hbWU6cixrZWVwQWxpdmU6ITAsY2FsbGJhY2s6ZX0sbn1mdW5jdGlvbiBnKHQsZSl7Zm9yKHZhciBuIGluIHApe3ZhciByPXBbbl07aWYoci5uYW1lLnN0YXJ0c1dpdGgoImFwaS4iK3QucmVwbGFjZSgvXm9mZi8sIm9uIikpJiZyLmNhbGxiYWNrPT09ZSlyZXR1cm4gZGVsZXRlIHBbbl0sTnVtYmVyKG4pfXJldHVybiJmYWlsIn1mdW5jdGlvbiBtKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtpZighT2JqZWN0KHJbImwiXSkoZSkpcmV0dXJue3BhcmFtczplfTtlPU9iamVjdC5hc3NpZ24oe30sZSk7dmFyIG89T2JqZWN0KGFbImEiXSkoZSkscz1vLnN1Y2Nlc3MsYz1vLmZhaWwsdT1vLmNhbmNlbCxsPW8uY29tcGxldGUsZj1PYmplY3QoclsiayJdKShzKSxkPU9iamVjdChyWyJrIl0pKGMpLHY9T2JqZWN0KHJbImsiXSkodSksZz1PYmplY3QoclsiayJdKShsKTtpZighZiYmIWQmJiF2JiYhZylyZXR1cm57cGFyYW1zOmV9O3ZhciBtPXt9O2Zvcih2YXIgYiBpbiBuKXt2YXIgeT1uW2JdO09iamVjdChyWyJrIl0pKHkpJiYobVtiXT1PYmplY3QoaVsiYiJdKSh5KSl9dmFyIF89bS5iZWZvcmVTdWNjZXNzLHc9bS5hZnRlclN1Y2Nlc3MsUz1tLmJlZm9yZUZhaWwseD1tLmFmdGVyRmFpbCxrPW0uYmVmb3JlQ2FuY2VsLEM9bS5hZnRlckNhbmNlbCxUPW0uYmVmb3JlQWxsLE89bS5hZnRlckFsbCxBPWgrKyxFPSJhcGkuIit0KyIuIitBLGo9ZnVuY3Rpb24obil7aWYobi5lcnJNc2c9bi5lcnJNc2d8fHQrIjpvayIsLTEhPT1uLmVyck1zZy5pbmRleE9mKCI6b2siKSluLmVyck1zZz10KyI6b2siO2Vsc2UgaWYoLTEhPT1uLmVyck1zZy5pbmRleE9mKCI6Y2FuY2VsIikpbi5lcnJNc2c9dCsiOmNhbmNlbCI7ZWxzZSBpZigtMSE9PW4uZXJyTXNnLmluZGV4T2YoIjpmYWlsIikpe3ZhciBpPSIiLG89bi5lcnJNc2cuaW5kZXhPZigiICIpO28+LTEmJihpPW4uZXJyTXNnLnN1YnN0cihvKSksbi5lcnJNc2c9dCsiOmZhaWwiK2l9T2JqZWN0KHJbImsiXSkoVCkmJlQobik7dmFyIGE9bi5lcnJNc2c7MD09PWEuaW5kZXhPZih0KyI6b2siKT8oT2JqZWN0KHJbImsiXSkoXykmJl8obixlKSxmJiZzKG4pLE9iamVjdChyWyJrIl0pKHcpJiZ3KG4pKTowPT09YS5pbmRleE9mKHQrIjpjYW5jZWwiKT8obi5lcnJNc2c9bi5lcnJNc2cucmVwbGFjZSh0KyI6Y2FuY2VsIix0KyI6ZmFpbCBjYW5jZWwiKSxkJiZjKG4pLE9iamVjdChyWyJrIl0pKGspJiZrKG4pLHYmJnUobiksT2JqZWN0KHJbImsiXSkoQykmJkMobikpOjA9PT1hLmluZGV4T2YodCsiOmZhaWwiKSYmKE9iamVjdChyWyJrIl0pKFMpJiZTKG4pLGQmJmMobiksT2JqZWN0KHJbImsiXSkoeCkmJngobikpLGcmJmwobiksT2JqZWN0KHJbImsiXSkoTykmJk8obil9O3JldHVybiBwW0FdPXtuYW1lOkUsY2FsbGJhY2s6an0se3BhcmFtczplLGNhbGxiYWNrSWQ6QX19ZnVuY3Rpb24gYih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30saT1tKHQsZSxuKSxvPWkucGFyYW1zLGE9aS5jYWxsYmFja0lkO3JldHVybiBPYmplY3QoclsibCJdKShvKSYmIWQodCxvLGEpP3twYXJhbXM6byxjYWxsYmFja0lkOiExfTp7cGFyYW1zOm8sY2FsbGJhY2tJZDphfX1mdW5jdGlvbiB5KHQsZSxuKXtpZigibnVtYmVyIj09PXR5cGVvZiB0KXt2YXIgcj1wW3RdO2lmKHIpcmV0dXJuIHIua2VlcEFsaXZlfHxkZWxldGUgcFt0XSxyLmNhbGxiYWNrKGUsbil9cmV0dXJuIGV9ZnVuY3Rpb24gXyh0KXtkZWxldGUgcFt0XX1mdW5jdGlvbiB3KGUpe3JldHVybiBmdW5jdGlvbihuKXt0LmVycm9yKCJBUEkgYCIrZSsiYCBpcyBub3QgeWV0IGltcGxlbWVudGVkIil9fWZ1bmN0aW9uIFModCxlKXt2YXIgbj1zWyJhIl1bdF07biYmKE9iamVjdChyWyJrIl0pKG4uYmVmb3JlQWxsKSYmKGUuYmVmb3JlQWxsPW4uYmVmb3JlQWxsKSxPYmplY3QoclsiayJdKShuLmJlZm9yZVN1Y2Nlc3MpJiYoZS5iZWZvcmVTdWNjZXNzPW4uYmVmb3JlU3VjY2VzcykpfXZhciB4PVsiZ2V0UHVzaENsaWVudElkIiwib25QdXNoTWVzc2FnZSIsIm9mZlB1c2hNZXNzYWdlIl07ZnVuY3Rpb24gayh0LGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtyZXR1cm4geC5pbmRleE9mKHQpPi0xfHwhT2JqZWN0KHJbImsiXSkoZSk/ZTooUyh0LG4pLGZ1bmN0aW9uKCl7Zm9yKHZhciBpPWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkoaSkscz0wO3M8aTtzKyspYVtzXT1hcmd1bWVudHNbc107aWYoT2JqZWN0KG9bImIiXSkodCkpe2lmKGQodCxhLC0xKSlyZXR1cm4gZS5hcHBseShudWxsLGEpfWVsc2UgaWYoT2JqZWN0KG9bImEiXSkodCkpe2lmKGQodCxhLC0xKSlyZXR1cm4gZSgodC5zdGFydHNXaXRoKCJvZmYiKT9nOnYpKHQsYVswXSkpfWVsc2V7dmFyIGM9e307YS5sZW5ndGgmJihjPWFbMF0pO3ZhciB1LGw9Yih0LGMsbiksZj1sLnBhcmFtcyxoPWwuY2FsbGJhY2tJZDtpZighMSE9PWgpcmV0dXJuIHU9T2JqZWN0KHJbImsiXSkoZik/ZShoKTplKGYsaCksdSYmIU9iamVjdChvWyJjIl0pKHQpJiYodT15KGgsdSksT2JqZWN0KHJbImwiXSkodSkmJih1LmVyck1zZz11LmVyck1zZ3x8dCsiOm9rIikpLHV9fSl9fSkuY2FsbCh0aGlzLG4oIjQxOGIiKVsiZGVmYXVsdCJdKX0sMjI4ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXt2YXIgcj1uKCIzNDBkIik7ZVsiZGVmYXVsdCJdPXtkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3ByZXZpZXdJbWFnZTp7dmlzaWJsZTohMX19fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0Lm9uKCJvblNob3dQcmV2aWV3SW1hZ2UiLChmdW5jdGlvbih0LG4pe2UucHJldmlld0ltYWdlPU9iamVjdC5hc3NpZ24oe30sdCx7dmlzaWJsZTohMH0pLE9iamVjdChyWyJrIl0pKG4pJiZlLiRuZXh0VGljayhuKX0pKSx0Lm9uKCJvbkNsb3NlUHJldmlld0ltYWdlIiwoZnVuY3Rpb24odCl7ZS5fb25QcmV2aWV3Q2xvc2UoKSxPYmplY3QoclsiayJdKSh0KSYmZS4kbmV4dFRpY2sodCl9KSksdC5vbigib25IaWRlUG9wdXAiLChmdW5jdGlvbih0KXtlLnByZXZpZXdJbWFnZS52aXNpYmxlPSExfSkpfSxtZXRob2RzOntfb25QcmV2aWV3Q2xvc2U6ZnVuY3Rpb24odCl7dGhpcy5wcmV2aWV3SW1hZ2UudmlzaWJsZT0hMX19fX0uY2FsbCh0aGlzLG4oIjJjOWYiKSl9LCIyM2ExIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgcj1uKCIzNDBkIik7ZVsiYSJdPXttb3VudGVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl90b2dnbGVMaXN0ZW5lcnMoInN1YnNjcmliZSIsdGhpcy5pZCksdGhpcy4kd2F0Y2goImlkIiwoZnVuY3Rpb24oZSxuKXt0Ll90b2dnbGVMaXN0ZW5lcnMoInVuc3Vic2NyaWJlIixuLCEwKSx0Ll90b2dnbGVMaXN0ZW5lcnMoInN1YnNjcmliZSIsZSwhMCl9KSl9LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl90b2dnbGVMaXN0ZW5lcnMoInVuc3Vic2NyaWJlIix0aGlzLmlkKSx0aGlzLl9jb250ZXh0SWQmJnRoaXMuX3RvZ2dsZUxpc3RlbmVycygidW5zdWJzY3JpYmUiLHRoaXMuX2NvbnRleHRJZCl9LG1ldGhvZHM6e190b2dnbGVMaXN0ZW5lcnM6ZnVuY3Rpb24oZSxuLGkpe2kmJiFufHxPYmplY3QoclsiayJdKSh0aGlzLl9oYW5kbGVTdWJzY3JpYmUpJiZ0W2VdKHRoaXMuJHBhZ2UuaWQrIi0iK3RoaXMuJG9wdGlvbnMubmFtZS5yZXBsYWNlKC9WVW5pKFtBLVpdKS8sIiQxIikudG9Mb3dlckNhc2UoKSsiLSIrbix0aGlzLl9oYW5kbGVTdWJzY3JpYmUpfSxfZ2V0Q29udGV4dEluZm86ZnVuY3Rpb24oKXt2YXIgdD0iY29udGV4dC0iLmNvbmNhdCh0aGlzLl91aWQpO3JldHVybiB0aGlzLl9jb250ZXh0SWR8fCh0aGlzLl90b2dnbGVMaXN0ZW5lcnMoInN1YnNjcmliZSIsdCksdGhpcy5fY29udGV4dElkPXQpLHtuYW1lOnRoaXMuJG9wdGlvbnMubmFtZS5yZXBsYWNlKC9WVW5pKFtBLVpdKS8sIiQxIikudG9Mb3dlckNhc2UoKSxpZDp0LHBhZ2U6dGhpcy4kcGFnZS5pZH19fX19KS5jYWxsKHRoaXMsbigiMzFkMiIpKX0sMjQzMjpmdW5jdGlvbih0LGUsbil7dmFyIHI9eyIuL2FjdGlvbi1zaGVldC5qcyI6IjllMzAiLCIuL2luZGV4LmpzIjoiNDlkZiIsIi4vbW9kYWwuanMiOiI0ZmNiIiwiLi9wb3B1cC5qcyI6ImEyMDIiLCIuL3ByZXZpZXctaW1hZ2UuanMiOiIyMjg4IiwiLi90b2FzdC5qcyI6IjFkMmUiLCIuL3RyYW5zaXRpb24uanMiOiJhNDA5In07ZnVuY3Rpb24gaSh0KXt2YXIgZT1vKHQpO3JldHVybiBuKGUpfWZ1bmN0aW9uIG8odCl7aWYoIW4ubyhyLHQpKXt2YXIgZT1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIit0KyInIik7dGhyb3cgZS5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixlfXJldHVybiByW3RdfWkua2V5cz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhyKX0saS5yZXNvbHZlPW8sdC5leHBvcnRzPWksaS5pZD0iMjQzMiJ9LCIyNGYyIjpmdW5jdGlvbih0LGUsbil7fSwyNjI2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe24uZChlLCJiIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwiYyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSksbi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBjfSkpO3ZhciByPW4oIjAzNzIiKSxpPW4oIjk3YWYiKSxvPSExO2Z1bmN0aW9uIGEoKXtyZXR1cm4gb31mdW5jdGlvbiBzKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSxuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0scj1bXSxpPWEoKTtpZighaSlyZXR1cm4gbiYmdC5lcnJvcigiYXBwIGlzIG5vdCByZWFkeSIpLFtdO3ZhciBvPWkuJGNoaWxkcmVuWzBdO2lmKG8mJm8uJGNoaWxkcmVuLmxlbmd0aCl7dmFyIHM9by4kY2hpbGRyZW4uZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIlRhYkJhciI9PT10LiRvcHRpb25zLm5hbWV9KSksYz1vLiRjaGlsZHJlbi5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4iTGF5b3V0Ij09PXQuJG9wdGlvbnMubmFtZX0pKTtjJiYobz1jKSxvLiRjaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbih0KXtpZihzIT09dCYmdC4kY2hpbGRyZW4ubGVuZ3RoJiYiUGFnZSI9PT10LiRjaGlsZHJlblswXS4kb3B0aW9ucy5uYW1lJiZ0LiRjaGlsZHJlblswXS4kc2xvdHMucGFnZSl7dmFyIG49dC4kY2hpbGRyZW5bMF0uJGNoaWxkcmVuLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiJQYWdlQm9keSI9PT10LiRvcHRpb25zLm5hbWV9KSksbz1uJiZuLiRjaGlsZHJlbi5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4hIXQuJHBhZ2V9KSk7aWYobyl7dmFyIGE9ITA7IWUmJnMmJm8uJHBhZ2UmJm8uJHBhZ2UubWV0YS5pc1RhYkJhciYmKGkuJHJvdXRlLm1ldGEmJmkuJHJvdXRlLm1ldGEuaXNUYWJCYXI/aS4kcm91dGUucGF0aCE9PW8uJHBhZ2UucGF0aCYmKGE9ITEpOnMuX19wYXRoX18hPT1vLiRwYWdlLnBhdGgmJihhPSExKSksYSYmci5wdXNoKG8pfX19KSl9dmFyIHU9ci5sZW5ndGg7aWYodT4xKXt2YXIgbD1yW3UtMV07bC4kcGFnZS5wYXRoIT09aS4kcm91dGUucGF0aCYmci5zcGxpY2UodS0xLDEpfXJldHVybiByfWZ1bmN0aW9uIGModCxlLG4pe289ZSxvLiR2bT1lLG8uZ2xvYmFsRGF0YT1vLiRvcHRpb25zLmdsb2JhbERhdGF8fHt9LE9iamVjdChyWyJkIl0pKHQsbyksT2JqZWN0KGlbImEiXSkobyxuKX19KS5jYWxsKHRoaXMsbigiNDE4YiIpWyJkZWZhdWx0Il0pfSwiMjdkMiI6ZnVuY3Rpb24odCxlLG4pe30sIjI4M2QiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYjYyYSIpLGk9bi5uKHIpO2kuYX0sIjI4NmUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe24uZChlLCJnZXRGaWxlSW5mbyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSk7dmFyIHI9bigiYmRlZSIpLGk9dCxvPWkuaW52b2tlQ2FsbGJhY2tIYW5kbGVyO2Z1bmN0aW9uIGEoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sZT10LmZpbGVQYXRoLG49YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDA7T2JqZWN0KHJbImYiXSkoZSkudGhlbigoZnVuY3Rpb24odCl7byhuLHtlcnJNc2c6ImdldEZpbGVJbmZvOm9rIixzaXplOnQuc2l6ZX0pfSkpLmNhdGNoKChmdW5jdGlvbih0KXtvKG4se2Vyck1zZzoiZ2V0RmlsZUluZm86ZmFpbCAiK3QubWVzc2FnZX0pfSkpfX0uY2FsbCh0aGlzLG4oIjJjOWYiKSl9LCIyYTc4IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbigidW5pLWxhYmVsIix0Ll9nKHtjbGFzczp7InVuaS1sYWJlbC1wb2ludGVyIjp0LnBvaW50ZXJ9LG9uOntjbGljazp0Ll9vbkNsaWNrfX0sdC4kbGlzdGVuZXJzKSxbdC5fdCgiZGVmYXVsdCIpXSwyKX0saT1bXSxvPW4oIjlmNjIiKSxhPW9bImEiXSxzPShuKCJkNjM4IiksbigiODg0NCIpKSxjPU9iamVjdChzWyJhIl0pKGEscixpLCExLG51bGwsbnVsbCxudWxsKTtlWyJkZWZhdWx0Il09Yy5leHBvcnRzfSwiMmFjZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7dmFyIHI9bigiMzQwZCIpO2VbImEiXT17cHJvcHM6e2lkOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifX0sY3JlYXRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fYWRkTGlzdGVuZXJzKHRoaXMuaWQpLHRoaXMuJHdhdGNoKCJpZCIsKGZ1bmN0aW9uKGUsbil7dC5fcmVtb3ZlTGlzdGVuZXJzKG4sITApLHQuX2FkZExpc3RlbmVycyhlLCEwKX0pKX0sYmVmb3JlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX3JlbW92ZUxpc3RlbmVycyh0aGlzLmlkKX0sbWV0aG9kczp7X2FkZExpc3RlbmVyczpmdW5jdGlvbihlLG4pe3ZhciBpPXRoaXM7aWYoIW58fGUpe3ZhciBvPXRoaXMuJG9wdGlvbnMubGlzdGVuZXJzO09iamVjdChyWyJsIl0pKG8pJiZPYmplY3Qua2V5cyhvKS5mb3JFYWNoKChmdW5jdGlvbihyKXtuPzAhPT1yLmluZGV4T2YoIkAiKSYmMCE9PXIuaW5kZXhPZigidW5pLSIpJiZ0Lm9uKCJ1bmktIi5jb25jYXQociwiLSIpLmNvbmNhdChpLiRwYWdlLmlkLCItIikuY29uY2F0KGUpLGlbb1tyXV0pOjA9PT1yLmluZGV4T2YoIkAiKT9pLiRvbigidW5pLSIuY29uY2F0KHIuc3Vic3RyKDEpKSxpW29bcl1dKTowPT09ci5pbmRleE9mKCJ1bmktIik/dC5vbihyLGlbb1tyXV0pOmUmJnQub24oInVuaS0iLmNvbmNhdChyLCItIikuY29uY2F0KGkuJHBhZ2UuaWQsIi0iKS5jb25jYXQoZSksaVtvW3JdXSl9KSl9fSxfcmVtb3ZlTGlzdGVuZXJzOmZ1bmN0aW9uKGUsbil7dmFyIGk9dGhpcztpZighbnx8ZSl7dmFyIG89dGhpcy4kb3B0aW9ucy5saXN0ZW5lcnM7T2JqZWN0KHJbImwiXSkobykmJk9iamVjdC5rZXlzKG8pLmZvckVhY2goKGZ1bmN0aW9uKHIpe24/MCE9PXIuaW5kZXhPZigiQCIpJiYwIT09ci5pbmRleE9mKCJ1bmktIikmJnQub2ZmKCJ1bmktIi5jb25jYXQociwiLSIpLmNvbmNhdChpLiRwYWdlLmlkLCItIikuY29uY2F0KGUpLGlbb1tyXV0pOjA9PT1yLmluZGV4T2YoIkAiKT9pLiRvZmYoInVuaS0iLmNvbmNhdChyLnN1YnN0cigxKSksaVtvW3JdXSk6MD09PXIuaW5kZXhPZigidW5pLSIpP3Qub2ZmKHIsaVtvW3JdXSk6ZSYmdC5vZmYoInVuaS0iLmNvbmNhdChyLCItIikuY29uY2F0KGkuJHBhZ2UuaWQsIi0iKS5jb25jYXQoZSksaVtvW3JdXSl9KSl9fX19fSkuY2FsbCh0aGlzLG4oIjMxZDIiKSl9LCIyYmUwIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKTt2YXIgcj1uKCIzNDBkIiksaT1uKCI5MDllIik7ZnVuY3Rpb24gbygpe3RoaXMuJGRpc3BhdGNoKCJGb3JtIiwidW5pLWZvcm0tZ3JvdXAtdXBkYXRlIix7dHlwZToiYWRkIix2bTp0aGlzfSl9ZnVuY3Rpb24gYSgpe3RoaXMuJGRpc3BhdGNoKCJGb3JtIiwidW5pLWZvcm0tZ3JvdXAtdXBkYXRlIix7dHlwZToicmVtb3ZlIix2bTp0aGlzfSl9dmFyIHM9e25hbWU6InVuaTovL2Zvcm0tZmllbGQiLGluaXQ6ZnVuY3Rpb24odCxlKXtlLmNvbnN0cnVjdG9yLm9wdGlvbnMucHJvcHMmJmUuY29uc3RydWN0b3Iub3B0aW9ucy5wcm9wcy5uYW1lJiZlLmNvbnN0cnVjdG9yLm9wdGlvbnMucHJvcHMudmFsdWV8fChlLmNvbnN0cnVjdG9yLm9wdGlvbnMucHJvcHN8fChlLmNvbnN0cnVjdG9yLm9wdGlvbnMucHJvcHM9e30pLGUuY29uc3RydWN0b3Iub3B0aW9ucy5wcm9wcy5uYW1lfHwoZS5jb25zdHJ1Y3Rvci5vcHRpb25zLnByb3BzLm5hbWU9dC5wcm9wcy5uYW1lPXt0eXBlOlN0cmluZ30pLGUuY29uc3RydWN0b3Iub3B0aW9ucy5wcm9wcy52YWx1ZXx8KGUuY29uc3RydWN0b3Iub3B0aW9ucy5wcm9wcy52YWx1ZT10LnByb3BzLnZhbHVlPXt0eXBlOm51bGx9KSksdC5wcm9wc0RhdGF8fCh0LnByb3BzRGF0YT17fSk7dmFyIG49ZS4kdm5vZGU7aWYobiYmbi5kYXRhJiZuLmRhdGEuYXR0cnMmJihPYmplY3QoclsiaSJdKShuLmRhdGEuYXR0cnMsIm5hbWUiKSYmKHQucHJvcHNEYXRhLm5hbWU9bi5kYXRhLmF0dHJzLm5hbWUpLE9iamVjdChyWyJpIl0pKG4uZGF0YS5hdHRycywidmFsdWUiKSYmKHQucHJvcHNEYXRhLnZhbHVlPW4uZGF0YS5hdHRycy52YWx1ZSkpLCFlLmNvbnN0cnVjdG9yLm9wdGlvbnMubWV0aG9kc3x8IWUuY29uc3RydWN0b3Iub3B0aW9ucy5tZXRob2RzLl9nZXRGb3JtRGF0YSl7ZS5jb25zdHJ1Y3Rvci5vcHRpb25zLm1ldGhvZHN8fChlLmNvbnN0cnVjdG9yLm9wdGlvbnMubWV0aG9kcz17fSksdC5tZXRob2RzfHwodC5tZXRob2RzPXt9KTt2YXIgcz17X2dldEZvcm1EYXRhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZT97a2V5OnRoaXMubmFtZSx2YWx1ZTp0aGlzLnZhbHVlfTp7fX0sX3Jlc2V0Rm9ybURhdGE6ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPSIifX07T2JqZWN0LmFzc2lnbihlLmNvbnN0cnVjdG9yLm9wdGlvbnMubWV0aG9kcyxzKSxPYmplY3QuYXNzaWduKHQubWV0aG9kcyxzKSxPYmplY3QuYXNzaWduKGUuY29uc3RydWN0b3Iub3B0aW9ucy5tZXRob2RzLGlbImEiXS5tZXRob2RzKSxPYmplY3QuYXNzaWduKHQubWV0aG9kcyxpWyJhIl0ubWV0aG9kcyk7dmFyIGM9dC5jcmVhdGVkO2UuY29uc3RydWN0b3Iub3B0aW9ucy5jcmVhdGVkPXQuY3JlYXRlZD1jP1tdLmNvbmNhdChvLGMpOltvXTt2YXIgdT10LmJlZm9yZURlc3Ryb3k7ZS5jb25zdHJ1Y3Rvci5vcHRpb25zLmJlZm9yZURlc3Ryb3k9dC5iZWZvcmVEZXN0cm95PXU/W10uY29uY2F0KGEsdSk6W2FdfX19O2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bix0fXZhciB1PWMoe30scy5uYW1lLHMpO2Z1bmN0aW9uIGwodCxlKXt0LmJlaGF2aW9ycy5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj11W25dO3ImJnIuaW5pdCh0LGUpfSkpfX0sIjJjOWYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSksbi5kKGUsIm9mZiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSksbi5kKGUsIm9uY2UiLChmdW5jdGlvbigpe3JldHVybiBsfSkpLG4uZChlLCJlbWl0IiwoZnVuY3Rpb24oKXtyZXR1cm4gZn0pKSxuLmQoZSwic3Vic2NyaWJlIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxuLmQoZSwidW5zdWJzY3JpYmUiLChmdW5jdGlvbigpe3JldHVybiBofSkpLG4uZChlLCJzdWJzY3JpYmVIYW5kbGVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gcH0pKTt2YXIgcj1uKCI5NTFjIiksaT1uLm4ociksbz1uKCIyMjE0Iik7bi5kKGUsImludm9rZUNhbGxiYWNrSGFuZGxlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIG9bImEiXX0pKSxuLmQoZSwicmVtb3ZlQ2FsbGJhY2tIYW5kbGVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gb1siYiJdfSkpO3ZhciBhPW4oIjg5ZWMiKTtuLmQoZSwicHVibGlzaEhhbmRsZXIiLChmdW5jdGlvbigpe3JldHVybiBhWyJiIl19KSk7dmFyIHM9bmV3IGkuYSxjPXMuJG9uLmJpbmQocyksdT1zLiRvZmYuYmluZChzKSxsPXMuJG9uY2UuYmluZChzKSxmPXMuJGVtaXQuYmluZChzKTtmdW5jdGlvbiBkKHQsZSl7cmV0dXJuIGMoInZpZXcuIit0LGUpfWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gdSgidmlldy4iK3QsZSl9ZnVuY3Rpb24gcCh0LGUsbil7cmV0dXJuIGYoInZpZXcuIit0LGUsbil9fSwiMmQxMCI6ZnVuY3Rpb24odCxlLG4pe30sIjJkYWYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoKXtyZXR1cm4gd2luZG93LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrd2luZG93LmxvY2F0aW9uLmhvc3R9ZnVuY3Rpb24gaShlLG4pe3ZhciBpPWUuc3JjLG89dCxhPW8uaW52b2tlQ2FsbGJhY2tIYW5kbGVyLHM9bmV3IEltYWdlLGM9aTtzLm9ubG9hZD1mdW5jdGlvbigpe2Eobix7ZXJyTXNnOiJnZXRJbWFnZUluZm86b2siLHdpZHRoOnMubmF0dXJhbFdpZHRoLGhlaWdodDpzLm5hdHVyYWxIZWlnaHQscGF0aDowPT09Yy5pbmRleE9mKCIvIik/cigpK2M6Y30pfSxzLm9uZXJyb3I9ZnVuY3Rpb24odCl7YShuLHtlcnJNc2c6ImdldEltYWdlSW5mbzpmYWlsIn0pfSxzLnNyYz1pfW4uZChlLCJnZXRJbWFnZUluZm8iLChmdW5jdGlvbigpe3JldHVybiBpfSkpfS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sIjJlYjEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMGM2MSIpLGk9bi5uKHIpO2kuYX0sIjJmNWMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJURU1QX1BBVEgiLChmdW5jdGlvbigpe3JldHVybiByfSkpO3ZhciByPSIifSwiMzFkMiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsIm9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gZ30pKSxuLmQoZSwib2ZmIiwoZnVuY3Rpb24oKXtyZXR1cm4gbX0pKSxuLmQoZSwib25jZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KSksbi5kKGUsImVtaXQiLChmdW5jdGlvbigpe3JldHVybiB5fSkpLG4uZChlLCJzdWJzY3JpYmUiLChmdW5jdGlvbigpe3JldHVybiBffSkpLG4uZChlLCJ1bnN1YnNjcmliZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHd9KSksbi5kKGUsInN1YnNjcmliZUhhbmRsZXIiLChmdW5jdGlvbigpe3JldHVybiBTfSkpLG4uZChlLCJwdWJsaXNoSGFuZGxlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIHBbImEiXX0pKTt2YXIgcj1uKCI5NTFjIiksaT1uLm4ocik7ZnVuY3Rpb24gbyh0KXt2YXIgZT10LnBhZ2VTdHlsZSxuPXQucm9vdEZvbnRTaXplLHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigidW5pLXBhZ2UtYm9keSIpfHxkb2N1bWVudC5ib2R5O3Iuc2V0QXR0cmlidXRlKCJzdHlsZSIsZSksbiYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmZvbnRTaXplIT09biYmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5mb250U2l6ZT1uKX12YXIgYT1uKCI0OWMyIikscz1uKCJkNjYxIiksYz1uKCJjMDhmIiksdT17c2V0UGFnZU1ldGE6byxyZXF1ZXN0Q29tcG9uZW50SW5mbzphWyJhIl0scmVxdWVzdENvbXBvbmVudE9ic2VydmVyOnNbImIiXSxkZXN0cm95Q29tcG9uZW50T2JzZXJ2ZXI6c1siYSJdLHJlcXVlc3RNZWRpYVF1ZXJ5T2JzZXJ2ZXI6Y1siYiJdLGRlc3Ryb3lNZWRpYVF1ZXJ5T2JzZXJ2ZXI6Y1siYSJdfSxsPW4oIjQ5M2YiKSxmPW4oImZhOTUiKSxkPW4oIjgzZWUiKTtmdW5jdGlvbiBoKHQpe09iamVjdC5rZXlzKHUpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QoZSx1W2VdKX0pKSx0KCJwYWdlU2Nyb2xsVG8iLGxbImMiXSksdCgibG9hZEZvbnRGYWNlIixmWyJhIl0pLE9iamVjdChkWyJhIl0pKHQpfXZhciBwPW4oImE4MDUiKSx2PW5ldyBpLmEsZz12LiRvbi5iaW5kKHYpLG09di4kb2ZmLmJpbmQodiksYj12LiRvbmNlLmJpbmQodikseT12LiRlbWl0LmJpbmQodik7ZnVuY3Rpb24gXyh0LGUpe3JldHVybiBnKCJzZXJ2aWNlLiIrdCxlKX1mdW5jdGlvbiB3KHQsZSl7cmV0dXJuIG0oInNlcnZpY2UuIit0LGUpfWZ1bmN0aW9uIFModCxlLG4pe3koInNlcnZpY2UuIit0LGUsbil9aChfKX0sIjMyYTAiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJjb25uZWN0U29ja2V0IiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxuLmQoZSwic2VuZFNvY2tldE1lc3NhZ2UiLChmdW5jdGlvbigpe3JldHVybiBofSkpLG4uZChlLCJjbG9zZVNvY2tldCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHB9KSksbi5kKGUsIm9uU29ja2V0T3BlbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSksbi5kKGUsIm9uU29ja2V0RXJyb3IiLChmdW5jdGlvbigpe3JldHVybiBnfSkpLG4uZChlLCJvblNvY2tldE1lc3NhZ2UiLChmdW5jdGlvbigpe3JldHVybiBtfSkpLG4uZChlLCJvblNvY2tldENsb3NlIiwoZnVuY3Rpb24oKXtyZXR1cm4gYn0pKTt2YXIgcj1uKCI5MTMxIiksaT1uKCI3NDVhIik7ZnVuY3Rpb24gbyh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGEodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX1mdW5jdGlvbiBzKHQsZSxuKXtyZXR1cm4gZSYmYSh0LnByb3RvdHlwZSxlKSxuJiZhKHQsbiksdH12YXIgYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMuaWQ9ZSx0aGlzLl9jYWxsYmFja3M9e29wZW46W10sY2xvc2U6W10sZXJyb3I6W10sbWVzc2FnZTpbXX0sdGhpcy5DTE9TRUQ9Myx0aGlzLkNMT1NJTkc9Mix0aGlzLkNPTk5FQ1RJTkc9MCx0aGlzLk9QRU49MSx0aGlzLnJlYWR5U3RhdGU9dGhpcy5DTE9TRUR9cmV0dXJuIHModCxbe2tleToic2VuZCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5yZWFkeVN0YXRlIT09dGhpcy5PUEVOJiZ0aGlzLl9jYWxsYmFjayh0LCJzZW5kU29ja2V0TWVzc2FnZTpmYWlsIFdlYlNvY2tldCBpcyBub3QgY29ubmVjdGVkIik7dmFyIGU9T2JqZWN0KGlbImMiXSkoIm9wZXJhdGVTb2NrZXRUYXNrIixPYmplY3QuYXNzaWduKHt9LHQse29wZXJhdGlvblR5cGU6InNlbmQiLHNvY2tldFRhc2tJZDp0aGlzLmlkfSkpLG49ZS5lcnJNc2c7dGhpcy5fY2FsbGJhY2sodCxuLnJlcGxhY2UoIm9wZXJhdGVTb2NrZXRUYXNrIiwic2VuZFNvY2tldE1lc3NhZ2UiKSl9fSx7a2V5OiJjbG9zZSIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5yZWFkeVN0YXRlPXRoaXMuQ0xPU0lORzt2YXIgZT1PYmplY3QoaVsiYyJdKSgib3BlcmF0ZVNvY2tldFRhc2siLE9iamVjdC5hc3NpZ24oe30sdCx7b3BlcmF0aW9uVHlwZToiY2xvc2UiLHNvY2tldFRhc2tJZDp0aGlzLmlkfSkpLG49ZS5lcnJNc2c7dGhpcy5fY2FsbGJhY2sodCxuLnJlcGxhY2UoIm9wZXJhdGVTb2NrZXRUYXNrIiwiY2xvc2VTb2NrZXQiKSl9fSx7a2V5OiJvbk9wZW4iLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX2NhbGxiYWNrcy5vcGVuLnB1c2godCl9fSx7a2V5OiJvbkNsb3NlIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLl9jYWxsYmFja3MuY2xvc2UucHVzaCh0KX19LHtrZXk6Im9uRXJyb3IiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX2NhbGxiYWNrcy5lcnJvci5wdXNoKHQpfX0se2tleToib25NZXNzYWdlIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLl9jYWxsYmFja3MubWVzc2FnZS5wdXNoKHQpfX0se2tleToiX2NhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxlPXQuc3VjY2VzcyxuPXQuZmFpbCxyPXQuY29tcGxldGUsaT1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxvPXtlcnJNc2c6aX07LzpvayQvLnRlc3QoaSk/ImZ1bmN0aW9uIj09PXR5cGVvZiBlJiZlKG8pOiJmdW5jdGlvbiI9PT10eXBlb2YgbiYmbihvKSwiZnVuY3Rpb24iPT09dHlwZW9mIHImJnIobyl9fV0pLHR9KCksdT1PYmplY3QuY3JlYXRlKG51bGwpLGw9W10sZj1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGQodCxlKXt2YXIgbj1PYmplY3QoaVsiYyJdKSgiY3JlYXRlU29ja2V0VGFzayIsdCksbz1uLnNvY2tldFRhc2tJZCxhPW5ldyBjKG8pO3JldHVybiB1W29dPWEsbC5wdXNoKGEpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7T2JqZWN0KHJbImEiXSkoZSx7ZXJyTXNnOiJjb25uZWN0U29ja2V0Om9rIn0pfSksMCksYX1mdW5jdGlvbiBoKHQsZSl7dmFyIG49bFswXTtpZihuJiZuLnJlYWR5U3RhdGU9PT1uLk9QRU4pcmV0dXJuIE9iamVjdChpWyJjIl0pKCJvcGVyYXRlU29ja2V0VGFzayIsT2JqZWN0LmFzc2lnbih7fSx0LHtvcGVyYXRpb25UeXBlOiJzZW5kIixzb2NrZXRUYXNrSWQ6bi5pZH0pKTtPYmplY3QoclsiYSJdKShlLHtlcnJNc2c6InNlbmRTb2NrZXRNZXNzYWdlOmZhaWwgV2ViU29ja2V0IGlzIG5vdCBjb25uZWN0ZWQifSl9ZnVuY3Rpb24gcCh0LGUpe3ZhciBuPWxbMF07aWYobilyZXR1cm4gbi5yZWFkeVN0YXRlPW4uQ0xPU0lORyxPYmplY3QoaVsiYyJdKSgib3BlcmF0ZVNvY2tldFRhc2siLE9iamVjdC5hc3NpZ24oe30sdCx7b3BlcmF0aW9uVHlwZToiY2xvc2UiLHNvY2tldFRhc2tJZDpuLmlkfSkpO09iamVjdChyWyJhIl0pKGUse2Vyck1zZzoiY2xvc2VTb2NrZXQ6ZmFpbCBXZWJTb2NrZXQgaXMgbm90IGNvbm5lY3RlZCJ9KX1mdW5jdGlvbiB2KHQpe2Yub3Blbj10fWZ1bmN0aW9uIGcodCl7Zi5lcnJvcj10fWZ1bmN0aW9uIG0odCl7Zi5tZXNzYWdlPXR9ZnVuY3Rpb24gYih0KXtmLmNsb3NlPXR9T2JqZWN0KGlbImQiXSkoIm9uU29ja2V0VGFza1N0YXRlQ2hhbmdlIiwoZnVuY3Rpb24odCl7dmFyIGU9dC5zb2NrZXRUYXNrSWQsbj10LnN0YXRlLGk9dC5kYXRhLG89dC5jb2RlLGE9dC5yZWFzb24scz0odC5lcnJNc2csdVtlXSk7aWYocyl7dmFyIGM9Im1lc3NhZ2UiPT09bj97ZGF0YTppfToiY2xvc2UiPT09bj97Y29kZTpvLHJlYXNvbjphfTp7fTtpZigib3BlbiI9PT1uJiYocy5yZWFkeVN0YXRlPXMuT1BFTikscz09PWxbMF0mJmZbbl0mJk9iamVjdChyWyJhIl0pKGZbbl0sYyksImVycm9yIj09PW58fCJjbG9zZSI9PT1uKXtzLnJlYWR5U3RhdGU9cy5DTE9TRUQsZGVsZXRlIHVbZV07dmFyIGQ9bC5pbmRleE9mKHMpO2Q+PTAmJmwuc3BsaWNlKGQsMSl9cy5fY2FsbGJhY2tzW25dLmZvckVhY2goKGZ1bmN0aW9uKHQpeyJmdW5jdGlvbiI9PT10eXBlb2YgdCYmdChjKX0pKX19KSl9LDMzMTM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZnVuY3Rpb24odCl7ZnVuY3Rpb24gcihlKXt2YXIgbj1nZXRDdXJyZW50UGFnZXMoKTtyZXR1cm4gbi5sZW5ndGgmJnQucHVibGlzaEhhbmRsZXIoInBhZ2VTY3JvbGxUbyIsZSxuW24ubGVuZ3RoLTFdLiRwYWdlLmlkKSx7fX1uLmQoZSwicGFnZVNjcm9sbFRvIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKX0uY2FsbCh0aGlzLG4oIjJjOWYiKSl9LCIzM2IyIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7dmFyIGU9dC5zZXJ2aWNlO3JldHVybntzZXJ2aWNlOmUscHJvdmlkZXI6W119fW4ucihlKSxuLmQoZSwiZ2V0UHJvdmlkZXIiLChmdW5jdGlvbigpe3JldHVybiByfSkpfSwiMzNlMiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInVuaS1hZCIsdC5fZyh0Ll9iKHt9LCJ1bmktYWQiLHQuYXR0cnMsITEpLHQuJGxpc3RlbmVycyksW24oImRpdiIse3JlZjoiY29udGFpbmVyIixzdGF0aWNDbGFzczoidW5pLWFkLWNvbnRhaW5lciIsb246e2NsaWNrOnQuX29uaGFuZGxlfX0pXSl9LGk9W10sbz1uKCI0NGYxIiksYT1uLm4obykscz1uKCI5MDllIik7ZnVuY3Rpb24gYyh0LGUsbixyLGksbyxhKXt0cnl7dmFyIHM9dFtvXShhKSxjPXMudmFsdWV9Y2F0Y2godSl7cmV0dXJuIHZvaWQgbih1KX1zLmRvbmU/ZShjKTpQcm9taXNlLnJlc29sdmUoYykudGhlbihyLGkpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsaSl7dmFyIG89dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7YyhvLHIsaSxhLHMsIm5leHQiLHQpfWZ1bmN0aW9uIHModCl7YyhvLHIsaSxhLHMsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9fWZ1bmN0aW9uIGwodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBmKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gZCh0LGUsbil7cmV0dXJuIGUmJmYodC5wcm90b3R5cGUsZSksbiYmZih0LG4pLHR9ZnVuY3Rpb24gaCh0LGUsbil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1uLHR9dmFyIHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7bCh0aGlzLHQpLHRoaXMuX2luc3RhbmNlPW51bGwsdGhpcy5fYWRDb25maWc9bnVsbCx0aGlzLl9pc0xvYWRpbmc9ITEsdGhpcy5fbGFzdEVycm9yPW51bGwsdGhpcy5fY2FsbGJhY2tzPVtdfXJldHVybiBkKHQsbnVsbCxbe2tleToiaW5zdGFuY2UiLGdldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9pbnN0YW5jZSYmKHRoaXMuX2luc3RhbmNlPW5ldyB0LHRoaXMuX2luc3RhbmNlLl9pbml0KCkpLHRoaXMuX2luc3RhbmNlfX1dKSxkKHQsW3trZXk6Il9pbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldENvbmZpZygpO251bGwhPT10JiZ0Lmxhc3QmJih0aGlzLmlzRXhwaXJlZHx8KHRoaXMuX2FkQ29uZmlnPXQuZGF0YSkpfX0se2tleToiZ2V0Iix2YWx1ZTpmdW5jdGlvbihlLG4scil7aWYodC5JQysrLG51bGwhPXRoaXMuX2FkQ29uZmlnKXJldHVybiB0aGlzLl9kb0NhbGxiYWNrKGUsbixyKSx2b2lkKHRoaXMuaXNFeHBpcmVkJiZ0aGlzLl9sb2FkQWRDb25maWcoZSkpO3RoaXMuX2NhbGxiYWNrcy5wdXNoKHthZHBpZDplLHN1Y2Nlc3M6bixmYWlsOnJ9KSx0aGlzLl9sb2FkQWRDb25maWcoZSl9fSx7a2V5OiJfZG9DYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSxuLHIpe3QuSVMrKzt2YXIgaT10aGlzLl9hZENvbmZpZyxvPWkuYSxhPWkuYjtvW2VdP24oYSxvW2VdKTpyKHRoaXMuRVJST1JfSU5WQUxJRF9BRFBJRCl9fSx7a2V5OiJfbG9hZEFkQ29uZmlnIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzOyEwIT09dGhpcy5faXNMb2FkaW5nJiYodGhpcy5faXNMb2FkaW5nPSEwLHVuaS5yZXF1ZXN0KHt1cmw6dGhpcy5VUkwsbWV0aG9kOiJHRVQiLHRpbWVvdXQ6OGUzLGRhdGE6e2Q6bG9jYXRpb24uaG9zdG5hbWUsYTp0fSxkYXRhVHlwZToianNvbiIsc3VjY2VzczpmdW5jdGlvbih0KXt2YXIgbj10LmRhdGE7aWYoMD09PW4ucmV0KXt2YXIgcj1uLmRhdGE7ZS5fYWRDb25maWc9cixlLl9zZXRDb25maWcociksZS5fY2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXQuYWRwaWQscj10LnN1Y2Nlc3MsaT10LmZhaWw7ZS5fZG9DYWxsYmFjayhuLHIsaSl9KSl9ZWxzZSBlLl9jYWxsYmFja3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5mYWlsKHtlcnJDb2RlOm4ucmV0LGVyck1zZzpuLm1zZ30pfSkpO2UuX2NhbGxiYWNrcz1bXX0sZmFpbDpmdW5jdGlvbih0KXtlLl9jYWxsYmFja3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5mYWlsKHQpfSkpLGUuX2NhbGxiYWNrcz1bXX0sY29tcGxldGU6ZnVuY3Rpb24odCl7ZS5faXNMb2FkaW5nPSExfX0pKX19LHtrZXk6Il9nZXRDb25maWciLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIW5hdmlnYXRvci5jb29raWVFbmFibGVkfHwhd2luZG93LmxvY2FsU3RvcmFnZSlyZXR1cm4gbnVsbDt2YXIgdD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLktFWSk7cmV0dXJuIHQ/SlNPTi5wYXJzZSh0KTpudWxsfX0se2tleToiX3NldENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIW5hdmlnYXRvci5jb29raWVFbmFibGVkfHwhd2luZG93LmxvY2FsU3RvcmFnZSlyZXR1cm4gbnVsbDtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLktFWSxKU09OLnN0cmluZ2lmeSh7bGFzdDpEYXRlLm5vdygpLGRhdGE6dH0pKX19LHtrZXk6ImFkQ29uZmlnIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWRDb25maWd9fSx7a2V5OiJpc0V4cGlyZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9hZENvbmZpZ3x8TWF0aC5hYnMoRGF0ZS5ub3coKS10aGlzLl9hZENvbmZpZy5sYXN0KT50aGlzLkNBQ0hFX1RJTUV9fV0pLHR9KCk7aChwLCJJQyIsMCksaChwLCJJUyIsMCksT2JqZWN0LmFzc2lnbihwLnByb3RvdHlwZSx7VVJMOiJodHRwczovL2hhYzEuZGNsb3VkLm5ldC5jbi9haDUiLEtFWToidW5pX2FwcF9hZF9jb25maWciLENBQ0hFX1RJTUU6NmU1LEVSUk9SX0lOVkFMSURfQURQSUQ6eyItNTAwMiI6ImludmFsaWQgYWRwaWQifX0pO3ZhciB2PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2wodGhpcyx0KSx0aGlzLl9pbnN0YW5jZT1udWxsLHRoaXMuX2FkQ29uZmlnPW51bGwsdGhpcy5fZ3VpZD1udWxsfXJldHVybiBkKHQsbnVsbCxbe2tleToiaW5zdGFuY2UiLGdldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9pbnN0YW5jZSYmKHRoaXMuX2luc3RhbmNlPW5ldyB0LHRoaXMuX2luc3RhbmNlLl9pbml0KCkpLHRoaXMuX2luc3RhbmNlfX1dKSxkKHQsW3trZXk6Il9pbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldENvbmZpZygpO251bGwhPT10JiZ0Lmd1aWQ/dGhpcy5fZ3VpZD10Lmd1aWQ6KHRoaXMuX2d1aWQ9dGhpcy5fbmV3R1VJRCgpLHRoaXMuX3NldENvbmZpZyh0aGlzLl9ndWlkKSl9fSx7a2V5OiJnZXQiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX3Byb2Nlc3MoT2JqZWN0LmFzc2lnbih0LHtkOmxvY2F0aW9uLmhvc3RuYW1lLGk6dGhpcy5fZ3VpZH0pKX19LHtrZXk6Il9wcm9jZXNzIix2YWx1ZTpmdW5jdGlvbih0KXt1bmkucmVxdWVzdCh7dXJsOnRoaXMuVVJMLG1ldGhvZDoiR0VUIixkYXRhOnQsZGF0YVR5cGU6Impzb24iLHN1Y2Nlc3M6ZnVuY3Rpb24oKXt9fSl9fSx7a2V5OiJfbmV3R1VJRCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9IiIsZT0ieHh4eHh4eHgteHh4eC00eHh4LXh4eHgteHh4eHh4eHh4eHh4IixuPTA7bjxlLmxlbmd0aDtuKyspIngiPT09ZVtuXT90Kz0oMTYqTWF0aC5yYW5kb20oKXwwKS50b1N0cmluZygxNik6dCs9ZVtuXTtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfX0se2tleToiX2dldENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oKXtpZighbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWR8fCF3aW5kb3cubG9jYWxTdG9yYWdlKXJldHVybiBudWxsO3ZhciB0PWxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuS0VZKTtyZXR1cm4gdD9KU09OLnBhcnNlKHQpOm51bGx9fSx7a2V5OiJfc2V0Q29uZmlnIix2YWx1ZTpmdW5jdGlvbih0KXtpZighbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWR8fCF3aW5kb3cubG9jYWxTdG9yYWdlKXJldHVybiBudWxsO2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuS0VZLEpTT04uc3RyaW5naWZ5KHtsYXN0OkRhdGUubm93KCksZ3VpZDp0fSkpfX1dKSx0fSgpO09iamVjdC5hc3NpZ24odi5wcm90b3R5cGUse1VSTDoiaHR0cHM6Ly9oYXMxLmRjbG91ZC5uZXQuY24vYWhsIixLRVk6InVuaV9hcHBfYWRfZ3VpZCJ9KTt2YXIgZz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtsKHRoaXMsdCksdGhpcy5faW5zdGFuY2U9bnVsbCx0aGlzLl9jYWxsYmFjaz17fSx0aGlzLl9jYWNoZT17fX1yZXR1cm4gZCh0LG51bGwsW3trZXk6Imluc3RhbmNlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5faW5zdGFuY2UmJih0aGlzLl9pbnN0YW5jZT1uZXcgdCksdGhpcy5faW5zdGFuY2V9fV0pLGQodCxbe2tleToibG9hZCIsdmFsdWU6ZnVuY3Rpb24odCxlLG4scil7dm9pZCAwPT09dGhpcy5fY2FjaGVbdF0mJnRoaXMubG9hZFNjcmlwdCh0LGUpLDE9PT10aGlzLl9jYWNoZVt0XT9uKCk6KHRoaXMuX2NhbGxiYWNrW3RdfHwodGhpcy5fY2FsbGJhY2tbdF09W10pLHRoaXMuX2NhbGxiYWNrW3RdLnB1c2goe3N1Y2Nlc3M6bixmYWlsOnJ9KSl9fSx7a2V5OiJsb2FkU2NyaXB0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dGhpcy5fY2FjaGVbdF09MDt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtmb3IodmFyIGkgaW4gci5zZXRBdHRyaWJ1dGUoImlkIiwidW5pYWRfcHJvdmlkZXIiK3QpLGUpci5zZXRBdHRyaWJ1dGUoaSxlW2ldKTtyLm9ubG9hZD1mdW5jdGlvbigpe24uX2NhY2hlW3RdPTEsbi5fY2FsbGJhY2tbdF0uZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5zdWNjZXNzO2UoKX0pKSxuLl9jYWxsYmFja1t0XS5sZW5ndGg9MH0sci5vbmVycm9yPWZ1bmN0aW9uKGUpe24uX2NhY2hlW3RdPXZvaWQgMCxuLl9jYWxsYmFja1t0XS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj10LmZhaWw7bihlKX0pKSxuLl9jYWxsYmFja1t0XS5sZW5ndGg9MH0sZG9jdW1lbnQuYm9keS5hcHBlbmQocil9fV0pLHR9KCksbT0xZTMsYj01LHk9NzUwLF89e25hbWU6IkFkIixtaXhpbnM6W3NbImciXV0scHJvcHM6e2FkcGlkOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OiIifSxhZHBpZFdpZGVzY3JlZW46e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6IiJ9LHdpZGVzY3JlZW5XaWR0aDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDp5fX0sd2F0Y2g6e2FkcGlkOmZ1bmN0aW9uKHQpe3QmJnRoaXMuX2xvYWREYXRhKHQpfSxhZHBpZFdpZGVzY3JlZW46ZnVuY3Rpb24odCl7dCYmdGhpcy5fbG9hZERhdGEodCl9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dGhpcy5fcGQ9e30sdGhpcy5fcGw9W10sdGhpcy5fcGk9MCx0aGlzLl9jaGVja1RpbWVyPW51bGwsdGhpcy5fY2hlY2tUaW1lckNvdW50PTAsdGhpcy5faXNXaWRlc2NyZWVuPXRoaXMuJHJlZnMuY29udGFpbmVyLmNsaWVudFdpZHRoPnBhcnNlSW50KHRoaXMud2lkZXNjcmVlbldpZHRoKSx0aGlzLl9sb2FkRGF0YSgpLHYuaW5zdGFuY2UuZ2V0KHtoOl9fdW5pQ29uZmlnLmNvbXBpbGVyVmVyc2lvbixhOnRoaXMuYWRwaWQsYXQ6LTMsaWM6cC5JQyxpczpwLklTfSl9LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9jbGVhckNoZWNrVGltZXIoKSx0aGlzLiRyZWZzLmNvbnRhaW5lci5pbm5lckhUTUw9IiIsdGhpcy5fc2hhbmh1QWQmJmRlbGV0ZSB0aGlzLl9zaGFuaHVBZH0sbWV0aG9kczp7X29uaGFuZGxlOmZ1bmN0aW9uKHQpe3RoaXMuX3JlcG9ydCg0MSl9LF9yZXNldDpmdW5jdGlvbigpe3RoaXMuX3BkPXt9LHRoaXMuX3BsPVtdLHRoaXMuX3BpPTAsdGhpcy5fY2xlYXJDaGVja1RpbWVyKCksdGhpcy4kcmVmcy5jb250YWluZXIuaW5uZXJIVE1MPSIiLHRoaXMuX2lzUmVhZHk9ITF9LF9sb2FkRGF0YTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3Jlc2V0KCk7dmFyIG49dHx8dGhpcy5hZHBpZCxyPXRoaXMuX2lzV2lkZXNjcmVlbiYmdGhpcy5hZHBpZFdpZGVzY3JlZW58fG47cC5pbnN0YW5jZS5nZXQociwoZnVuY3Rpb24odCxuKXtlLl9hYj10LGUuX3BsPW4sZS5fcmVuZGVyQWQoKX0pLChmdW5jdGlvbih0KXtlLiR0cmlnZ2VyKCJlcnJvciIse30sdCl9KSl9LF9yZW5kZXJBZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoISh0aGlzLl9waT50aGlzLl9wbC5sZW5ndGgtMSkpe3ZhciBlPXRoaXMuX3BsW3RoaXMuX3BpXSxuPXRoaXMuX2FiW2UuYTFdW2UudF0scj1uLnNjcmlwdDt0aGlzLl9jdXJyZW50Q2hhbm5lbD1lLmExO3ZhciBpPXRoaXMuX3JhbmRvbUlkKCksbz10aGlzLl9jcmVhdGVWaWV3KGkpOyIxMDAyMyI9PT1lLmExP2cuaW5zdGFuY2UubG9hZChlLnQsciwoZnVuY3Rpb24oKXt0Ll9yZW5kZXJTaGFuaHUoaSxlKX0pLChmdW5jdGlvbihlKXt0LiR0cmlnZ2VyKCJlcnJvciIse30sZSl9KSk6IjEwMDEwIj09PWUuYTE/Zy5pbnN0YW5jZS5sb2FkKGUudCxyLChmdW5jdGlvbigpe3QuX3JlbmRlckJhaWR1KGksZS5hMil9KSwoZnVuY3Rpb24oZSl7dC4kdHJpZ2dlcigiZXJyb3IiLHt9LGUpfSkpOiIxMDAxMiI9PT1lLmExP3RoaXMuX3JlbmRlclNjcmlwdChvLHIpOmcuaW5zdGFuY2UubG9hZChlLnQsciwoZnVuY3Rpb24oKXt0Ll9yZW5kZXJBZFZpZXcoaSxyLnMsZSl9KSwoZnVuY3Rpb24oZSl7dC4kdHJpZ2dlcigiZXJyb3IiLHt9LGUpfSkpfX0sX2NyZWF0ZVZpZXc6ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuc2V0QXR0cmlidXRlKCJpZCIsdCksZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0KSx0aGlzLiRyZWZzLmNvbnRhaW5lci5pbm5lckhUTUw9IiIsdGhpcy4kcmVmcy5jb250YWluZXIuYXBwZW5kKGUpLGV9LF9yZW5kZXJTY3JpcHQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtmb3IodmFyIHIgaW4gZSluLnNldEF0dHJpYnV0ZShyLGVbcl0pO3QuYXBwZW5kQ2hpbGQobiksdGhpcy5fc3RhcnRDaGVja1RpbWVyKCl9LF9yZW5kZXJCYWlkdTpmdW5jdGlvbih0LGUpeyh3aW5kb3cuc2xvdGJ5ZHVwPXdpbmRvdy5zbG90YnlkdXB8fFtdKS5wdXNoKHtpZDplLGNvbnRhaW5lcjp0LGFzeW5jOiEwfSksdGhpcy5fc3RhcnRDaGVja1RpbWVyKCl9LF9yZW5kZXJBZFZpZXc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPXdpbmRvdztlLnNwbGl0KCIuIikucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiByPXQsdFtlXX0pLHdpbmRvdykuYmluZChyKShuLmEyLHQsMiksdGhpcy5fc3RhcnRDaGVja1RpbWVyKCl9LF9yZW5kZXJTaGFuaHU6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9bmV3IHdpbmRvdy5Db3JhbEFkdih7YXBwX2lkOmUuYTIscGxhY2VtZW50X2lkOmUuYTMsdHlwZTplLmE0LGRpc3BsYXlfdHlwZTplLmE1LGNvbnRhaW5lcl9pZDp0LGNvdW50OmUuYTZ8fDF9KTtyLnJlYWR5KCkudGhlbihmdW5jdGlvbigpe3ZhciB0PXUoYS5hLm1hcmsoKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGEuYS53cmFwKChmdW5jdGlvbih0KXt3aGlsZSgxKXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6MD09PWUucmV0P24uJHRyaWdnZXIoImxvYWQiLHt9LHt9KTpuLiR0cmlnZ2VyKCJlcnJvciIse30sZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKS5jYXRjaCgoZnVuY3Rpb24odCl7bi4kdHJpZ2dlcigiZXJyb3IiLHt9LHQpfSkpLHRoaXMuX3N0YXJ0Q2hlY2tUaW1lcigpfSxfcmVuZGVyTmV4dDpmdW5jdGlvbigpe3RoaXMuX3BpPj10aGlzLl9wbC5sZW5ndGgtMXx8KHRoaXMuX3BpKyssdGhpcy5fcmVuZGVyQWQoKSl9LF9jaGVja1JlbmRlcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJHJlZnMuY29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aD4wJiZ0aGlzLiRyZWZzLmNvbnRhaW5lci5jbGllbnRIZWlnaHQ+NDA7cmV0dXJuIHQmJnRoaXMuX3JlcG9ydCg0MCx0aGlzLl9jdXJyZW50Q2hhbm5lbCksdH0sX3N0YXJ0Q2hlY2tUaW1lcjpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fY2xlYXJDaGVja1RpbWVyKCksdGhpcy5fY2hlY2tUaW1lcj1zZXRJbnRlcnZhbCgoZnVuY3Rpb24oKXtpZih0Ll9jaGVja1RpbWVyQ291bnQrKyx0Ll9jaGVja1RpbWVyQ291bnQ+PWIpcmV0dXJuIHQuX2NsZWFyQ2hlY2tUaW1lcigpLHZvaWQgdC5fcmVuZGVyTmV4dCgpO3QuX2NoZWNrUmVuZGVyKCkmJnQuX2NsZWFyQ2hlY2tUaW1lcigpfSksbSl9LF9jbGVhckNoZWNrVGltZXI6ZnVuY3Rpb24oKXt0aGlzLl9jaGVja1RpbWVyQ291bnQ9MCxudWxsIT10aGlzLl9jaGVja1RpbWVyJiYod2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5fY2hlY2tUaW1lciksdGhpcy5fY2hlY2tUaW1lcj1udWxsKX0sX3JlcG9ydDpmdW5jdGlvbih0LGUpe3ZhciBuPXtoOl9fdW5pQ29uZmlnLmNvbXBpbGVyVmVyc2lvbixhOnRoaXMuYWRwaWQsYXQ6dH07ZSYmKG4udD1lKSx2Lmluc3RhbmNlLmdldChuKX0sX3JhbmRvbUlkOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PSIiLGU9MDtlPDQ7ZSsrKXQrPSg2NTUzNiooMStNYXRoLnJhbmRvbSgpKXwwKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpO3JldHVybiJfdSIrdH19fSx3PV8sUz0obigiYzg4NSIpLG4oIjg4NDQiKSkseD1PYmplY3QoU1siYSJdKSh3LHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPXguZXhwb3J0c30sIjM0MGQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsInQiLChmdW5jdGlvbigpe3JldHVybiBpfSkpLG4uZChlLCJrIiwoZnVuY3Rpb24oKXtyZXR1cm4gdn0pKSxuLmQoZSwibSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGd9KSksbi5kKGUsImwiLChmdW5jdGlvbigpe3JldHVybiBifSkpLG4uZChlLCJpIiwoZnVuY3Rpb24oKXtyZXR1cm4geX0pKSxuLmQoZSwidiIsKGZ1bmN0aW9uKCl7cmV0dXJuIF99KSksbi5kKGUsInAiLChmdW5jdGlvbigpe3JldHVybiBTfSkpLG4uZChlLCJiIiwoZnVuY3Rpb24oKXtyZXR1cm4ga30pKSxuLmQoZSwiYyIsKGZ1bmN0aW9uKCl7cmV0dXJuIEN9KSksbi5kKGUsInIiLChmdW5jdGlvbigpe3JldHVybiBUfSkpLG4uZChlLCJoIiwoZnVuY3Rpb24oKXtyZXR1cm4gT30pKSxuLmQoZSwiZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIEF9KSksbi5kKGUsIngiLChmdW5jdGlvbigpe3JldHVybiBFfSkpLG4uZChlLCJkIiwoZnVuY3Rpb24oKXtyZXR1cm4gan0pKSxuLmQoZSwidSIsKGZ1bmN0aW9uKCl7cmV0dXJuIE19KSksbi5kKGUsIm4iLChmdW5jdGlvbigpe3JldHVybiBJfSkpLG4uZChlLCJmIiwoZnVuY3Rpb24oKXtyZXR1cm4gUH0pKSxuLmQoZSwidyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSksbi5kKGUsInMiLChmdW5jdGlvbigpe3JldHVybiAkfSkpLG4uZChlLCJqIiwoZnVuY3Rpb24oKXtyZXR1cm4gen0pKSxuLmQoZSwiZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEh9KSksbi5kKGUsInEiLChmdW5jdGlvbigpe3JldHVybiBVfSkpLG4uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gR30pKSxuLmQoZSwibyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHR0fSkpO3ZhciByLGk9ITE7dHJ5e3ZhciBvPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7aT0hMH19KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdC1wYXNzaXZlIixudWxsLG8pfWNhdGNoKGV0KXt9dmFyIGE9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89IixzPS9eKD86W0EtWmEtelxkKy9dezR9KSo/KD86W0EtWmEtelxkKy9dezJ9KD86PT0pP3xbQS1aYS16XGQrL117M309Pyk/JC87ZnVuY3Rpb24gYyh0KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHIodCkuc3BsaXQoIiIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIiUiKygiMDAiK3QuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKX0pKS5qb2luKCIiKSl9ZnVuY3Rpb24gdSgpe3ZhciB0LGU9dW5pLmdldFN0b3JhZ2VTeW5jKCJ1bmlfaWRfdG9rZW4iKXx8IiIsbj1lLnNwbGl0KCIuIik7aWYoIWV8fDMhPT1uLmxlbmd0aClyZXR1cm57dWlkOm51bGwscm9sZTpbXSxwZXJtaXNzaW9uOltdLHRva2VuRXhwaXJlZDowfTt0cnl7dD1KU09OLnBhcnNlKGMoblsxXSkpfWNhdGNoKHIpe3Rocm93IG5ldyBFcnJvcigi6I635Y+W5b2T5YmN55So5oi35L+h5oGv5Ye66ZSZ77yM6K+m57uG6ZSZ6K+v5L+h5oGv5Li677yaIityLm1lc3NhZ2UpfXJldHVybiB0LnRva2VuRXhwaXJlZD0xZTMqdC5leHAsZGVsZXRlIHQuZXhwLGRlbGV0ZSB0LmlhdCx0fWZ1bmN0aW9uIGwodCl7dC5wcm90b3R5cGUudW5pSURIYXNSb2xlPWZ1bmN0aW9uKHQpe3ZhciBlPXUoKSxuPWUucm9sZTtyZXR1cm4gbi5pbmRleE9mKHQpPi0xfSx0LnByb3RvdHlwZS51bmlJREhhc1Blcm1pc3Npb249ZnVuY3Rpb24odCl7dmFyIGU9dSgpLG49ZS5wZXJtaXNzaW9uO3JldHVybiB0aGlzLnVuaUlESGFzUm9sZSgiYWRtaW4iKXx8bi5pbmRleE9mKHQpPi0xfSx0LnByb3RvdHlwZS51bmlJRFRva2VuVmFsaWQ9ZnVuY3Rpb24oKXt2YXIgdD11KCksZT10LnRva2VuRXhwaXJlZDtyZXR1cm4gZT5EYXRlLm5vdygpfX1yPSJmdW5jdGlvbiIhPT10eXBlb2YgYXRvYj9mdW5jdGlvbih0KXtpZih0PVN0cmluZyh0KS5yZXBsYWNlKC9bXHRcblxmXHIgXSsvZywiIiksIXMudGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byBleGVjdXRlICdhdG9iJyBvbiAnV2luZG93JzogVGhlIHN0cmluZyB0byBiZSBkZWNvZGVkIGlzIG5vdCBjb3JyZWN0bHkgZW5jb2RlZC4iKTt2YXIgZTt0Kz0iPT0iLnNsaWNlKDItKDMmdC5sZW5ndGgpKTtmb3IodmFyIG4scixpPSIiLG89MDtvPHQubGVuZ3RoOyllPWEuaW5kZXhPZih0LmNoYXJBdChvKyspKTw8MTh8YS5pbmRleE9mKHQuY2hhckF0KG8rKykpPDwxMnwobj1hLmluZGV4T2YodC5jaGFyQXQobysrKSkpPDw2fChyPWEuaW5kZXhPZih0LmNoYXJBdChvKyspKSksaSs9NjQ9PT1uP1N0cmluZy5mcm9tQ2hhckNvZGUoZT4+MTYmMjU1KTo2ND09PXI/U3RyaW5nLmZyb21DaGFyQ29kZShlPj4xNiYyNTUsZT4+OCYyNTUpOlN0cmluZy5mcm9tQ2hhckNvZGUoZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlKTtyZXR1cm4gaX06YXRvYjt2YXIgZj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxoPWZ1bmN0aW9uKHQpe3JldHVybiB0Pjk/dDoiMCIrdH0scD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHYodCl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiB0fWZ1bmN0aW9uIGcodCl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgdH1PYmplY3QuYXNzaWduO3ZhciBtPWc7ZnVuY3Rpb24gYih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PWYuY2FsbCh0KX1mdW5jdGlvbiB5KHQsZSl7cmV0dXJuIGQuY2FsbCh0LGUpfWZ1bmN0aW9uIF8odCl7cmV0dXJuIGYuY2FsbCh0KS5zbGljZSg4LC0xKX1mdW5jdGlvbiB3KHQpe3ZhciBlPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPWVbbl07cmV0dXJuIHJ8fChlW25dPXQobikpfX1mdW5jdGlvbiBTKHQpe3ZhciBlLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIGZ1bmN0aW9uKCl7aWYodCl7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkociksbz0wO288cjtvKyspaVtvXT1hcmd1bWVudHNbb107ZT10LmFwcGx5KG4saSksdD1udWxsfXJldHVybiBlfX12YXIgeD0vLShcdykvZyxrPXcoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoeCwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZT9lLnRvVXBwZXJDYXNlKCk6IiJ9KSl9KSksQz13KChmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpfSkpO2Z1bmN0aW9uIFQodCxlLG4pe2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7eShuLGUpJiYodFtlXT1uW2VdKX0pKX1mdW5jdGlvbiBPKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiIiO3JldHVybigiIit0KS5yZXBsYWNlKC9bXlx4MDAtXHhmZl0vZywiKioiKS5sZW5ndGh9ZnVuY3Rpb24gQSh0KXt2YXIgZT10LmRhdGUsbj12b2lkIDA9PT1lP25ldyBEYXRlOmUscj10Lm1vZGUsaT12b2lkIDA9PT1yPyJkYXRlIjpyO3JldHVybiJ0aW1lIj09PWk/aChuLmdldEhvdXJzKCkpKyI6IitoKG4uZ2V0TWludXRlcygpKTpuLmdldEZ1bGxZZWFyKCkrIi0iK2gobi5nZXRNb250aCgpKzEpKyItIitoKG4uZ2V0RGF0ZSgpKX1mdW5jdGlvbiBFKHQsZSl7Zm9yKHZhciBuIGluIGUpdC5zdHlsZVtuXT1lW25dfWZ1bmN0aW9uIGoodCxlKXt2YXIgbixyPWZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzLGk9dGhpcztjbGVhclRpbWVvdXQobik7dmFyIG89ZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShpLHIpfTtuPXNldFRpbWVvdXQobyxlKX07cmV0dXJuIHIuY2FuY2VsPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KG4pfSxyfWZ1bmN0aW9uIE0odCxlKXt2YXIgbixyLGk9MCxvPWZ1bmN0aW9uKCl7Zm9yKHZhciBvPXRoaXMsYT1hcmd1bWVudHMubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGM9MDtjPGE7YysrKXNbY109YXJndW1lbnRzW2NdO3ZhciB1PURhdGUubm93KCk7Y2xlYXJUaW1lb3V0KG4pLHI9ZnVuY3Rpb24oKXtyPW51bGwsaT11LHQuYXBwbHkobyxzKX0sdS1pPGU/bj1zZXRUaW1lb3V0KHIsZS0odS1pKSk6cigpfTtyZXR1cm4gby5jYW5jZWw9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQobikscj1udWxsfSxvLmZsdXNoPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KG4pLHImJnIoKX0sb31mdW5jdGlvbiBJKHQpe3JldHVybiB0LnJlcGxhY2UoL1tBLVpdL2csKGZ1bmN0aW9uKHQpe3JldHVybiItIit0LnRvTG93ZXJDYXNlKCl9KSl9ZnVuY3Rpb24gUCh0LGUpe2Z1bmN0aW9uIG4odCl7dmFyIHI9dC5jaGlsZHJlbiYmdC5jaGlsZHJlbi5tYXAobiksaT1lKHQudGFnLHQuZGF0YSxyKTtyZXR1cm4gaS50ZXh0PXQudGV4dCxpLmlzQ29tbWVudD10LmlzQ29tbWVudCxpLmNvbXBvbmVudE9wdGlvbnM9dC5jb21wb25lbnRPcHRpb25zLGkuZWxtPXQuZWxtLGkuY29udGV4dD10LmNvbnRleHQsaS5ucz10Lm5zLGkuaXNTdGF0aWM9dC5pc1N0YXRpYyxpLmtleT10LmtleSxpfXJldHVybiB0Lm1hcChuKX1mdW5jdGlvbiAkKHQpe3ZhciBlPXt9O3JldHVybiBiKHQpJiZPYmplY3Qua2V5cyh0KS5zb3J0KCkuZm9yRWFjaCgoZnVuY3Rpb24obil7ZVtuXT10W25dfSkpLE9iamVjdC5rZXlzKGUpP2U6dH1mdW5jdGlvbiBMKHQsZSl7cmV0dXJuIEYodCl8fEIodCxlKXx8Tih0LGUpfHxSKCl9ZnVuY3Rpb24gUigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9ZnVuY3Rpb24gTih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT09dHlwZW9mIHQpcmV0dXJuIEQodCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20obik6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9EKHQsZSk6dm9pZCAwfX1mdW5jdGlvbiBEKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gQih0LGUpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSl7dmFyIG49W10scj0hMCxpPSExLG89dm9pZCAwO3RyeXtmb3IodmFyIGEscz10W1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGE9cy5uZXh0KCkpLmRvbmUpO3I9ITApaWYobi5wdXNoKGEudmFsdWUpLGUmJm4ubGVuZ3RoPT09ZSlicmVha31jYXRjaChjKXtpPSEwLG89Y31maW5hbGx5e3RyeXtyfHxudWxsPT1zWyJyZXR1cm4iXXx8c1sicmV0dXJuIl0oKX1maW5hbGx5e2lmKGkpdGhyb3cgb319cmV0dXJuIG59fWZ1bmN0aW9uIEYodCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH1mdW5jdGlvbiB6KHQpe2lmKCF0KXJldHVybntyOjAsZzowLGI6MCxhOjB9O3ZhciBlPXQuc2xpY2UoMSksbj1lLmxlbmd0aDtpZighWzMsNCw2LDhdLmluY2x1ZGVzKG4pKXJldHVybntyOjAsZzowLGI6MCxhOjB9OzMhPT1uJiY0IT09bnx8KGU9ZS5yZXBsYWNlKC8oXHd7MX0pL2csIiQxJDEiKSk7dmFyIHI9ZS5tYXRjaCgvKFx3ezJ9KS9nKSxpPUwociw0KSxvPWlbMF0sYT1pWzFdLHM9aVsyXSxjPWlbM10sdT1wYXJzZUludChvLDE2KSxsPXBhcnNlSW50KGEsMTYpLGY9cGFyc2VJbnQocywxNik7cmV0dXJuIGM/e3I6dSxnOmwsYjpmLGE6KCIweDEwMCIuY29uY2F0KGMpLTY1NTM2KS8yNTV9OntyOnUsZzpsLGI6ZixhOjF9fXZhciBXPWRlY29kZVVSSUNvbXBvbmVudDtmdW5jdGlvbiBIKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGU9e307cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3RyeXtlW25dPVcodFtuXSl9Y2F0Y2goZXQpe2Vbbl09dFtuXX19KSksZX1mdW5jdGlvbiBVKHQpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgdClyZXR1cm4gd2luZG93LnBsdXM/dCgpOnZvaWQgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicGx1c3JlYWR5Iix0KX12YXIgcT0wLFY9e307ZnVuY3Rpb24gWSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sbj1TdHJpbmcocSsrKTtWW25dPXtzdWNjZXNzOmUuc3VjY2VzcyxmYWlsOmUuZmFpbCxjb21wbGV0ZTplLmNvbXBsZXRlfTt2YXIgcj1PYmplY3QuYXNzaWduKHt9LGUpLGk9dC5iaW5kKHRoaXMpKHIsbik7aSYmWChuLGkpfX1mdW5jdGlvbiBYKHQsZSl7dmFyIG49Vlt0XXx8e307ZGVsZXRlIFZbdF07dmFyIHI9ZS5lcnJNc2d8fCIiO25ldyBSZWdFeHAoIlxcOlxccypmYWlsIikudGVzdChyKT9uLmZhaWwmJm4uZmFpbChlKTpuLnN1Y2Nlc3MmJm4uc3VjY2VzcyhlKSxuLmNvbXBsZXRlJiZuLmNvbXBsZXRlKGUpfXZhciBHPXt3YXJwOlksaW52b2tlOlh9LFE9e2JsYWNrOiJyZ2JhKDAsMCwwLDAuNCkiLHdoaXRlOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNCkifTtmdW5jdGlvbiBKKHQpe3JldHVybiB0JiZ0IGluIFE/UVt0XTp0fWZ1bmN0aW9uIEsodCl7cmV0dXJuImJsYWNrIj09PXQ/IiMwMDAwMDAiOiIjZmZmZmZmIn1mdW5jdGlvbiBaKHQsZSxuKXtpZihtKGUpJiZlLnN0YXJ0c1dpdGgoIkAiKSl7dmFyIHI9ZS5yZXBsYWNlKCJAIiwiIiksaT10W3JdfHxlO3N3aXRjaChuKXtjYXNlInRpdGxlQ29sb3IiOmk9SyhpKTticmVhaztjYXNlImJvcmRlclN0eWxlIjppPUooaSk7YnJlYWs7ZGVmYXVsdDpicmVha31yZXR1cm4gaX1yZXR1cm4gZX1mdW5jdGlvbiB0dCh0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06ImxpZ2h0IixyPWVbbl0saT17fTtyZXR1cm4idW5kZWZpbmVkIiE9PXR5cGVvZiByJiZ0PyhPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihvKXt2YXIgYT10W29dLHM9ZnVuY3Rpb24oKXtyZXR1cm4gYihhKT90dChhLGUsbik6cChhKT9hLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGIodCk/dHQodCxlLG4pOloocix0KX0pKTpaKHIsYSxvKX07aVtvXT1zKCl9KSksaSk6dH19LDM1OTY6ZnVuY3Rpb24odCxlLG4pe30sIjM2YTYiOmZ1bmN0aW9uKHQsZSxuKXt9LCIzODNlIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKTt2YXIgcj1uKCIzOWJkIiksaT1uKCIzNDBkIik7ZnVuY3Rpb24gbyh0LGUpe3ZhciBuPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gYSh0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbZV0/YXJndW1lbnRzW2VdOnt9O2UlMj9vKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cyh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6byhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiBzKHQsZSxuKXtyZXR1cm4gZSBpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPW4sdH12YXIgYyx1LGw9e25hbWU6IlN3aXBlciIsbWl4aW5zOltyWyJhIl1dLHByb3BzOntpbmRpY2F0b3JEb3RzOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sdmVydGljYWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxhdXRvcGxheTp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LGNpcmN1bGFyOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0saW50ZXJ2YWw6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6NWUzfSxkdXJhdGlvbjp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDo1MDB9LGN1cnJlbnQ6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MH0saW5kaWNhdG9yQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LGluZGljYXRvckFjdGl2ZUNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxwcmV2aW91c01hcmdpbjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sbmV4dE1hcmdpbjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sY3VycmVudEl0ZW1JZDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sc2tpcEhpZGRlbkl0ZW1MYXlvdXQ6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxkaXNwbGF5TXVsdGlwbGVJdGVtczp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDoxfSxkaXNhYmxlVG91Y2g6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxuYXZpZ2F0aW9uOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sbmF2aWdhdGlvbkNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIjZmZmIn0sbmF2aWdhdGlvbkFjdGl2ZUNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJyZ2JhKDUzLCA1MywgNTMsIDAuNikifX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntjdXJyZW50U3luYzpNYXRoLnJvdW5kKHRoaXMuY3VycmVudCl8fDAsY3VycmVudEl0ZW1JZFN5bmM6dGhpcy5jdXJyZW50SXRlbUlkfHwiIix1c2VyVHJhY2tpbmc6ITEsY3VycmVudENoYW5nZVNvdXJjZToiIixpdGVtczpbXSxpc05hdmlnYXRpb25BdXRvOiExLGhpZGVOYXZpZ2F0aW9uOiExLHByZXZEaXNhYmxlZDohMSxuZXh0RGlzYWJsZWQ6ITF9fSxjb21wdXRlZDp7aW50ZXJ2YWxOdW1iZXI6ZnVuY3Rpb24oKXt2YXIgdD1OdW1iZXIodGhpcy5pbnRlcnZhbCk7cmV0dXJuIGlzTmFOKHQpPzVlMzp0fSxkdXJhdGlvbk51bWJlcjpmdW5jdGlvbigpe3ZhciB0PU51bWJlcih0aGlzLmR1cmF0aW9uKTtyZXR1cm4gaXNOYU4odCk/NTAwOnR9LGRpc3BsYXlNdWx0aXBsZUl0ZW1zTnVtYmVyOmZ1bmN0aW9uKCl7dmFyIHQ9TWF0aC5yb3VuZCh0aGlzLmRpc3BsYXlNdWx0aXBsZUl0ZW1zKTtyZXR1cm4gaXNOYU4odCk/MTp0fSxzbGlkZXNTdHlsZTpmdW5jdGlvbigpe3ZhciB0PXt9O3JldHVybih0aGlzLm5leHRNYXJnaW58fHRoaXMucHJldmlvdXNNYXJnaW4pJiYodD10aGlzLnZlcnRpY2FsP3tsZWZ0OjAscmlnaHQ6MCx0b3A6dGhpcy5fdXB4MnB4KHRoaXMucHJldmlvdXNNYXJnaW4pLGJvdHRvbTp0aGlzLl91cHgycHgodGhpcy5uZXh0TWFyZ2luKX06e3RvcDowLGJvdHRvbTowLGxlZnQ6dGhpcy5fdXB4MnB4KHRoaXMucHJldmlvdXNNYXJnaW4pLHJpZ2h0OnRoaXMuX3VweDJweCh0aGlzLm5leHRNYXJnaW4pfSksdH0sc2xpZGVGcmFtZVN0eWxlOmZ1bmN0aW9uKCl7dmFyIHQ9TWF0aC5hYnMoMTAwL3RoaXMuZGlzcGxheU11bHRpcGxlSXRlbXNOdW1iZXIpKyIlIjtyZXR1cm57d2lkdGg6dGhpcy52ZXJ0aWNhbD8iMTAwJSI6dCxoZWlnaHQ6dGhpcy52ZXJ0aWNhbD90OiIxMDAlIn19LHN3aXBlckVuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGg+dGhpcy5kaXNwbGF5TXVsdGlwbGVJdGVtc051bWJlcn0sY2lyY3VsYXJFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2lyY3VsYXImJnRoaXMuc3dpcGVyRW5hYmxlZH19LHdhdGNoOnt2ZXJ0aWNhbDpmdW5jdGlvbigpe3RoaXMuX3Jlc2V0TGF5b3V0KCl9LGNpcmN1bGFyOmZ1bmN0aW9uKCl7dGhpcy5fcmVzZXRMYXlvdXQoKX0saW50ZXJ2YWxOdW1iZXI6ZnVuY3Rpb24odCl7dGhpcy5fdGltZXImJih0aGlzLl9jYW5jZWxTY2hlZHVsZSgpLHRoaXMuX3NjaGVkdWxlQXV0b3BsYXkoKSl9LGN1cnJlbnQ6ZnVuY3Rpb24odCl7dGhpcy5fY3VycmVudENoZWNrKCl9LGN1cnJlbnRTeW5jOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY3VycmVudENoYW5nZWQodCxlKSx0aGlzLiRlbWl0KCJ1cGRhdGU6Y3VycmVudCIsdCksdGhpcy5fc2V0TmF2aWdhdGlvblN0YXRlKCl9LGN1cnJlbnRJdGVtSWQ6ZnVuY3Rpb24odCl7dGhpcy5fY3VycmVudENoZWNrKCl9LGN1cnJlbnRJdGVtSWRTeW5jOmZ1bmN0aW9uKHQpe3RoaXMuJGVtaXQoInVwZGF0ZTpjdXJyZW50SXRlbUlkIix0KX0sZGlzcGxheU11bHRpcGxlSXRlbXNOdW1iZXI6ZnVuY3Rpb24oKXt0aGlzLl9yZXNldExheW91dCgpfSxuYXZpZ2F0aW9uOntpbW1lZGlhdGU6ITAsaGFuZGxlcjpmdW5jdGlvbih0KXt0aGlzLmlzTmF2aWdhdGlvbkF1dG89ImF1dG8iPT09dCx0aGlzLmhpZGVOYXZpZ2F0aW9uPSEwIT09dHx8dGhpcy5pc05hdmlnYXRpb25BdXRvLHRoaXMuX25hdmlnYXRpb25Td2lwZXJBZGRNb3VzZUV2ZW50KCl9fSxpdGVtczpmdW5jdGlvbigpe3RoaXMuX3NldE5hdmlnYXRpb25TdGF0ZSgpfSxzd2lwZXJFbmFibGVkOmZ1bmN0aW9uKHQpe3R8fCh0aGlzLnByZXZEaXNhYmxlZD0hMCx0aGlzLm5leHREaXNhYmxlZD0hMCx0aGlzLmlzTmF2aWdhdGlvbkF1dG8mJih0aGlzLmhpZGVOYXZpZ2F0aW9uPSEwKSl9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5faW52YWxpZD0hMCx0aGlzLl92aWV3cG9ydFBvc2l0aW9uPTAsdGhpcy5fdmlld3BvcnRNb3ZlUmF0aW89MSx0aGlzLl9hbmltYXRpbmc9bnVsbCx0aGlzLl9yZXF1ZXN0ZWRBbmltYXRpb249ITEsdGhpcy5fdXNlckRpcmVjdGlvbkNoZWNrZWQ9ITEsdGhpcy5fY29udGVudFRyYWNrVmlld3BvcnQ9MCx0aGlzLl9jb250ZW50VHJhY2tTcGVlZD0wLHRoaXMuX2NvbnRlbnRUcmFja1Q9MH0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fY3VycmVudENoZWNrKCksdGhpcy50b3VjaHRyYWNrKHRoaXMuJHJlZnMuc2xpZGVzV3JhcHBlciwiX2hhbmRsZUNvbnRlbnRUcmFjayIsITApLHRoaXMuX3Jlc2V0TGF5b3V0KCksdGhpcy4kd2F0Y2goKGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXV0b3BsYXkmJiF0LnVzZXJUcmFja2luZ30pLHRoaXMuX2luaW50QXV0b3BsYXkpLHRoaXMuX2luaW50QXV0b3BsYXkodGhpcy5hdXRvcGxheSYmIXRoaXMudXNlclRyYWNraW5nKSx0aGlzLiR3YXRjaCgiaXRlbXMubGVuZ3RoIix0aGlzLl9yZXNldExheW91dCksdGhpcy5fbmF2aWdhdGlvblN3aXBlckFkZE1vdXNlRXZlbnQoKX0sYmVmb3JlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX2NhbmNlbFNjaGVkdWxlKCksY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fYW5pbWF0aW9uRnJhbWUpfSxtZXRob2RzOntfaW5pbnRBdXRvcGxheTpmdW5jdGlvbih0KXt0P3RoaXMuX3NjaGVkdWxlQXV0b3BsYXkoKTp0aGlzLl9jYW5jZWxTY2hlZHVsZSgpfSxfY3VycmVudENoZWNrOmZ1bmN0aW9uKCl7dmFyIHQ9LTE7aWYodGhpcy5jdXJyZW50SXRlbUlkKWZvcih2YXIgZT0wLG49dGhpcy5pdGVtcztlPG4ubGVuZ3RoO2UrKyl7dmFyIHI9bltlXS5jb21wb25lbnRJbnN0YW5jZTtpZihyJiZyLml0ZW1JZD09PXRoaXMuY3VycmVudEl0ZW1JZCl7dD1lO2JyZWFrfX10PDAmJih0PU1hdGgucm91bmQodGhpcy5jdXJyZW50KXx8MCksdD10PDA/MDp0LHRoaXMuY3VycmVudFN5bmMhPT10JiYodGhpcy5jdXJyZW50Q2hhbmdlU291cmNlPSIiLHRoaXMuY3VycmVudFN5bmM9dCl9LF9pdGVtUmVhZHk6ZnVuY3Rpb24odCxlKXt0LmNvbXBvbmVudEluc3RhbmNlJiZ0LmNvbXBvbmVudEluc3RhbmNlLl9pc01vdW50ZWQ/ZSgpOih0Ll9jYWxsYmFja3M9dC5fY2FsbGJhY2tzfHxbXSx0Ll9jYWxsYmFja3MucHVzaChlKSl9LF9jdXJyZW50Q2hhbmdlZDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMscj10aGlzLmN1cnJlbnRDaGFuZ2VTb3VyY2U7aWYodGhpcy5jdXJyZW50Q2hhbmdlU291cmNlPSIiLCFyKXt2YXIgaT10aGlzLml0ZW1zLmxlbmd0aDt0aGlzLl9hbmltYXRlVmlld3BvcnQodCwiIix0aGlzLmNpcmN1bGFyRW5hYmxlZCYmZSsoaS10KSVpPmkvMj8xOjApfXZhciBvPXRoaXMuaXRlbXNbdF07byYmdGhpcy5faXRlbVJlYWR5KG8sKGZ1bmN0aW9uKCl7dmFyIHQ9bi5jdXJyZW50SXRlbUlkU3luYz1vLmNvbXBvbmVudEluc3RhbmNlLml0ZW1JZHx8IiI7bi4kdHJpZ2dlcigiY2hhbmdlIix7fSx7Y3VycmVudDpuLmN1cnJlbnRTeW5jLGN1cnJlbnRJdGVtSWQ6dCxzb3VyY2U6cn0pfSkpfSxfc2NoZWR1bGVBdXRvcGxheTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7ZnVuY3Rpb24gZSgpe3QuX3RpbWVyPW51bGwsdC5jdXJyZW50Q2hhbmdlU291cmNlPSJhdXRvcGxheSIsdC5jaXJjdWxhckVuYWJsZWQ/dC5jdXJyZW50U3luYz10Ll9ub3JtYWxpemVDdXJyZW50VmFsdWUodC5jdXJyZW50U3luYysxKTp0LmN1cnJlbnRTeW5jPXQuY3VycmVudFN5bmMrdC5kaXNwbGF5TXVsdGlwbGVJdGVtc051bWJlcjx0Lml0ZW1zLmxlbmd0aD90LmN1cnJlbnRTeW5jKzE6MCx0Ll9hbmltYXRlVmlld3BvcnQodC5jdXJyZW50U3luYywiYXV0b3BsYXkiLHQuY2lyY3VsYXJFbmFibGVkPzE6MCksdC5fdGltZXI9c2V0VGltZW91dChlLHQuaW50ZXJ2YWxOdW1iZXIpfXRoaXMuX2NhbmNlbFNjaGVkdWxlKCksIXRoaXMuX2lzTW91bnRlZHx8dGhpcy5faW52YWxpZHx8dGhpcy5pdGVtcy5sZW5ndGg8PXRoaXMuZGlzcGxheU11bHRpcGxlSXRlbXNOdW1iZXJ8fCh0aGlzLl90aW1lcj1zZXRUaW1lb3V0KGUsdGhpcy5pbnRlcnZhbE51bWJlcikpfSxfY2FuY2VsU2NoZWR1bGU6ZnVuY3Rpb24oKXt0aGlzLl90aW1lciYmKGNsZWFyVGltZW91dCh0aGlzLl90aW1lciksdGhpcy5fdGltZXI9bnVsbCl9LF9ub3JtYWxpemVDdXJyZW50VmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pdGVtcy5sZW5ndGg7aWYoIWUpcmV0dXJuLTE7dmFyIG49KE1hdGgucm91bmQodCklZStlKSVlO2lmKHRoaXMuY2lyY3VsYXJFbmFibGVkKXtpZihlPD10aGlzLmRpc3BsYXlNdWx0aXBsZUl0ZW1zTnVtYmVyKXJldHVybiAwfWVsc2UgaWYobj5lLXRoaXMuZGlzcGxheU11bHRpcGxlSXRlbXNOdW1iZXIpcmV0dXJuIGUtdGhpcy5kaXNwbGF5TXVsdGlwbGVJdGVtc051bWJlcjtyZXR1cm4gbn0sX3VweDJweDpmdW5jdGlvbih0KXtyZXR1cm4vXGQrW3VyXXB4JC9pLnRlc3QodCkmJnQucmVwbGFjZSgvXGQrW3VyXXB4JC9pLChmdW5jdGlvbih0KXtyZXR1cm4iIi5jb25jYXQodW5pLnVweDJweChwYXJzZUZsb2F0KHQpKSwicHgiKX0pKSx0fHwiIn0sX3Jlc2V0TGF5b3V0OmZ1bmN0aW9uKCl7aWYodGhpcy5faXNNb3VudGVkKXt0aGlzLl9jYW5jZWxTY2hlZHVsZSgpLHRoaXMuX2VuZFZpZXdwb3J0QW5pbWF0aW9uKCk7Zm9yKHZhciB0PXRoaXMuaXRlbXMsZT0wO2U8dC5sZW5ndGg7ZSsrKXRoaXMuX3VwZGF0ZUl0ZW1Qb3MoZSxlKTtpZih0aGlzLl92aWV3cG9ydE1vdmVSYXRpbz0xLDE9PT10aGlzLmRpc3BsYXlNdWx0aXBsZUl0ZW1zTnVtYmVyJiZ0Lmxlbmd0aCl7dmFyIG49dFswXS5jb21wb25lbnRJbnN0YW5jZS4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj10aGlzLiRyZWZzLnNsaWRlRnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5fdmlld3BvcnRNb3ZlUmF0aW89bi53aWR0aC9yLndpZHRoLHRoaXMuX3ZpZXdwb3J0TW92ZVJhdGlvPjAmJnRoaXMuX3ZpZXdwb3J0TW92ZVJhdGlvPDF8fCh0aGlzLl92aWV3cG9ydE1vdmVSYXRpbz0xKX12YXIgaT10aGlzLl92aWV3cG9ydFBvc2l0aW9uO3RoaXMuX3ZpZXdwb3J0UG9zaXRpb249LTI7dmFyIG89dGhpcy5jdXJyZW50U3luYztvPj0wPyh0aGlzLl9pbnZhbGlkPSExLHRoaXMudXNlclRyYWNraW5nPyh0aGlzLl91cGRhdGVWaWV3cG9ydChpK28tdGhpcy5fY29udGVudFRyYWNrVmlld3BvcnQpLHRoaXMuX2NvbnRlbnRUcmFja1ZpZXdwb3J0PW8pOih0aGlzLl91cGRhdGVWaWV3cG9ydChvKSx0aGlzLmF1dG9wbGF5JiZ0aGlzLl9zY2hlZHVsZUF1dG9wbGF5KCkpKToodGhpcy5faW52YWxpZD0hMCx0aGlzLl91cGRhdGVWaWV3cG9ydCgtdGhpcy5kaXNwbGF5TXVsdGlwbGVJdGVtc051bWJlci0xKSl9fSxfY2hlY2tDaXJjdWxhckxheW91dDpmdW5jdGlvbih0KXtpZighdGhpcy5faW52YWxpZClmb3IodmFyIGU9dGhpcy5pdGVtcyxuPWUubGVuZ3RoLHI9dCt0aGlzLmRpc3BsYXlNdWx0aXBsZUl0ZW1zTnVtYmVyLGk9MDtpPG47aSsrKXt2YXIgbz1lW2ldLGE9by5fcG9zaXRpb24scz1NYXRoLmZsb29yKHQvbikqbitpLGM9cytuLHU9cy1uLGw9TWF0aC5tYXgodC0ocysxKSxzLXIsMCksZj1NYXRoLm1heCh0LShjKzEpLGMtciwwKSxkPU1hdGgubWF4KHQtKHUrMSksdS1yLDApLGg9TWF0aC5taW4obCxmLGQpLHA9W3MsYyx1XVtbbCxmLGRdLmluZGV4T2YoaCldO2EhPT1wJiZ0aGlzLl91cGRhdGVJdGVtUG9zKGkscCl9fSxfdXBkYXRlSXRlbVBvczpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMudmVydGljYWw/IjAiOjEwMCplKyIlIixyPXRoaXMudmVydGljYWw/MTAwKmUrIiUiOiIwIixpPSJ0cmFuc2xhdGUoIituKyIsICIrcisiKSB0cmFuc2xhdGVaKDApIixvPXRoaXMuaXRlbXNbdF07dGhpcy5faXRlbVJlYWR5KG8sKGZ1bmN0aW9uKCl7dmFyIHQ9by5jb21wb25lbnRJbnN0YW5jZS4kZWw7dC5zdHlsZVsiLXdlYmtpdC10cmFuc2Zvcm0iXT1pLHQuc3R5bGUudHJhbnNmb3JtPWksdC5fcG9zaXRpb249ZX0pKX0sX3VwZGF0ZVZpZXdwb3J0OmZ1bmN0aW9uKHQpe01hdGguZmxvb3IoMip0aGlzLl92aWV3cG9ydFBvc2l0aW9uKT09PU1hdGguZmxvb3IoMip0KSYmTWF0aC5jZWlsKDIqdGhpcy5fdmlld3BvcnRQb3NpdGlvbik9PT1NYXRoLmNlaWwoMip0KXx8dGhpcy5jaXJjdWxhckVuYWJsZWQmJnRoaXMuX2NoZWNrQ2lyY3VsYXJMYXlvdXQodCk7dmFyIGU9dGhpcy52ZXJ0aWNhbD8iMCI6MTAwKi10KnRoaXMuX3ZpZXdwb3J0TW92ZVJhdGlvKyIlIixuPXRoaXMudmVydGljYWw/MTAwKi10KnRoaXMuX3ZpZXdwb3J0TW92ZVJhdGlvKyIlIjoiMCIscj0idHJhbnNsYXRlKCIrZSsiLCAiK24rIikgdHJhbnNsYXRlWigwKSIsaT10aGlzLiRyZWZzLnNsaWRlRnJhbWU7aWYoaSYmKGkuc3R5bGVbIi13ZWJraXQtdHJhbnNmb3JtIl09cixpLnN0eWxlLnRyYW5zZm9ybT1yKSx0aGlzLl92aWV3cG9ydFBvc2l0aW9uPXQsIXRoaXMuX3RyYW5zaXRpb25TdGFydCl7aWYodCUxPT09MClyZXR1cm47dGhpcy5fdHJhbnNpdGlvblN0YXJ0PXR9dC09TWF0aC5mbG9vcih0aGlzLl90cmFuc2l0aW9uU3RhcnQpLHQ8PS0odGhpcy5pdGVtcy5sZW5ndGgtMSk/dCs9dGhpcy5pdGVtcy5sZW5ndGg6dD49dGhpcy5pdGVtcy5sZW5ndGgmJih0LT10aGlzLml0ZW1zLmxlbmd0aCksdD10aGlzLl90cmFuc2l0aW9uU3RhcnQlMT4uNXx8dGhpcy5fdHJhbnNpdGlvblN0YXJ0PDA/dC0xOnQsdGhpcy4kdHJpZ2dlcigidHJhbnNpdGlvbiIse30se2R4OnRoaXMudmVydGljYWw/MDp0Kmkub2Zmc2V0V2lkdGgsZHk6dGhpcy52ZXJ0aWNhbD90Kmkub2Zmc2V0SGVpZ2h0OjB9KX0sX2FuaW1hdGVGcmFtZUZ1bmNQcm90bzpmdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYodGhpcy5fYW5pbWF0aW5nKXt2YXIgZT10aGlzLl9hbmltYXRpbmcsbj1lLnRvUG9zLHI9ZS5hY2MsaT1lLmVuZFRpbWUsbz1lLnNvdXJjZSxhPWktRGF0ZS5ub3coKTtpZihhPD0wKXt0aGlzLl91cGRhdGVWaWV3cG9ydChuKSx0aGlzLl9hbmltYXRpbmc9bnVsbCx0aGlzLl9yZXF1ZXN0ZWRBbmltYXRpb249ITEsdGhpcy5fdHJhbnNpdGlvblN0YXJ0PW51bGw7dmFyIHM9dGhpcy5pdGVtc1t0aGlzLmN1cnJlbnRTeW5jXTtzJiZ0aGlzLl9pdGVtUmVhZHkocywoZnVuY3Rpb24oKXt2YXIgZT1zLmNvbXBvbmVudEluc3RhbmNlLml0ZW1JZHx8IiI7dC4kdHJpZ2dlcigiYW5pbWF0aW9uZmluaXNoIix7fSx7Y3VycmVudDp0LmN1cnJlbnRTeW5jLGN1cnJlbnRJdGVtSWQ6ZSxzb3VyY2U6b30pfSkpfWVsc2V7dmFyIGM9ciphKmEvMix1PW4rYzt0aGlzLl91cGRhdGVWaWV3cG9ydCh1KSx0aGlzLl9hbmltYXRpb25GcmFtZT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fYW5pbWF0ZUZyYW1lRnVuY1Byb3RvLmJpbmQodGhpcykpfX1lbHNlIHRoaXMuX3JlcXVlc3RlZEFuaW1hdGlvbj0hMX0sX2FuaW1hdGVWaWV3cG9ydDpmdW5jdGlvbih0LGUsbil7dGhpcy5fY2FuY2VsVmlld3BvcnRBbmltYXRpb24oKTt2YXIgcj10aGlzLmR1cmF0aW9uTnVtYmVyLGk9dGhpcy5pdGVtcy5sZW5ndGgsbz10aGlzLl92aWV3cG9ydFBvc2l0aW9uO2lmKHRoaXMuY2lyY3VsYXJFbmFibGVkKWlmKG48MCl7Zm9yKDtvPHQ7KW8rPWk7Zm9yKDtvLWk+dDspby09aX1lbHNlIGlmKG4+MCl7Zm9yKDtvPnQ7KW8tPWk7Zm9yKDtvK2k8dDspbys9aTtvK2ktdDx0LW8mJihvKz1pKX1lbHNle2Zvcig7bytpPHQ7KW8rPWk7Zm9yKDtvLWk+dDspby09aTtvK2ktdDx0LW8mJihvKz1pKX1lbHNlImNsaWNrIj09PWUmJih0PXQrdGhpcy5kaXNwbGF5TXVsdGlwbGVJdGVtc051bWJlci0xPGk/dDowKTt0aGlzLl9hbmltYXRpbmc9e3RvUG9zOnQsYWNjOjIqKG8tdCkvKHIqciksZW5kVGltZTpEYXRlLm5vdygpK3Isc291cmNlOmV9LHRoaXMuX3JlcXVlc3RlZEFuaW1hdGlvbnx8KHRoaXMuX3JlcXVlc3RlZEFuaW1hdGlvbj0hMCx0aGlzLl9hbmltYXRpb25GcmFtZT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fYW5pbWF0ZUZyYW1lRnVuY1Byb3RvLmJpbmQodGhpcykpKX0sX2NhbmNlbFZpZXdwb3J0QW5pbWF0aW9uOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW5nPW51bGx9LF9lbmRWaWV3cG9ydEFuaW1hdGlvbjpmdW5jdGlvbigpe3RoaXMuX2FuaW1hdGluZyYmKHRoaXMuX3VwZGF0ZVZpZXdwb3J0KHRoaXMuX2FuaW1hdGluZy50b1BvcyksdGhpcy5fYW5pbWF0aW5nPW51bGwpfSxfaGFuZGxlVHJhY2tTdGFydDpmdW5jdGlvbigpe3RoaXMuX2NhbmNlbFNjaGVkdWxlKCksdGhpcy5fY29udGVudFRyYWNrVmlld3BvcnQ9dGhpcy5fdmlld3BvcnRQb3NpdGlvbix0aGlzLl9jb250ZW50VHJhY2tTcGVlZD0wLHRoaXMuX2NvbnRlbnRUcmFja1Q9RGF0ZS5ub3coKSx0aGlzLl9jYW5jZWxWaWV3cG9ydEFuaW1hdGlvbigpfSxfaGFuZGxlVHJhY2tNb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLl9jb250ZW50VHJhY2tUO3RoaXMuX2NvbnRlbnRUcmFja1Q9RGF0ZS5ub3coKTt2YXIgcj10aGlzLml0ZW1zLmxlbmd0aCxpPXItdGhpcy5kaXNwbGF5TXVsdGlwbGVJdGVtc051bWJlcjtmdW5jdGlvbiBvKHQpe3JldHVybi41LS4yNS8odCsuNSl9ZnVuY3Rpb24gYSh0LG4pe3ZhciByPWUuX2NvbnRlbnRUcmFja1ZpZXdwb3J0K3Q7ZS5fY29udGVudFRyYWNrU3BlZWQ9LjYqZS5fY29udGVudFRyYWNrU3BlZWQrLjQqbixlLmNpcmN1bGFyRW5hYmxlZHx8KHI8MHx8cj5pKSYmKHI8MD9yPS1vKC1yKTpyPmkmJihyPWkrbyhyLWkpKSxlLl9jb250ZW50VHJhY2tTcGVlZD0wKSxlLl91cGRhdGVWaWV3cG9ydChyKX12YXIgcz10aGlzLl9jb250ZW50VHJhY2tULW58fDE7dGhpcy52ZXJ0aWNhbD9hKC10LmR5L3RoaXMuJHJlZnMuc2xpZGVGcmFtZS5vZmZzZXRIZWlnaHQsLXQuZGR5L3MpOmEoLXQuZHgvdGhpcy4kcmVmcy5zbGlkZUZyYW1lLm9mZnNldFdpZHRoLC10LmRkeC9zKX0sX2hhbmRsZVRyYWNrRW5kOmZ1bmN0aW9uKHQpe3RoaXMudXNlclRyYWNraW5nPSExO3ZhciBlPXRoaXMuX2NvbnRlbnRUcmFja1NwZWVkL01hdGguYWJzKHRoaXMuX2NvbnRlbnRUcmFja1NwZWVkKSxuPTA7IXQmJk1hdGguYWJzKHRoaXMuX2NvbnRlbnRUcmFja1NwZWVkKT4uMiYmKG49LjUqZSk7dmFyIHI9dGhpcy5fbm9ybWFsaXplQ3VycmVudFZhbHVlKHRoaXMuX3ZpZXdwb3J0UG9zaXRpb24rbik7dD90aGlzLl91cGRhdGVWaWV3cG9ydCh0aGlzLl9jb250ZW50VHJhY2tWaWV3cG9ydCk6KHRoaXMuY3VycmVudENoYW5nZVNvdXJjZT0idG91Y2giLHRoaXMuY3VycmVudFN5bmM9cix0aGlzLl9hbmltYXRlVmlld3BvcnQociwidG91Y2giLDAhPT1uP246MD09PXImJnRoaXMuY2lyY3VsYXJFbmFibGVkJiZ0aGlzLl92aWV3cG9ydFBvc2l0aW9uPj0xPzE6MCkpfSxfaGFuZGxlQ29udGVudFRyYWNrOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmRpc2FibGVUb3VjaCYmdGhpcy5pdGVtcy5sZW5ndGgmJiF0aGlzLl9pbnZhbGlkKXtpZigic3RhcnQiPT09dC5kZXRhaWwuc3RhdGUpcmV0dXJuIHRoaXMudXNlclRyYWNraW5nPSEwLHRoaXMuX3VzZXJEaXJlY3Rpb25DaGVja2VkPSExLHRoaXMuX2hhbmRsZVRyYWNrU3RhcnQoKTtpZigiZW5kIj09PXQuZGV0YWlsLnN0YXRlKXJldHVybiB0aGlzLl9oYW5kbGVUcmFja0VuZCghMSk7aWYoImNhbmNlbCI9PT10LmRldGFpbC5zdGF0ZSlyZXR1cm4gdGhpcy5faGFuZGxlVHJhY2tFbmQoITApO2lmKHRoaXMudXNlclRyYWNraW5nKXtpZighdGhpcy5fdXNlckRpcmVjdGlvbkNoZWNrZWQpe3RoaXMuX3VzZXJEaXJlY3Rpb25DaGVja2VkPSEwO3ZhciBlPU1hdGguYWJzKHQuZGV0YWlsLmR4KSxuPU1hdGguYWJzKHQuZGV0YWlsLmR5KTtpZigoZT49biYmdGhpcy52ZXJ0aWNhbHx8ZTw9biYmIXRoaXMudmVydGljYWwpJiYodGhpcy51c2VyVHJhY2tpbmc9ITEpLCF0aGlzLnVzZXJUcmFja2luZylyZXR1cm4gdm9pZCh0aGlzLmF1dG9wbGF5JiZ0aGlzLl9zY2hlZHVsZUF1dG9wbGF5KCkpfXJldHVybiB0aGlzLl9oYW5kbGVUcmFja01vdmUodC5kZXRhaWwpLCExfX19LF9vblN3aXBlckRvdENsaWNrOmZ1bmN0aW9uKHQpe3RoaXMuX2FuaW1hdGVWaWV3cG9ydCh0aGlzLmN1cnJlbnRTeW5jPXQsdGhpcy5jdXJyZW50Q2hhbmdlU291cmNlPSJjbGljayIsdGhpcy5jaXJjdWxhckVuYWJsZWQ/MTowKX0sX25hdmlnYXRpb25DbGljazpmdW5jdGlvbih0LGUsbil7aWYodC5zdG9wUHJvcGFnYXRpb24oKSwhbil7dmFyIHI9dGhpcy5pdGVtcy5sZW5ndGgsaT10aGlzLmN1cnJlbnRTeW5jO3N3aXRjaChlKXtjYXNlInByZXYiOmktLSxpPDAmJnRoaXMuY2lyY3VsYXJFbmFibGVkJiYoaT1yLTEpO2JyZWFrO2Nhc2UibmV4dCI6aSsrLGk+PXImJnRoaXMuY2lyY3VsYXJFbmFibGVkJiYoaT0wKTticmVha310aGlzLl9vblN3aXBlckRvdENsaWNrKGkpfX0sX25hdmlnYXRpb25Nb3VzZU1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztjbGVhclRpbWVvdXQodGhpcy5oaWRlTmF2aWdhdGlvblRpbWVyKTt2YXIgbj10LmNsaWVudFgscj10LmNsaWVudFksaT10aGlzLiRyZWZzLnNsaWRlc1dyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1pLmxlZnQsYT1pLnJpZ2h0LHM9aS50b3AsYz1pLmJvdHRvbSx1PWkud2lkdGgsbD1pLmhlaWdodCxmPSExO2Y9dGhpcy52ZXJ0aWNhbD8hKHItczxsLzN8fGMtcjxsLzMpOiEobi1vPHUvM3x8YS1uPHUvMyksZj90aGlzLmhpZGVOYXZpZ2F0aW9uVGltZXI9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLmhpZGVOYXZpZ2F0aW9uPWZ9KSwzMDApOnRoaXMuaGlkZU5hdmlnYXRpb249Zn0sX25hdmlnYXRpb25Nb3VzZU91dDpmdW5jdGlvbigpe3RoaXMuaGlkZU5hdmlnYXRpb249ITB9LF9uYXZpZ2F0aW9uU3dpcGVyQWRkTW91c2VFdmVudDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJHJlZnMuc2xpZGVzV3JhcHBlcjt0JiYodC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuX25hdmlnYXRpb25Nb3VzZU1vdmUpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsdGhpcy5fbmF2aWdhdGlvbk1vdXNlT3V0KSx0aGlzLmlzTmF2aWdhdGlvbkF1dG8mJih0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5fbmF2aWdhdGlvbk1vdXNlTW92ZSksdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIix0aGlzLl9uYXZpZ2F0aW9uTW91c2VPdXQpKSl9LF9uYXZpZ2F0aW9uSG92ZXI6ZnVuY3Rpb24odCxlKXt2YXIgbj10LmN1cnJlbnRUYXJnZXQ7biYmKG4uc3R5bGUuYmFja2dyb3VuZENvbG9yPSJvdmVyIj09PWU/dGhpcy5uYXZpZ2F0aW9uQWN0aXZlQ29sb3I6IiIpfSxfc2V0TmF2aWdhdGlvblN0YXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pdGVtcy5sZW5ndGgsZT0hdGhpcy5jaXJjdWxhckVuYWJsZWQ7dGhpcy5wcmV2RGlzYWJsZWQ9MD09PXRoaXMuY3VycmVudFN5bmMmJmUsdGhpcy5uZXh0RGlzYWJsZWQ9dGhpcy5jdXJyZW50U3luYz09PXQtMSYmZXx8ZSYmdGhpcy5jdXJyZW50U3luYyt0aGlzLmRpc3BsYXlNdWx0aXBsZUl0ZW1zTnVtYmVyPj10fX0scmVuZGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1bXSxyPVtdO3RoaXMuJHNsb3RzLmRlZmF1bHQmJk9iamVjdChpWyJmIl0pKHRoaXMuJHNsb3RzLmRlZmF1bHQsdCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jb21wb25lbnRPcHRpb25zJiYidi11bmktc3dpcGVyLWl0ZW0iPT09dC5jb21wb25lbnRPcHRpb25zLnRhZyYmci5wdXNoKHQpfSkpO2Zvcih2YXIgbz1mdW5jdGlvbihyLGkpe3ZhciBvPWUuY3VycmVudFN5bmM7bi5wdXNoKHQoImRpdiIse29uOntjbGljazpmdW5jdGlvbigpe3JldHVybiBlLl9vblN3aXBlckRvdENsaWNrKHIpfX0sY2xhc3M6eyJ1bmktc3dpcGVyLWRvdCI6ITAsInVuaS1zd2lwZXItZG90LWFjdGl2ZSI6cjxvK2UuZGlzcGxheU11bHRpcGxlSXRlbXNOdW1iZXImJnI+PW98fHI8bytlLmRpc3BsYXlNdWx0aXBsZUl0ZW1zTnVtYmVyLWl9LHN0eWxlOntiYWNrZ3JvdW5kOnI9PT1vP2UuaW5kaWNhdG9yQWN0aXZlQ29sb3I6ZS5pbmRpY2F0b3JDb2xvcn19KSl9LHM9MCxjPXIubGVuZ3RoO3M8YztzKyspbyhzLGMpO3RoaXMuaXRlbXM9cjt2YXIgdT1bdCgiZGl2Iix7cmVmOiJzbGlkZXMiLHN0eWxlOnRoaXMuc2xpZGVzU3R5bGUsY2xhc3M6InVuaS1zd2lwZXItc2xpZGVzIn0sW3QoImRpdiIse3JlZjoic2xpZGVGcmFtZSIsY2xhc3M6InVuaS1zd2lwZXItc2xpZGUtZnJhbWUiLHN0eWxlOnRoaXMuc2xpZGVGcmFtZVN0eWxlfSxyKV0pXTtpZih0aGlzLmluZGljYXRvckRvdHMmJnUucHVzaCh0KCJkaXYiLHtyZWY6InNsaWRlc0RvdHMiLGNsYXNzOlsidW5pLXN3aXBlci1kb3RzIix0aGlzLnZlcnRpY2FsPyJ1bmktc3dpcGVyLWRvdHMtdmVydGljYWwiOiJ1bmktc3dpcGVyLWRvdHMtaG9yaXpvbnRhbCJdfSxuKSksdGhpcy5uYXZpZ2F0aW9uKXt2YXIgbD17InVuaS1zd2lwZXItbmF2aWdhdGlvbi1oaWRlIjp0aGlzLmhpZGVOYXZpZ2F0aW9uLCJ1bmktc3dpcGVyLW5hdmlnYXRpb24tdmVydGljYWwiOnRoaXMudmVydGljYWx9LGY9dCgiaSIse2RvbVByb3BzOntpbm5lckhUTUw6IiYjeGU2MDE7In0sY2xhc3M6InVuaS1idG4taWNvbiIsc3R5bGU6e2NvbG9yOnRoaXMubmF2aWdhdGlvbkNvbG9yLGZvbnRTaXplOiIyNnB4In19KSxkPXttb3VzZW92ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGUuX25hdmlnYXRpb25Ib3Zlcih0LCJvdmVyIil9LG1vdXNlb3V0OmZ1bmN0aW9uKHQpe3JldHVybiBlLl9uYXZpZ2F0aW9uSG92ZXIodCwib3V0Iil9fTt1LnB1c2godCgiZGl2Iix7b246YSh7Y2xpY2s6ZnVuY3Rpb24odCl7cmV0dXJuIGUuX25hdmlnYXRpb25DbGljayh0LCJwcmV2IixlLnByZXZEaXNhYmxlZCl9fSxkKSxjbGFzczpbInVuaS1zd2lwZXItbmF2aWdhdGlvbiIsInVuaS1zd2lwZXItbmF2aWdhdGlvbi1wcmV2IixhKHsidW5pLXN3aXBlci1uYXZpZ2F0aW9uLWRpc2FibGVkIjp0aGlzLnByZXZEaXNhYmxlZH0sbCldfSxbZl0pLHQoImRpdiIse29uOmEoe2NsaWNrOmZ1bmN0aW9uKHQpe3JldHVybiBlLl9uYXZpZ2F0aW9uQ2xpY2sodCwibmV4dCIsZS5uZXh0RGlzYWJsZWQpfX0sZCksY2xhc3M6WyJ1bmktc3dpcGVyLW5hdmlnYXRpb24iLCJ1bmktc3dpcGVyLW5hdmlnYXRpb24tbmV4dCIsYSh7InVuaS1zd2lwZXItbmF2aWdhdGlvbi1kaXNhYmxlZCI6dGhpcy5uZXh0RGlzYWJsZWR9LGwpXX0sW2ZdKSl9cmV0dXJuIHQoInVuaS1zd2lwZXIiLHtvbjp0aGlzLiRsaXN0ZW5lcnN9LFt0KCJkaXYiLHtyZWY6InNsaWRlc1dyYXBwZXIiLGNsYXNzOiJ1bmktc3dpcGVyLXdyYXBwZXIifSx1KV0pfX0sZj1sLGQ9KG4oIjliYmIiKSxuKCI4ODQ0IikpLGg9T2JqZWN0KGRbImEiXSkoZixjLHUsITEsbnVsbCxudWxsLG51bGwpO2VbImRlZmF1bHQiXT1oLmV4cG9ydHN9LCIzOGNlIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLCJkIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKSxuLmQoZSwiYyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSksbi5kKGUsImIiLChmdW5jdGlvbigpe3JldHVybiBjfSkpLG4uZChlLCJlIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKSxuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSk7dmFyIHI9bigiMzQwZCIpLGk9WyJTeXN0ZW1Bc3luY0xvYWRpbmciLCJTeXN0ZW1Bc3luY0Vycm9yIl07ZnVuY3Rpb24gbyh0KXtyZXR1cm4hKCF0LiRwYXJlbnR8fCJQYWdlQm9keSIhPT10LiRwYXJlbnQuJG9wdGlvbnMubmFtZSkmJi0xPT09aS5pbmRleE9mKHQuJG9wdGlvbnMubmFtZSl9ZnVuY3Rpb24gYSgpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxlPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3JldHVybiBBcnJheS5pc0FycmF5KHRbZV0pJiZ0W2VdLmxlbmd0aH1mdW5jdGlvbiBzKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGU9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0KSksbj1PYmplY3Qua2V5cyhlKSxyPW4ubGVuZ3RoO2lmKHIpZm9yKHZhciBpPTA7aTxyO2krKyl7dmFyIG89bltpXSxhPW8ubGVuZ3RoOyJ2IiE9PW8uc3Vic3RyKDAsMSl8fDkhPT1hJiYxMCE9PWF8fGRlbGV0ZSBlW29dfXJldHVybiBlfWZ1bmN0aW9uIGModCl7dmFyIGU9e30sbj10Ll9fdnVlX187ZnVuY3Rpb24gaSh0LG4pe3ZhciBpPXQuJGF0dHJzO2Zvcih2YXIgbyBpbiBpKWlmKG8uc3RhcnRzV2l0aCgiZGF0YS0iKSl7dmFyIGE9T2JqZWN0KHJbImIiXSkoby5zdWJzdHIoNSkudG9Mb3dlckNhc2UoKSkscz1pW29dO2VbYV09bj9zOmVbYV18fHN9fWlmKG4pe3ZhciBvPW47d2hpbGUobyYmby4kZWw9PT10KWkobyksbz1vLiRjaGlsZHJlblswXTt2YXIgYT1uLiRwYXJlbnQ7d2hpbGUoYSYmYS4kZWw9PT10KWkoYSwhMCksYT1hLiRwYXJlbnR9ZWxzZSBlPU9iamVjdC5hc3NpZ24oe30sdC5kYXRhc2V0LHQuX191bmlEYXRhc2V0KTtyZXR1cm4gcyhlKX1mdW5jdGlvbiB1KHQpe3JldHVybiB0Kz0iIiwtMSE9PXQuaW5kZXhPZigidXB4Iik/dW5pLnVweDJweChwYXJzZUludCh0KXx8MCk6cGFyc2VJbnQodCl8fDB9ZnVuY3Rpb24gbCh0KXt2YXIgZT1nZXRDdXJyZW50UGFnZXMoKSxuPWUubGVuZ3RoO3doaWxlKG4tLSl7dmFyIHI9ZVtuXTtpZihyLiRwYWdlJiZyLiRwYWdlLmZ1bGxQYXRoPT09dClyZXR1cm4gbn1yZXR1cm4tMX19LDM5MzQ6ZnVuY3Rpb24odCxlLG4pe30sIjM5M2QiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7aWYobi5yKGUpLCJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdyl7dmFyIHI9d2luZG93LmRvY3VtZW50LmN1cnJlbnRTY3JpcHQsaT1uKCJhOTQ0Iik7cj1pKCksImN1cnJlbnRTY3JpcHQiaW4gZG9jdW1lbnR8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwiY3VycmVudFNjcmlwdCIse2dldDppfSk7dmFyIG89ciYmci5zcmMubWF0Y2goLyguK1wvKVteL10rXC5qcyhcPy4qKT8kLyk7byYmKG4ucD1vWzFdKX1uKCIwNjgwIil9LCIzOWEwIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0LHIpe24uZChlLCJjaG9vc2VWaWRlbyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSk7dmFyIGk9bigiYmRlZSIpLG89bigiMDM3MiIpLGE9bigiNDkzZCIpLHM9bigiOTA5ZSIpLGM9dCx1PWMuaW52b2tlQ2FsbGJhY2tIYW5kbGVyLGw9bnVsbDtmdW5jdGlvbiBmKHQsZSl7dmFyIG49dC5zb3VyY2VUeXBlLGM9dC5leHRlbnNpb247bCYmKGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobCksbD1udWxsKSxsPU9iamVjdChhWyJkZWZhdWx0Il0pKHtzb3VyY2VUeXBlOm4sZXh0ZW5zaW9uOmMsdHlwZToidmlkZW8ifSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsKSxsLmFkZEV2ZW50TGlzdGVuZXIoImNhbmNlbCIsKGZ1bmN0aW9uKCl7dmFyIHQ9e2Vyck1zZzoiY2hvb3NlVmlkZW86ZmFpbCBjYW5jZWwifTt1KGUsdCl9KSksbC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChmdW5jdGlvbih0KXt2YXIgbixyPXQudGFyZ2V0LmZpbGVzWzBdLG89e2Vyck1zZzoiY2hvb3NlVmlkZW86b2siLHRlbXBGaWxlOnIsc2l6ZTpyLnNpemUsZHVyYXRpb246MCx3aWR0aDowLGhlaWdodDowLG5hbWU6ci5uYW1lfTtPYmplY3QuZGVmaW5lUHJvcGVydHkobywidGVtcEZpbGVQYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG49bnx8T2JqZWN0KGlbImIiXSkodGhpcy50ZW1wRmlsZSksbn19KTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpO2lmKHZvaWQgMCE9PWEub25sb2FkZWRtZXRhZGF0YSl7dmFyIHM9T2JqZWN0KGlbImIiXSkocik7YS5vbmxvYWRlZG1ldGFkYXRhPWZ1bmN0aW9uKCl7T2JqZWN0KGlbImUiXSkocyksdShlLE9iamVjdC5hc3NpZ24obyx7ZHVyYXRpb246YS5kdXJhdGlvbnx8MCx3aWR0aDphLnZpZGVvV2lkdGh8fDAsaGVpZ2h0OmEudmlkZW9IZWlnaHR8fDB9KSl9LHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7YS5vbmxvYWRlZG1ldGFkYXRhPW51bGwsT2JqZWN0KGlbImUiXSkocyksdShlLG8pfSksMzAwKSxhLnNyYz1zfWVsc2UgdShlLG8pfSkpLGwuY2xpY2soKSxzWyJkIl0uZ2V0U3RhdHVzKCl8fHIud2FybigiIi5jb25jYXQoT2JqZWN0KG9bImciXSkoInVuaS5jaG9vc2VGaWxlLm5vdFVzZXJBY3RpdmF0aW9uIikpKX19LmNhbGwodGhpcyxuKCIyYzlmIiksbigiNDE4YiIpWyJkZWZhdWx0Il0pfSwiMzlhMiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZnVuY3Rpb24odCl7dmFyIHI7bi5kKGUsInN0YXJ0Q29tcGFzcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSksbi5kKGUsInN0b3BDb21wYXNzIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwib25Db21wYXNzQ2hhbmdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKSxuLmQoZSwib2ZmQ29tcGFzc0NoYW5nZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSk7dmFyIGk9W107ZnVuY3Rpb24gbyhlLG4pe3ZhciBvPXQsYT1vLmludm9rZUNhbGxiYWNrSGFuZGxlcjtpZighd2luZG93LkRldmljZU9yaWVudGF0aW9uRXZlbnQpcmV0dXJue2Vyck1zZzoic3RhcnRDb21wYXNzOmZhaWwifTtmdW5jdGlvbiBzKCl7cj1mdW5jdGlvbih0KXt2YXIgZT0zNjAtdC5hbHBoYTtpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2EodCx7ZGlyZWN0aW9uOmV8fDB9KX0pKX0sd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImRldmljZW9yaWVudGF0aW9uIixyLCExKX1pZighcil7aWYoRGV2aWNlT3JpZW50YXRpb25FdmVudC5yZXF1ZXN0UGVybWlzc2lvbilyZXR1cm4gdm9pZCBEZXZpY2VPcmllbnRhdGlvbkV2ZW50LnJlcXVlc3RQZXJtaXNzaW9uKCkudGhlbigoZnVuY3Rpb24odCl7ImdyYW50ZWQiPT09dD8ocygpLGEobix7ZXJyTXNnOiJzdGFydENvbXBhc3M6b2sifSkpOmEobix7ZXJyTXNnOiJzdGFydENvbXBhc3M6ZmFpbCAiLmNvbmNhdCh0KX0pfSkpLmNhdGNoKChmdW5jdGlvbih0KXthKG4se2Vyck1zZzoic3RhcnRDb21wYXNzOmZhaWwgIi5jb25jYXQodCl9KX0pKTtzKCl9cmV0dXJue319ZnVuY3Rpb24gYSgpe3JldHVybiByJiYod2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImRldmljZW9yaWVudGF0aW9uIixyLCExKSxyPW51bGwpLHt9fWZ1bmN0aW9uIHModCl7aS5sZW5ndGh8fG8oKSxpLnB1c2godCl9ZnVuY3Rpb24gYyh0KXtpZih0KXt2YXIgZT1pLmluZGV4T2YodCk7ZT49MCYmaS5zcGxpY2UoZSwxKX1pLmxlbmd0aHx8YSgpfX0uY2FsbCh0aGlzLG4oIjJjOWYiKSl9LCIzOWJkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKHQsZSxuLHIpe3QuYWRkRXZlbnRMaXN0ZW5lcihlLChmdW5jdGlvbih0KXsiZnVuY3Rpb24iPT09dHlwZW9mIG4mJiExPT09bih0KSYmKHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpKX0pLHtjYXB0dXJlOnIscGFzc2l2ZTohMX0pfTtlWyJhIl09e2JlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuX19tb3VzZU1vdmVFdmVudExpc3RlbmVyKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLl9fbW91c2VVcEV2ZW50TGlzdGVuZXIpfSxtZXRob2RzOnt0b3VjaHRyYWNrOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxvLGEscz10aGlzLGM9dGhpcyx1PTAsbD0wLGY9MCxkPTAsaD1mdW5jdGlvbih0LG4scixpKXtpZighMT09PWNbZV0oe3RhcmdldDp0LnRhcmdldCxjdXJyZW50VGFyZ2V0OnQuY3VycmVudFRhcmdldCxwcmV2ZW50RGVmYXVsdDp0LnByZXZlbnREZWZhdWx0LmJpbmQodCksc3RvcFByb3BhZ2F0aW9uOnQuc3RvcFByb3BhZ2F0aW9uLmJpbmQodCksdG91Y2hlczp0LnRvdWNoZXMsY2hhbmdlZFRvdWNoZXM6dC5jaGFuZ2VkVG91Y2hlcyxkZXRhaWw6e3N0YXRlOm4seDpyLHk6aSxkeDpyLXUsZHk6aS1sLGRkeDpyLWYsZGR5OmktZCx0aW1lU3RhbXA6dC50aW1lU3RhbXB9fSkpcmV0dXJuITF9LHA9bnVsbDtyKHQsInRvdWNoc3RhcnQiLChmdW5jdGlvbih0KXtpZihvPSEwLDE9PT10LnRvdWNoZXMubGVuZ3RoJiYhcClyZXR1cm4gcD10LHU9Zj10LnRvdWNoZXNbMF0ucGFnZVgsbD1kPXQudG91Y2hlc1swXS5wYWdlWSxoKHQsInN0YXJ0Iix1LGwpfSkpLHIodCwibW91c2Vkb3duIiwoZnVuY3Rpb24odCl7aWYoYT0hMCwhbyYmIXApcmV0dXJuIHA9dCx1PWY9dC5wYWdlWCxsPWQ9dC5wYWdlWSxoKHQsInN0YXJ0Iix1LGwpfSkpLHIodCwidG91Y2htb3ZlIiwoZnVuY3Rpb24odCl7aWYoMT09PXQudG91Y2hlcy5sZW5ndGgmJnApe3ZhciBlPWgodCwibW92ZSIsdC50b3VjaGVzWzBdLnBhZ2VYLHQudG91Y2hlc1swXS5wYWdlWSk7cmV0dXJuIGY9dC50b3VjaGVzWzBdLnBhZ2VYLGQ9dC50b3VjaGVzWzBdLnBhZ2VZLGV9fSkpO3ZhciB2PXRoaXMuX19jbGlja0V2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCl9LGc9dGhpcy5fX21vdXNlTW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCl7aWYoIW8mJmEmJnApeyFpJiYoTWF0aC5hYnMoZi11KT4yfHxNYXRoLmFicyhkLWwpPjIpJiYoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHYsITApLGk9ITApO3ZhciBlPWgodCwibW92ZSIsdC5wYWdlWCx0LnBhZ2VZKTtyZXR1cm4gZj10LnBhZ2VYLGQ9dC5wYWdlWSxlfX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIixnKSxyKHQsInRvdWNoZW5kIiwoZnVuY3Rpb24odCl7aWYoMD09PXQudG91Y2hlcy5sZW5ndGgmJnApcmV0dXJuIG89ITEscD1udWxsLGgodCwiZW5kIix0LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYLHQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVkpfSkpO3ZhciBtPXRoaXMuX19tb3VzZVVwRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0KXtpZihhPSExLCFvJiZwKXJldHVybiBpJiZzZXRUaW1lb3V0KChmdW5jdGlvbigpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixzLl9fY2xpY2tFdmVudExpc3RlbmVyLCEwKSxpPSExfSksMCkscD1udWxsLGgodCwiZW5kIix0LnBhZ2VYLHQucGFnZVkpfTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixtKSxyKHQsInRvdWNoY2FuY2VsIiwoZnVuY3Rpb24odCl7aWYocCl7bz0hMTt2YXIgZT1wO3JldHVybiBwPW51bGwsaCh0LG4/ImNhbmNlbCI6ImVuZCIsZS50b3VjaGVzWzBdLnBhZ2VYLGUudG91Y2hlc1swXS5wYWdlWSl9fSkpfX19fSwiM2EzZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInVuaS1yYWRpby1ncm91cCIsdC5fZyh7fSx0LiRsaXN0ZW5lcnMpLFt0Ll90KCJkZWZhdWx0IildLDIpfSxpPVtdLG89bigiOTA5ZSIpLGE9e25hbWU6IlJhZGlvR3JvdXAiLG1peGluczpbb1siYSJdLG9bImYiXV0scHJvcHM6e25hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3JhZGlvTGlzdDpbXX19LGxpc3RlbmVyczp7IkByYWRpby1jaGFuZ2UiOiJfY2hhbmdlSGFuZGxlciIsIkByYWRpby1ncm91cC11cGRhdGUiOiJfcmFkaW9Hcm91cFVwZGF0ZUhhbmRsZXIifSxtb3VudGVkOmZ1bmN0aW9uKCl7dGhpcy5fcmVzZXRSYWRpb0dyb3VwVmFsdWUodGhpcy5yYWRpb0xpc3QubGVuZ3RoLTEpfSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy4kZGlzcGF0Y2goIkZvcm0iLCJ1bmktZm9ybS1ncm91cC11cGRhdGUiLHt0eXBlOiJhZGQiLHZtOnRoaXN9KX0sYmVmb3JlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuJGRpc3BhdGNoKCJGb3JtIiwidW5pLWZvcm0tZ3JvdXAtdXBkYXRlIix7dHlwZToicmVtb3ZlIix2bTp0aGlzfSl9LG1ldGhvZHM6e19jaGFuZ2VIYW5kbGVyOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5yYWRpb0xpc3QuaW5kZXhPZihlKTt0aGlzLl9yZXNldFJhZGlvR3JvdXBWYWx1ZShuLCEwKSx0aGlzLiR0cmlnZ2VyKCJjaGFuZ2UiLHQse3ZhbHVlOmUucmFkaW9WYWx1ZX0pfSxfcmFkaW9Hcm91cFVwZGF0ZUhhbmRsZXI6ZnVuY3Rpb24odCl7aWYoImFkZCI9PT10LnR5cGUpdGhpcy5yYWRpb0xpc3QucHVzaCh0LnZtKTtlbHNle3ZhciBlPXRoaXMucmFkaW9MaXN0LmluZGV4T2YodC52bSk7dGhpcy5yYWRpb0xpc3Quc3BsaWNlKGUsMSl9fSxfcmVzZXRSYWRpb0dyb3VwVmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3RoaXMucmFkaW9MaXN0LmZvckVhY2goKGZ1bmN0aW9uKHIsaSl7aSE9PXQmJihlP24ucmFkaW9MaXN0W2ldLnJhZGlvQ2hlY2tlZD0hMTpuLnJhZGlvTGlzdC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe2k+PWV8fG4ucmFkaW9MaXN0W2VdLnJhZGlvQ2hlY2tlZCYmKG4ucmFkaW9MaXN0W2ldLnJhZGlvQ2hlY2tlZD0hMSl9KSkpfSkpfSxfZ2V0Rm9ybURhdGE6ZnVuY3Rpb24oKXt2YXIgdD17fTtpZigiIiE9PXRoaXMubmFtZSl7dmFyIGU9IiI7dGhpcy5yYWRpb0xpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5yYWRpb0NoZWNrZWQmJihlPXQudmFsdWUpfSkpLHQudmFsdWU9ZSx0LmtleT10aGlzLm5hbWV9cmV0dXJuIHR9fX0scz1hLGM9KG4oIjAxYWEiKSxuKCI4ODQ0IikpLHU9T2JqZWN0KGNbImEiXSkocyxyLGksITEsbnVsbCxudWxsLG51bGwpO2VbImRlZmF1bHQiXT11LmV4cG9ydHN9LCIzYWNmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwicGFnZVNjcm9sbFRvIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKTt2YXIgcj17c2Nyb2xsVG9wOnt0eXBlOk51bWJlcn0sZHVyYXRpb246e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MzAwLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe2UuZHVyYXRpb249TWF0aC5tYXgoMCx0KX19fX0sIjNiMmQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCIkb24iLChmdW5jdGlvbigpe3JldHVybiBzfSkpLG4uZChlLCIkb2ZmIiwoZnVuY3Rpb24oKXtyZXR1cm4gY30pKSxuLmQoZSwiJG9uY2UiLChmdW5jdGlvbigpe3JldHVybiB1fSkpLG4uZChlLCIkZW1pdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSk7dmFyIHI9bigiOTUxYyIpLGk9bi5uKHIpLG89bmV3IGkuYTtmdW5jdGlvbiBhKHQsZSxuKXtyZXR1cm4gdFtlXS5hcHBseSh0LG4pfWZ1bmN0aW9uIHMoKXtyZXR1cm4gYShvLCIkb24iLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfWZ1bmN0aW9uIGMoKXtyZXR1cm4gYShvLCIkb2ZmIixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKX1mdW5jdGlvbiB1KCl7cmV0dXJuIGEobywiJG9uY2UiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfWZ1bmN0aW9uIGwoKXtyZXR1cm4gYShvLCIkZW1pdCIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9fSwiM2I4ZCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsInNjYW5Db2RlIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKTt2YXIgcj17b25seUZyb21DYW1lcmE6e3R5cGU6Qm9vbGVhbn0sc2NhblR5cGU6e3R5cGU6QXJyYXl9LGF1dG9EZWNvZGVDaGFyU2V0Ont0eXBlOkJvb2xlYW59LHNvdW5kOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJub25lIn0sYXV0b1pvb206e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfX19LCIzYmJiIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwiY29tcHJlc3NWaWRlbyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSk7dmFyIHI9bigiNDczOCIpLGk9e3NyYzp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITAsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7ZS5zcmM9T2JqZWN0KHJbImEiXSkodCl9fSxxdWFsaXR5Ont0eXBlOlN0cmluZ30sYml0cmF0ZTp7dHlwZTpOdW1iZXJ9LGZwczp7dHlwZTpOdW1iZXJ9LHJlc29sdXRpb246e3R5cGU6TnVtYmVyfX19LCIzYmQ2IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwic2V0VGFiQmFySXRlbSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSksbi5kKGUsInNldFRhYkJhclN0eWxlIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKSxuLmQoZSwiaGlkZVRhYkJhciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSksbi5kKGUsInNob3dUYWJCYXIiLChmdW5jdGlvbigpe3JldHVybiB1fSkpLG4uZChlLCJoaWRlVGFiQmFyUmVkRG90IiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKSxuLmQoZSwic2hvd1RhYkJhclJlZERvdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKGUsInJlbW92ZVRhYkJhckJhZGdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxuLmQoZSwic2V0VGFiQmFyQmFkZ2UiLChmdW5jdGlvbigpe3JldHVybiBofSkpO3ZhciByPW4oIjM0MGQiKSxpPW4oIjQ3MzgiKSxvPXt0eXBlOk51bWJlcixyZXF1aXJlZDohMH0sYT17aW5kZXg6byx0ZXh0Ont0eXBlOlN0cmluZ30saWNvblBhdGg6e3R5cGU6U3RyaW5nfSxzZWxlY3RlZEljb25QYXRoOnt0eXBlOlN0cmluZ30scGFnZVBhdGg6e3R5cGU6U3RyaW5nfX0scz17Y29sb3I6e3R5cGU6U3RyaW5nfSxzZWxlY3RlZENvbG9yOnt0eXBlOlN0cmluZ30sYmFja2dyb3VuZENvbG9yOnt0eXBlOlN0cmluZ30sYmFja2dyb3VuZEltYWdlOnt0eXBlOlN0cmluZyx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXt0JiYhL14obGluZWFyfHJhZGlhbCktZ3JhZGllbnRcKC4rP1wpOz8kLy50ZXN0KHQpJiYoZS5iYWNrZ3JvdW5kSW1hZ2U9T2JqZWN0KGlbImEiXSkodCkpfX0sYmFja2dyb3VuZFJlcGVhdDp7dHlwZTpTdHJpbmd9LGJvcmRlclN0eWxlOnt0eXBlOlN0cmluZyx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXt0JiYoZS5ib3JkZXJTdHlsZT0iYmxhY2siPT09dD8iYmxhY2siOiJ3aGl0ZSIpfX19LGM9e2FuaW1hdGlvbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSx1PXthbmltYXRpb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfX0sbD17aW5kZXg6b30sZj17aW5kZXg6b30sZD17aW5kZXg6b30saD17aW5kZXg6byx0ZXh0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMCx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXtPYmplY3QoclsiaCJdKSh0KT49NCYmKGUudGV4dD0iLi4uIil9fX19LCIzYzVmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImRmNTAiKSxpPW4ubihyKTtpLmF9LCIzZDFlIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXtuLmQoZSwiZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSksbi5kKGUsImQiLChmdW5jdGlvbigpe3JldHVybiBsfSkpLG4uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKTt2YXIgcj1uKCJjZmY5IiksaT1uKCIyNjI2Iik7bi5kKGUsImIiLChmdW5jdGlvbigpe3JldHVybiBpWyJiIl19KSksbi5kKGUsImMiLChmdW5jdGlvbigpe3JldHVybiBpWyJjIl19KSk7dmFyIG89T2JqZWN0LmFzc2lnbjtmdW5jdGlvbiBhKCl7cmV0dXJue3BhdGg6IiIscXVlcnk6e30sc2NlbmU6MTAwMSxyZWZlcnJlckluZm86e2FwcElkOiIiLGV4dHJhRGF0YTp7fX19fXZhciBzPWEoKSxjPWEoKTtmdW5jdGlvbiB1KCl7cmV0dXJuIGN9ZnVuY3Rpb24gbCgpe3JldHVybiBzfWZ1bmN0aW9uIGYodCl7dmFyIGU9dC5wYXRoLG49dC5xdWVyeSxyPXQucmVmZXJyZXJJbmZvO3JldHVybiBvKGMse3BhdGg6ZSxxdWVyeTpufHx7fSxyZWZlcnJlckluZm86cnx8e319KSxvKHMsYyksY31mdW5jdGlvbiBkKGUsbixvKXtyZXR1cm57Y3JlYXRlZDpmdW5jdGlvbigpe09iamVjdChpWyJhIl0pKGUsdGhpcyxuKSxvLm1ldGEubmFtZXx8dC5lbWl0KCJvblBhZ2VOb3RGb3VuZCIse3BhdGg6by5wYXRoLHF1ZXJ5Om8ucXVlcnksaXNFbnRyeVBhZ2U6ITB9KX0sYmVmb3JlTW91bnQ6ZnVuY3Rpb24oKXt0aGlzLiRlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXBwIil9LG1vdW50ZWQ6ZnVuY3Rpb24oKXtmKHtwYXRoOnRoaXMuJHJvdXRlLm1ldGEmJnRoaXMuJHJvdXRlLm1ldGEucGFnZVBhdGgscXVlcnk6dGhpcy4kcm91dGUucXVlcnl9KSxPYmplY3QoclsiYSJdKSh0aGlzLCJvbkxhdW5jaCIsYyksT2JqZWN0KHJbImEiXSkodGhpcywib25TaG93IixzKX19fX0pLmNhbGwodGhpcyxuKCIyYzlmIikpfSwiM2Q4ZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJmNWU3IiksaT1uLm4ocik7aS5hfSwiM2U5MiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkMGFhIiksaT1uLm4ocik7aS5hfSwiM2ZjNSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsImRvd25sb2FkRmlsZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSk7dmFyIHI9e3VybDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LGhlYWRlcjp7dHlwZTpPYmplY3QsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7ZS5oZWFkZXI9dHx8e319fX19LCI0MThiIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXt2YXIgbj1BcnJheS5wcm90b3R5cGUudW5zaGlmdDtmdW5jdGlvbiByKHQpe3JldHVybiBuLmNhbGwodCwiW3N5c3RlbV0iKSx0fWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ITA7ImRlYnVnIiE9PWV8fF9fdW5pQ29uZmlnLmRlYnVnfHwobj0hMSksbiYmdC5jb25zb2xlW2VdLmFwcGx5KHQuY29uc29sZSxyKGFyZ3VtZW50cykpfX1lWyJkZWZhdWx0Il09e2xvZzppKCJsb2ciKSxpbmZvOmkoImluZm8iKSx3YXJuOmkoIndhcm4iKSxkZWJ1ZzppKCJkZWJ1ZyIpLGVycm9yOmkoImVycm9yIil9fS5jYWxsKHRoaXMsbigiMGVlNCIpKX0sIjQxOGMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe24uZChlLCJzZXROYXZpZ2F0aW9uQmFyQ29sb3IiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLCJzaG93TmF2aWdhdGlvbkJhckxvYWRpbmciLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZChlLCJoaWRlTmF2aWdhdGlvbkJhckxvYWRpbmciLChmdW5jdGlvbigpe3JldHVybiBzfSkpLG4uZChlLCJzZXROYXZpZ2F0aW9uQmFyVGl0bGUiLChmdW5jdGlvbigpe3JldHVybiBjfSkpO3ZhciByPW4oImQ0ZWUiKTtmdW5jdGlvbiBpKGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxpPU9iamVjdChyWyJnZXRQYWdlSG9sZGVyIl0pKG4uX19wYWdlX18pO2lmKGkpc3dpdGNoKGUpe2Nhc2Uic2V0TmF2aWdhdGlvbkJhckNvbG9yIjp2YXIgbz1uLmZyb250Q29sb3IsYT1uLmJhY2tncm91bmRDb2xvcixzPW4uYW5pbWF0aW9uLGM9cy5kdXJhdGlvbix1PXMudGltaW5nRnVuYztvJiYoaS5uYXZpZ2F0aW9uQmFyLnRleHRDb2xvcj0iIzAwMDAwMCI9PT1vPyJibGFjayI6IndoaXRlIiksYSYmKGkubmF2aWdhdGlvbkJhci5iYWNrZ3JvdW5kQ29sb3I9YSksdC5lbWl0KCJvbk5hdmlnYXRpb25CYXJDaGFuZ2UiLHt0ZXh0Q29sb3I6IiMwMDAwMDAiPT09bz8iIzAwMCI6IiNmZmYiLGJhY2tncm91bmRDb2xvcjppLm5hdmlnYXRpb25CYXIuYmFja2dyb3VuZENvbG9yfSksaS5uYXZpZ2F0aW9uQmFyLmR1cmF0aW9uPWMrIm1zIixpLm5hdmlnYXRpb25CYXIudGltaW5nRnVuYz11O2JyZWFrO2Nhc2Uic2hvd05hdmlnYXRpb25CYXJMb2FkaW5nIjppLm5hdmlnYXRpb25CYXIubG9hZGluZz0hMDticmVhaztjYXNlImhpZGVOYXZpZ2F0aW9uQmFyTG9hZGluZyI6aS5uYXZpZ2F0aW9uQmFyLmxvYWRpbmc9ITE7YnJlYWs7Y2FzZSJzZXROYXZpZ2F0aW9uQmFyVGl0bGUiOnZhciBsPW4udGl0bGU7aS5uYXZpZ2F0aW9uQmFyLnRpdGxlVGV4dD1sLE9iamVjdChyWyJpc0N1cnJlbnRQYWdlIl0pKGkpJiYoZG9jdW1lbnQudGl0bGU9bCksdC5lbWl0KCJvbk5hdmlnYXRpb25CYXJDaGFuZ2UiLHt0aXRsZVRleHQ6bH0pO2JyZWFrfXJldHVybnt9fWZ1bmN0aW9uIG8odCl7cmV0dXJuIGkoInNldE5hdmlnYXRpb25CYXJDb2xvciIsdCl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gaSgic2hvd05hdmlnYXRpb25CYXJMb2FkaW5nIix0KX1mdW5jdGlvbiBzKHQpe3JldHVybiBpKCJoaWRlTmF2aWdhdGlvbkJhckxvYWRpbmciLHQpfWZ1bmN0aW9uIGModCl7cmV0dXJuIGkoInNldE5hdmlnYXRpb25CYXJUaXRsZSIsdCl9fS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sIjQxY2IiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBhfSkpO3ZhciBpPW4oIjM0MGQiKTtmdW5jdGlvbiBvKHQpe3JldHVybiBvPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXIoU3ltYm9sLml0ZXJhdG9yKT9mdW5jdGlvbih0KXtyZXR1cm4gcih0KX06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjpyKHQpfSxvKHQpfWZ1bmN0aW9uIGEodCxlLG4pe3ZhciByPWVbdF0sbz0hT2JqZWN0KGlbImkiXSkobix0KSxhPW5bdF0sYz1kKEJvb2xlYW4sci50eXBlKTtpZihjPi0xJiZvJiYhT2JqZWN0KGlbImkiXSkociwiZGVmYXVsdCIpJiYoYT0hMSksdm9pZCAwPT09YSYmT2JqZWN0KGlbImkiXSkociwiZGVmYXVsdCIpKXt2YXIgdT1yLmRlZmF1bHQ7YT1PYmplY3QoaVsiayJdKSh1KT91KCk6dSxuW3RdPWF9cmV0dXJuIHMocix0LGEsbyxuKX1mdW5jdGlvbiBzKHQsZSxuLHIsaSl7aWYodC5yZXF1aXJlZCYmcilyZXR1cm4iTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXIgYCIuY29uY2F0KGUsImAiKTtpZihudWxsPT1uJiYhdC5yZXF1aXJlZCl7dmFyIG89dC52YWxpZGF0b3I7cmV0dXJuIG8/byhuLGkpOnZvaWQgMH12YXIgYT10LnR5cGUscz0hYXx8ITA9PT1hLGM9W107aWYoYSl7QXJyYXkuaXNBcnJheShhKXx8KGE9W2FdKTtmb3IodmFyIGw9MDtsPGEubGVuZ3RoJiYhcztsKyspe3ZhciBmPXUobixhW2xdKTtjLnB1c2goZi5leHBlY3RlZFR5cGV8fCIiKSxzPWYudmFsaWR9fWlmKCFzKXJldHVybiBoKGUsbixjKTt2YXIgZD10LnZhbGlkYXRvcjtyZXR1cm4gZD9kKG4saSk6dm9pZCAwfXZhciBjPS9eKFN0cmluZ3xOdW1iZXJ8Qm9vbGVhbnxGdW5jdGlvbnxTeW1ib2wpJC87ZnVuY3Rpb24gdSh0LGUpe3ZhciBuLHI9bChlKTtpZihjLnRlc3Qocikpe3ZhciBhPW8odCk7bj1hPT09ci50b0xvd2VyQ2FzZSgpLG58fCJvYmplY3QiIT09YXx8KG49dCBpbnN0YW5jZW9mIGUpfWVsc2Ugbj10LmJ5dGVMZW5ndGg+PTB8fCgiT2JqZWN0Ij09PXI/T2JqZWN0KGlbImwiXSkodCk6IkFycmF5Ij09PXI/QXJyYXkuaXNBcnJheSh0KTp0IGluc3RhbmNlb2YgZXx8T2JqZWN0KGlbInYiXSkodCk9PT1sKGUpKTtyZXR1cm57dmFsaWQ6bixleHBlY3RlZFR5cGU6cn19ZnVuY3Rpb24gbCh0KXt2YXIgZT10JiZ0LnRvU3RyaW5nKCkubWF0Y2goL15ccypmdW5jdGlvbiAoXHcrKS8pO3JldHVybiBlP2VbMV06IiJ9ZnVuY3Rpb24gZih0LGUpe3JldHVybiBsKHQpPT09bChlKX1mdW5jdGlvbiBkKHQsZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGYoZSx0KT8wOi0xO2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKylpZihmKGVbbl0sdCkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gaCh0LGUsbil7dmFyIHI9InBhcmFtZXRlciBgIi5jb25jYXQodCwiYC4iKSsiIEV4cGVjdGVkICIuY29uY2F0KG4uam9pbigiLCAiKSksbz1uWzBdLGE9T2JqZWN0KGlbInYiXSkoZSkscz1wKGUsbyksYz1wKGUsYSk7cmV0dXJuIDE9PT1uLmxlbmd0aCYmZyhvKSYmIW0obyxhKSYmKHIrPSIgd2l0aCB2YWx1ZSAiLmNvbmNhdChzKSkscis9IiwgZ290ICIuY29uY2F0KGEsIiAiKSxnKGEpJiYocis9IndpdGggdmFsdWUgIi5jb25jYXQoYywiLiIpKSxyfWZ1bmN0aW9uIHAodCxlKXtyZXR1cm4iU3RyaW5nIj09PWU/JyInLmNvbmNhdCh0LCciJyk6IiIuY29uY2F0KCJOdW1iZXIiPT09ZT9OdW1iZXIodCk6dCl9dmFyIHY9WyJzdHJpbmciLCJudW1iZXIiLCJib29sZWFuIl07ZnVuY3Rpb24gZyh0KXtyZXR1cm4gdi5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpPT09ZX0pKX1mdW5jdGlvbiBtKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkodCksbj0wO248dDtuKyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGUuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuImJvb2xlYW4iPT09dC50b0xvd2VyQ2FzZSgpfSkpfX0sNDIxMzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImY0YWMiKSxpPW4ubihyKTtpLmF9LCI0MmJmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJ1bmktcGFnZS1yZWZyZXNoIixbbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1wYWdlLXJlZnJlc2giLHN0eWxlOnsibWFyZ2luLXRvcCI6dC5vZmZzZXQrInB4In19LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXBhZ2UtcmVmcmVzaC1pbm5lciJ9LFtuKCJzdmciLHtzdGF0aWNDbGFzczoidW5pLXBhZ2UtcmVmcmVzaF9faWNvbiIsYXR0cnM6e2ZpbGw6dC5jb2xvcix3aWR0aDoiMjQiLGhlaWdodDoiMjQiLHZpZXdCb3g6IjAgMCAyNCAyNCJ9fSxbbigicGF0aCIse2F0dHJzOntkOiJNMTcuNjUgNi4zNUMxNi4yIDQuOSAxNC4yMSA0IDEyIDRjLTQuNDIgMC03Ljk5IDMuNTgtNy45OSA4czMuNTcgOCA3Ljk5IDhjMy43MyAwIDYuODQtMi41NSA3LjczLTZoLTIuMDhjLS44MiAyLjMzLTMuMDQgNC01LjY1IDQtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNmMxLjY2IDAgMy4xNC42OSA0LjIyIDEuNzhMMTMgMTFoN1Y0bC0yLjM1IDIuMzV6In19KSxuKCJwYXRoIix7YXR0cnM6e2Q6Ik0wIDBoMjR2MjRIMHoiLGZpbGw6Im5vbmUifX0pXSksbigic3ZnIix7c3RhdGljQ2xhc3M6InVuaS1wYWdlLXJlZnJlc2hfX3NwaW5uZXIiLGF0dHJzOnt3aWR0aDoiMjQiLGhlaWdodDoiMjQiLHZpZXdCb3g6IjI1IDI1IDUwIDUwIn19LFtuKCJjaXJjbGUiLHtzdGF0aWNDbGFzczoidW5pLXBhZ2UtcmVmcmVzaF9fcGF0aCIsYXR0cnM6e3N0cm9rZTp0LmNvbG9yLGN4OiI1MCIsY3k6IjUwIixyOiIyMCIsZmlsbDoibm9uZSIsInN0cm9rZS13aWR0aCI6IjQiLCJzdHJva2UtbWl0ZXJsaW1pdCI6IjEwIn19KV0pXSldKV0pfSxpPVtdLG89e25hbWU6IlBhZ2VSZWZyZXNoIixwcm9wczp7Y29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiMyQkQwMDkifSxvZmZzZXQ6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH19fSxhPW8scz0obigiYTIyZiIpLG4oIjg4NDQiKSksYz1PYmplY3Qoc1siYSJdKShhLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiYSJdPWMuZXhwb3J0c30sNDMzNTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2VbImEiXT17ZGF0YTpmdW5jdGlvbigpe3JldHVybntob3ZlcmluZzohMX19LHByb3BzOntob3ZlckNsYXNzOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJub25lIn0saG92ZXJTdG9wUHJvcGFnYXRpb246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxob3ZlclN0YXJ0VGltZTp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDo1MH0saG92ZXJTdGF5VGltZTp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDo0MDB9fSxtZXRob2RzOntfaG92ZXJUb3VjaFN0YXJ0OmZ1bmN0aW9uKHQpe3QudG91Y2hlcy5sZW5ndGg+MXx8dGhpcy5faGFuZGxlSG92ZXJTdGFydCh0KX0sX2hvdmVyTW91c2Vkb3duOmZ1bmN0aW9uKHQpe3RoaXMuX2hvdmVyVG91Y2h8fCh0aGlzLl9oYW5kbGVIb3ZlclN0YXJ0KHQpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLl9ob3Zlck1vdXNldXApKX0sX2hhbmRsZUhvdmVyU3RhcnQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0Ll9ob3ZlclByb3BhZ2F0aW9uU3RvcHBlZHx8dGhpcy5ob3ZlckNsYXNzJiYibm9uZSIhPT10aGlzLmhvdmVyQ2xhc3MmJiF0aGlzLmRpc2FibGVkJiYodGhpcy5ob3ZlclN0b3BQcm9wYWdhdGlvbiYmKHQuX2hvdmVyUHJvcGFnYXRpb25TdG9wcGVkPSEwKSx0aGlzLl9ob3ZlclRvdWNoPSEwLHRoaXMuX2hvdmVyU3RhcnRUaW1lcj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2UuaG92ZXJpbmc9ITAsZS5faG92ZXJUb3VjaHx8ZS5faG92ZXJSZXNldCgpfSksdGhpcy5ob3ZlclN0YXJ0VGltZSkpfSxfaG92ZXJNb3VzZXVwOmZ1bmN0aW9uKCl7dGhpcy5faG92ZXJUb3VjaCYmKHRoaXMuX2hhbmRsZUhvdmVyRW5kKCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuX2hvdmVyTW91c2V1cCkpfSxfaG92ZXJUb3VjaEVuZDpmdW5jdGlvbigpe3RoaXMuX2hhbmRsZUhvdmVyRW5kKCl9LF9oYW5kbGVIb3ZlckVuZDpmdW5jdGlvbigpe3RoaXMuX2hvdmVyVG91Y2g9ITEsdGhpcy5ob3ZlcmluZyYmdGhpcy5faG92ZXJSZXNldCgpfSxfaG92ZXJSZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0Ll9ob3ZlclN0YXlUaW1lciksdC5faG92ZXJTdGF5VGltZXI9c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LmhvdmVyaW5nPSExfSksdC5ob3ZlclN0YXlUaW1lKX0pKX0sX2hvdmVyVG91Y2hDYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLl9ob3ZlclRvdWNoPSExLHRoaXMuaG92ZXJpbmc9ITEsY2xlYXJUaW1lb3V0KHRoaXMuX2hvdmVyU3RhcnRUaW1lcil9fX19LCI0M2RmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwic2F2ZUZpbGUiLChmdW5jdGlvbigpe3JldHVybiBpfSkpLG4uZChlLCJnZXRGaWxlSW5mbyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSksbi5kKGUsImdldFNhdmVkRmlsZUluZm8iLChmdW5jdGlvbigpe3JldHVybiBzfSkpLG4uZChlLCJyZW1vdmVTYXZlZEZpbGUiLChmdW5jdGlvbigpe3JldHVybiBjfSkpO3ZhciByPW4oIjQ3MzgiKSxpPXt0ZW1wRmlsZVBhdGg6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe2UudGVtcEZpbGVQYXRoPU9iamVjdChyWyJhIl0pKHQpfX19LG89WyJtZDUiLCJzaGExIl0sYT17ZmlsZVBhdGg6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe2UuZmlsZVBhdGg9T2JqZWN0KHJbImEiXSkodCl9fSxkaWdlc3RBbGdvcml0aG06e3R5cGU6U3RyaW5nLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe2UuZGlnZXN0QWxnb3JpdGhtPW8uaW5jbHVkZXModCk/dDpvWzBdfSxkZWZhdWx0Om9bMF19fSxzPXtmaWxlUGF0aDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITAsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7ZS5maWxlUGF0aD1PYmplY3QoclsiYSJdKSh0KX19fSxjPXtmaWxlUGF0aDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITAsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7ZS5maWxlUGF0aD1PYmplY3QoclsiYSJdKSh0KX19fX0sNDQ0MjpmdW5jdGlvbih0LGUsbil7dmFyIGk9ZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO3ZhciBlLG49T2JqZWN0LnByb3RvdHlwZSxpPW4uaGFzT3duUHJvcGVydHksbz0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1vLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIscz1vLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLGM9by50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIHUodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnP2U6ZyxvPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLGE9bmV3IEUocnx8W10pO3JldHVybiBvLl9pbnZva2U9Qyh0LG4sYSksb31mdW5jdGlvbiBsKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaChpKXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzppfX19dC53cmFwPXU7dmFyIGY9InN1c3BlbmRlZFN0YXJ0IixkPSJzdXNwZW5kZWRZaWVsZCIsaD0iZXhlY3V0aW5nIixwPSJjb21wbGV0ZWQiLHY9e307ZnVuY3Rpb24gZygpe31mdW5jdGlvbiBtKCl7fWZ1bmN0aW9uIGIoKXt9dmFyIHk9e307eVthXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt2YXIgXz1PYmplY3QuZ2V0UHJvdG90eXBlT2Ysdz1fJiZfKF8oaihbXSkpKTt3JiZ3IT09biYmaS5jYWxsKHcsYSkmJih5PXcpO3ZhciBTPWIucHJvdG90eXBlPWcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeSk7ZnVuY3Rpb24geCh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbZV09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfX0pKX1mdW5jdGlvbiBrKHQsZSl7ZnVuY3Rpb24gbihvLGEscyxjKXt2YXIgdT1sKHRbb10sdCxhKTtpZigidGhyb3ciIT09dS50eXBlKXt2YXIgZj11LmFyZyxkPWYudmFsdWU7cmV0dXJuIGQmJiJvYmplY3QiPT09cihkKSYmaS5jYWxsKGQsIl9fYXdhaXQiKT9lLnJlc29sdmUoZC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LHMsYyl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQscyxjKX0pKTplLnJlc29sdmUoZCkudGhlbigoZnVuY3Rpb24odCl7Zi52YWx1ZT10LHMoZil9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LHMsYyl9KSl9Yyh1LmFyZyl9dmFyIG87ZnVuY3Rpb24gYSh0LHIpe2Z1bmN0aW9uIGkoKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsaSl7bih0LHIsZSxpKX0pKX1yZXR1cm4gbz1vP28udGhlbihpLGkpOmkoKX10aGlzLl9pbnZva2U9YX1mdW5jdGlvbiBDKHQsZSxuKXt2YXIgcj1mO3JldHVybiBmdW5jdGlvbihpLG8pe2lmKHI9PT1oKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKHI9PT1wKXtpZigidGhyb3ciPT09aSl0aHJvdyBvO3JldHVybiBNKCl9bi5tZXRob2Q9aSxuLmFyZz1vO3doaWxlKDEpe3ZhciBhPW4uZGVsZWdhdGU7aWYoYSl7dmFyIHM9VChhLG4pO2lmKHMpe2lmKHM9PT12KWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1uLm1ldGhvZCluLnNlbnQ9bi5fc2VudD1uLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1uLm1ldGhvZCl7aWYocj09PWYpdGhyb3cgcj1wLG4uYXJnO24uZGlzcGF0Y2hFeGNlcHRpb24obi5hcmcpfWVsc2UicmV0dXJuIj09PW4ubWV0aG9kJiZuLmFicnVwdCgicmV0dXJuIixuLmFyZyk7cj1oO3ZhciBjPWwodCxlLG4pO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihyPW4uZG9uZT9wOmQsYy5hcmc9PT12KWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOm4uZG9uZX19InRocm93Ij09PWMudHlwZSYmKHI9cCxuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWMuYXJnKX19fWZ1bmN0aW9uIFQodCxuKXt2YXIgcj10Lml0ZXJhdG9yW24ubWV0aG9kXTtpZihyPT09ZSl7aWYobi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1uLm1ldGhvZCl7aWYodC5pdGVyYXRvclsicmV0dXJuIl0mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz1lLFQodCxuKSwidGhyb3ciPT09bi5tZXRob2QpKXJldHVybiB2O24ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiB2fXZhciBpPWwocix0Lml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCx2O3ZhciBvPWkuYXJnO3JldHVybiBvP28uZG9uZT8oblt0LnJlc3VsdE5hbWVdPW8udmFsdWUsbi5uZXh0PXQubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPWUpLG4uZGVsZWdhdGU9bnVsbCx2KTpvOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLHYpfWZ1bmN0aW9uIE8odCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gQSh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gRSh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKE8sdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gaih0KXtpZih0KXt2YXIgbj10W2FdO2lmKG4pcmV0dXJuIG4uY2FsbCh0KTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHQubmV4dClyZXR1cm4gdDtpZighaXNOYU4odC5sZW5ndGgpKXt2YXIgcj0tMSxvPWZ1bmN0aW9uIG4oKXt3aGlsZSgrK3I8dC5sZW5ndGgpaWYoaS5jYWxsKHQscikpcmV0dXJuIG4udmFsdWU9dFtyXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT1lLG4uZG9uZT0hMCxufTtyZXR1cm4gby5uZXh0PW99fXJldHVybntuZXh0Ok19fWZ1bmN0aW9uIE0oKXtyZXR1cm57dmFsdWU6ZSxkb25lOiEwfX1yZXR1cm4gbS5wcm90b3R5cGU9Uy5jb25zdHJ1Y3Rvcj1iLGIuY29uc3RydWN0b3I9bSxiW2NdPW0uZGlzcGxheU5hbWU9IkdlbmVyYXRvckZ1bmN0aW9uIix0LmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT1tfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSx0Lm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxiKToodC5fX3Byb3RvX189YixjIGluIHR8fCh0W2NdPSJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFMpLHR9LHQuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LHgoay5wcm90b3R5cGUpLGsucHJvdG90eXBlW3NdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQuQXN5bmNJdGVyYXRvcj1rLHQuYXN5bmM9ZnVuY3Rpb24oZSxuLHIsaSxvKXt2b2lkIDA9PT1vJiYobz1Qcm9taXNlKTt2YXIgYT1uZXcgayh1KGUsbixyLGkpLG8pO3JldHVybiB0LmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LHgoUyksU1tjXT0iR2VuZXJhdG9yIixTW2FdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LFMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0sdC5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaChuKTtyZXR1cm4gZS5yZXZlcnNlKCksZnVuY3Rpb24gbigpe3doaWxlKGUubGVuZ3RoKXt2YXIgcj1lLnBvcCgpO2lmKHIgaW4gdClyZXR1cm4gbi52YWx1ZT1yLG4uZG9uZT0hMSxufXJldHVybiBuLmRvbmU9ITAsbn19LHQudmFsdWVzPWosRS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkUscmVzZXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9ZSx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz1lLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEEpLCF0KWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZpLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09ZSl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLGU9dC5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24odCl7aWYodGhpcy5kb25lKXRocm93IHQ7dmFyIG49dGhpcztmdW5jdGlvbiByKHIsaSl7cmV0dXJuIHMudHlwZT0idGhyb3ciLHMuYXJnPXQsbi5uZXh0PXIsaSYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz1lKSwhIWl9Zm9yKHZhciBvPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtvPj0wOy0tbyl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW29dLHM9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiByKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgYz1pLmNhbGwoYSwiY2F0Y2hMb2MiKSx1PWkuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYoYyYmdSl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIHIoYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gcihhLmZpbmFsbHlMb2MpfWVsc2UgaWYoYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIHIoYS5jYXRjaExvYywhMCl9ZWxzZXtpZighdSl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gcihhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgcj10aGlzLnRyeUVudHJpZXNbbl07aWYoci50cnlMb2M8PXRoaXMucHJldiYmaS5jYWxsKHIsImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PHIuZmluYWxseUxvYyl7dmFyIG89cjticmVha319byYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJm8udHJ5TG9jPD1lJiZlPD1vLmZpbmFsbHlMb2MmJihvPW51bGwpO3ZhciBhPW8/by5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLG8/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9by5maW5hbGx5TG9jLHYpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksdn0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxBKG4pLHZ9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIGk9ci5hcmc7QShuKX1yZXR1cm4gaX19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOmoodCkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz1lKSx2fX0sdH0odC5leHBvcnRzKTt0cnl7cmVnZW5lcmF0b3JSdW50aW1lPWl9Y2F0Y2gobyl7RnVuY3Rpb24oInIiLCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByIikoaSl9fSw0NDk4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCIjY2xpcGJvYXJkIiksZT10P3QudmFsdWU6dm9pZCAwO3JldHVybiBlP3tkYXRhOmUsZXJyTXNnOiJnZXRDbGlwYm9hcmREYXRhOm9rIn06e2Vyck1zZzoiZ2V0Q2xpcGJvYXJkRGF0YTpmYWlsIn19ZnVuY3Rpb24gaSh0KXt2YXIgZT10LmRhdGEsbj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiI2NsaXBib2FyZCIpO24mJm4ucmVtb3ZlKCk7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtyLnNldEF0dHJpYnV0ZSgiaW5wdXRtb2RlIiwibm9uZSIpLHIuaWQ9IiNjbGlwYm9hcmQiLHIuc3R5bGUucG9zaXRpb249ImZpeGVkIixyLnN0eWxlLnRvcD0iLTk5OTlweCIsci5zdHlsZS56SW5kZXg9Ii05OTk5Iixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHIpLHIudmFsdWU9ZSxyLnNlbGVjdCgpLHIuc2V0U2VsZWN0aW9uUmFuZ2UoMCxyLnZhbHVlLmxlbmd0aCk7dmFyIGk9ZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkNvcHkiLCExLG51bGwpO3JldHVybiByLmJsdXIoKSxpP3tlcnJNc2c6InNldENsaXBib2FyZERhdGE6b2sifTp7ZXJyTXNnOiJzZXRDbGlwYm9hcmREYXRhOmZhaWwifX1uLnIoZSksbi5kKGUsImdldENsaXBib2FyZERhdGEiLChmdW5jdGlvbigpe3JldHVybiByfSkpLG4uZChlLCJzZXRDbGlwYm9hcmREYXRhIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKX0sIjQ0YjkiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJjb21wcmVzc0ltYWdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKTt2YXIgcj1uKCI0NzM4IiksaT17c3JjOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMCx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXtlLnNyYz1PYmplY3QoclsiYSJdKSh0KX19fX0sIjQ0ZjEiOmZ1bmN0aW9uKHQsZSxuKXt0LmV4cG9ydHM9bigiNDQ0MiIpfSwiNDVhMiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9bigiOTUxYyIpLGk9bi5uKHIpLG89ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInVuaS1hcHAiLHtjbGFzczp7InVuaS1hcHAtLXNob3d0YWJiYXIiOnQuc2hvd1RhYkJhciwidW5pLWFwcC0tbWF4d2lkdGgiOnQuc2hvd01heFdpZHRofX0sW24oImxheW91dCIse3JlZjoibGF5b3V0IixhdHRyczp7InJvdXRlci1rZXkiOnQua2V5LCJrZWVwLWFsaXZlLWluY2x1ZGUiOnQua2VlcEFsaXZlSW5jbHVkZX0sb246e21heFdpZHRoOnQub25NYXhXaWR0aCxsYXlvdXQ6dC5vbkxheW91dH19KSx0Lmhhc1RhYkJhcj9uKCJ0YWItYmFyIix0Ll9iKHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTp0LnNob3dUYWJCYXIsZXhwcmVzc2lvbjoic2hvd1RhYkJhciJ9XSxyZWY6InRhYkJhciJ9LCJ0YWItYmFyIix0LnRhYkJhck9wdGlvbnMsITEpKTp0Ll9lKCksdC4kb3B0aW9ucy5jb21wb25lbnRzLlRvYXN0P24oInRvYXN0Iix0Ll9iKHt9LCJ0b2FzdCIsdC5zaG93VG9hc3QsITEpKTp0Ll9lKCksdC4kb3B0aW9ucy5jb21wb25lbnRzLkFjdGlvblNoZWV0P24oImFjdGlvbi1zaGVldCIsdC5fYih7b246e2Nsb3NlOnQuX29uQWN0aW9uU2hlZXRDbG9zZX19LCJhY3Rpb24tc2hlZXQiLHQuc2hvd0FjdGlvblNoZWV0LCExKSk6dC5fZSgpLHQuJG9wdGlvbnMuY29tcG9uZW50cy5Nb2RhbD9uKCJtb2RhbCIsdC5fYih7b246e2Nsb3NlOnQuX29uTW9kYWxDbG9zZX19LCJtb2RhbCIsdC5zaG93TW9kYWwsITEpKTp0Ll9lKCksdC4kb3B0aW9ucy5jb21wb25lbnRzLlByZXZpZXdJbWFnZT9uKCJwcmV2aWV3LWltYWdlIix0Ll9iKHtvbjp7Y2xvc2U6dC5fb25QcmV2aWV3Q2xvc2V9fSwicHJldmlldy1pbWFnZSIsdC5wcmV2aWV3SW1hZ2UsITEpKTp0Ll9lKCksdC5zeXNDb21wb25lbnRzJiZ0LnN5c0NvbXBvbmVudHMubGVuZ3RoP3QuX2wodC5zeXNDb21wb25lbnRzLChmdW5jdGlvbih0LGUpe3JldHVybiBuKHQse2tleTplLHRhZzoiY29tcG9uZW50In0pfSkpOnQuX2UoKV0sMil9LGE9W10scz1uKCI3ZDk2IiksYz1zWyJhIl0sdT0obigiOGEyNCIpLG4oIjg4NDQiKSksbD1PYmplY3QodVsiYSJdKShjLG8sYSwhMSxudWxsLG51bGwsbnVsbCksZj1sLmV4cG9ydHMsZD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbigidW5pLXBhZ2UiLHthdHRyczp7ImRhdGEtcGFnZSI6dC4kcm91dGUubWV0YS5wYWdlUGF0aH19LFsibm9uZSIhPT10Lm5hdmlnYXRpb25CYXIudHlwZT9uKCJwYWdlLWhlYWQiLHQuX2Ioe30sInBhZ2UtaGVhZCIsdC5uYXZpZ2F0aW9uQmFyLCExKSk6dC5fZSgpLHQuZW5hYmxlUHVsbERvd25SZWZyZXNoP24oInBhZ2UtcmVmcmVzaCIse3JlZjoicmVmcmVzaCIsYXR0cnM6e2NvbG9yOnQucmVmcmVzaE9wdGlvbnMuY29sb3Isb2Zmc2V0OnQucmVmcmVzaE9wdGlvbnMub2Zmc2V0fX0pOnQuX2UoKSx0LmVuYWJsZVB1bGxEb3duUmVmcmVzaD9uKCJwYWdlLWJvZHkiLHtuYXRpdmVPbjp7dG91Y2hzdGFydDpmdW5jdGlvbihlKXtyZXR1cm4gdC5fdG91Y2hzdGFydChlKX0sdG91Y2htb3ZlOmZ1bmN0aW9uKGUpe3JldHVybiB0Ll90b3VjaG1vdmUoZSl9LHRvdWNoZW5kOmZ1bmN0aW9uKGUpe3JldHVybiB0Ll90b3VjaGVuZChlKX0sdG91Y2hjYW5jZWw6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX3RvdWNoZW5kKGUpfX19LFt0Ll90KCJwYWdlIildLDIpOm4oInBhZ2UtYm9keSIsW3QuX3QoInBhZ2UiKV0sMildLDEpfSxoPVtdLHA9bigiZTViMyIpLHY9cFsiYSJdLGc9KG4oImZjN2MiKSxPYmplY3QodVsiYSJdKSh2LGQsaCwhMSxudWxsLG51bGwsbnVsbCkpLG09Zy5leHBvcnRzLGI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktYXN5bmMtZXJyb3IiLG9uOntjbGljazp0Ll9vbkNsaWNrfX0sW3QuX3YoIiAiK3QuX3ModC4kJHQoInVuaS5hc3luYy5lcnJvciIpKSsiICIpXSl9LHk9W10sXz1uKCIwMzcyIiksdz17bmFtZToiQXN5bmNFcnJvciIsbWl4aW5zOltfWyJjIl1dLG1ldGhvZHM6e19vbkNsaWNrOmZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfX19LFM9dyx4PShuKCI1NTA1IiksT2JqZWN0KHVbImEiXSkoUyxiLHksITEsbnVsbCxudWxsLG51bGwpKSxrPXguZXhwb3J0cyxDPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LiRjcmVhdGVFbGVtZW50O3JldHVybiB0Ll9zZWxmLl9jLHQuX20oMCl9LFQ9W2Z1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLWFzeW5jLWxvYWRpbmcifSxbbigiaSIse3N0YXRpY0NsYXNzOiJ1bmktbG9hZGluZyJ9KV0pfV0sTz17bmFtZToiQXN5bmNMb2FkaW5nIn0sQT1PLEU9KG4oImQ5MzciKSxPYmplY3QodVsiYSJdKShBLEMsVCwhMSxudWxsLG51bGwsbnVsbCkpLGo9RS5leHBvcnRzLE09ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIHQuaGFzVGFiQmFyP24oInVuaS10YWJiYXIiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTp0LnNob3dUYWJCYXIsZXhwcmVzc2lvbjoic2hvd1RhYkJhciJ9XX0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdGFiYmFyIixzdHlsZTp7ImZsZXgtZGlyZWN0aW9uIjoidmVydGljYWwiPT09dC5kaXJlY3Rpb24/ImNvbHVtbiI6InJvdyIsYmFja2dyb3VuZENvbG9yOnQudGFiQmFyT3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3J9fSxbdC5fbCh0LnRhYkJhck9wdGlvbnMubGlzdCwoZnVuY3Rpb24oZSxyKXtyZXR1cm5bITEhPT1lLnZpc2libGU/bigiZGl2Iix7a2V5OmUucGFnZVBhdGgsc3RhdGljQ2xhc3M6InVuaS10YWJiYXJfX2l0ZW0iLG9uOntjbGljazpmdW5jdGlvbihuKXtyZXR1cm4gdC5fc3dpdGNoVGFiKGUscil9fX0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdGFiYmFyX19iZCJ9LFt0LnNob3dJY29uJiZlLmljb25QYXRoP24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdGFiYmFyX19pY29uIixjbGFzczp7InVuaS10YWJiYXJfX2ljb25fX2RpZmYiOiFlLnRleHR9fSxbbigiaW1nIix7YXR0cnM6e3NyYzp0Ll9nZXRSZWFsUGF0aCh0LnNlbGVjdGVkSW5kZXg9PT1yP2Uuc2VsZWN0ZWRJY29uUGF0aDplLmljb25QYXRoKX19KSxlLnJlZERvdD9uKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXRhYmJhcl9fcmVkZG90IixjbGFzczp7InVuaS10YWJiYXJfX2JhZGdlIjohIWUuYmFkZ2V9fSxbdC5fdigiICIrdC5fcyhlLmJhZGdlKSsiICIpXSk6dC5fZSgpXSk6dC5fZSgpLGUudGV4dD9uKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXRhYmJhcl9fbGFiZWwiLHN0eWxlOntjb2xvcjp0LnNlbGVjdGVkSW5kZXg9PT1yP3QudGFiQmFyT3B0aW9ucy5zZWxlY3RlZENvbG9yOnQudGFiQmFyT3B0aW9ucy5jb2xvcixmb250U2l6ZTp0LnNob3dJY29uJiZlLmljb25QYXRoPyIxMHB4IjoiMTRweCJ9fSxbdC5fdigiICIrdC5fcyhlLnRleHQpKyIgIiksIWUucmVkRG90fHx0LnNob3dJY29uJiZlLmljb25QYXRoP3QuX2UoKTpuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXRhYmJhcl9fcmVkZG90IixjbGFzczp7InVuaS10YWJiYXJfX2JhZGdlIjohIWUuYmFkZ2V9fSxbdC5fdigiICIrdC5fcyhlLmJhZGdlKSsiICIpXSldKTp0Ll9lKCldKV0pOnQuX2UoKV19KSldLDIpXSk6dC5fZSgpfSxJPVtdLFA9bigiOGI3NyIpLCQ9UFsiYSJdLEw9T2JqZWN0KHVbImEiXSkoJCxNLEksITEsbnVsbCxudWxsLG51bGwpLFI9TC5leHBvcnRzLE49ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktc3lzdGVtLWNob29zZS1sb2NhdGlvbiJ9LFtuKCJ2LXVuaS1tYXAiLHtzdGF0aWNDbGFzczoibWFwIixhdHRyczp7bGF0aXR1ZGU6dC5sYXRpdHVkZSxsb25naXR1ZGU6dC5sb25naXR1ZGUsInNob3ctbG9jYXRpb24iOiIiLGxpYnJhcmllczpbInBsYWNlcyJdfSxvbjp7dXBkYXRlZDp0LmdldExpc3QscmVnaW9uY2hhbmdlOnQub25SZWdpb25DaGFuZ2V9fSxbbigiZGl2Iix7c3RhdGljQ2xhc3M6Im1hcC1sb2NhdGlvbiIsc3R5bGU6dC5sb2NhdGlvblN0eWxlfSksbigiZGl2Iix7c3RhdGljQ2xhc3M6Im1hcC1tb3ZlIixvbjp7Y2xpY2s6dC5tb3ZlVG9Mb2NhdGlvbn19LFtuKCJpIixbdC5fdigi7rCyIildKV0pXSksbigiZGl2Iix7c3RhdGljQ2xhc3M6Im5hdiJ9LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoibmF2LWJ0biBiYWNrIixvbjp7Y2xpY2s6dC5iYWNrfX0sW24oImkiLHtzdGF0aWNDbGFzczoidW5pLWJ0bi1pY29uIn0sW3QuX3YoIu6ZkCIpXSldKSxuKCJkaXYiLHtzdGF0aWNDbGFzczoibmF2LWJ0biBjb25maXJtIixjbGFzczp7ZGlzYWJsZTohdC5zZWxlY3RlZH0sb246e2NsaWNrOnQuY2hvb3NlfX0sW24oImkiLHtzdGF0aWNDbGFzczoidW5pLWJ0bi1pY29uIn0sW3QuX3YoIu6ZkSIpXSldKV0pLG4oImRpdiIse3N0YXRpY0NsYXNzOiJtZW51In0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJzZWFyY2gifSxbbigidi11bmktaW5wdXQiLHtzdGF0aWNDbGFzczoic2VhcmNoLWlucHV0IixhdHRyczp7cGxhY2Vob2xkZXI6dC4kJHQoInVuaS5jaG9vc2VMb2NhdGlvbi5zZWFyY2giKX0sb246e2ZvY3VzOmZ1bmN0aW9uKGUpe3Quc2VhcmNoaW5nPSEwfSxpbnB1dDp0LmlucHV0fSxtb2RlbDp7dmFsdWU6dC5rZXl3b3JkLGNhbGxiYWNrOmZ1bmN0aW9uKGUpe3Qua2V5d29yZD1lfSxleHByZXNzaW9uOiJrZXl3b3JkIn19KSx0LnNlYXJjaGluZz9uKCJkaXYiLHtzdGF0aWNDbGFzczoic2VhcmNoLWJ0biIsb246e2NsaWNrOmZ1bmN0aW9uKGUpe3Quc2VhcmNoaW5nPSExLHQua2V5d29yZD0iIn19fSxbdC5fdigiICIrdC5fcyh0LiQkdCgidW5pLmNob29zZUxvY2F0aW9uLmNhbmNlbCIpKSsiICIpXSk6dC5fZSgpXSwxKSxuKCJ2LXVuaS1zY3JvbGwtdmlldyIse3N0YXRpY0NsYXNzOiJsaXN0IixhdHRyczp7InNjcm9sbC15IjoiIn0sb246e3Njcm9sbHRvbG93ZXI6dC5sb2FkTW9yZX19LFt0LmxvYWRpbmc/bigiZGl2Iix7c3RhdGljQ2xhc3M6Imxpc3QtbG9hZGluZyJ9LFtuKCJpIix7c3RhdGljQ2xhc3M6InVuaS1sb2FkaW5nIn0pXSk6dC5fZSgpLHQuX2wodC5saXN0LChmdW5jdGlvbihlLHIpe3JldHVybiBuKCJkaXYiLHtrZXk6cixzdGF0aWNDbGFzczoibGlzdC1pdGVtIixjbGFzczp7c2VsZWN0ZWQ6dC5zZWxlY3RlZEluZGV4PT09cn0sb246e2NsaWNrOmZ1bmN0aW9uKG4pe3Quc2VsZWN0ZWRJbmRleD1yLHQubGF0aXR1ZGU9ZS5sYXRpdHVkZSx0LmxvbmdpdHVkZT1lLmxvbmdpdHVkZX19fSxbbigiZGl2Iix7c3RhdGljQ2xhc3M6Imxpc3QtaXRlbS10aXRsZSJ9LFt0Ll92KCIgIit0Ll9zKGUubmFtZSkrIiAiKV0pLG4oImRpdiIse3N0YXRpY0NsYXNzOiJsaXN0LWl0ZW0tZGV0YWlsIn0sW3QuX3YoIiAiK3QuX3ModC5fZigiZGlzdGFuY2UiKShlLmRpc3RhbmNlKSkrdC5fcyhlLmFkZHJlc3MpKyIgIildKV0pfSkpXSwyKV0sMSldLDEpfSxEPVtdLEI9bigiNGVkNCIpLEY9QlsiYSJdLHo9KG4oImIxNmIiKSxPYmplY3QodVsiYSJdKShGLE4sRCwhMSxudWxsLG51bGwsbnVsbCkpLFc9ei5leHBvcnRzLEg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktc3lzdGVtLW9wZW4tbG9jYXRpb24ifSxbbigidi11bmktbWFwIix7c3RhdGljQ2xhc3M6Im1hcCIsYXR0cnM6e2xhdGl0dWRlOnQuY2VudGVyLmxhdGl0dWRlLGxvbmdpdHVkZTp0LmNlbnRlci5sb25naXR1ZGUsbWFya2VyczpbdC5tYXJrZXIsdC5sb2NhdGlvbl19LG9uOntyZWdpb25jaGFuZ2U6dC5vblJlZ2lvbkNoYW5nZX19LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoibWFwLW1vdmUiLG9uOntjbGljazpmdW5jdGlvbihlKXtyZXR1cm4gdC5zZXRDZW50ZXIodC5sb2NhdGlvbil9fX0sW24oImkiLFt0Ll92KCLusLIiKV0pXSldKSxuKCJkaXYiLHtzdGF0aWNDbGFzczoiaW5mbyJ9LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoibmFtZSIsb246e2NsaWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0LnNldENlbnRlcih0Lm1hcmtlcil9fX0sW3QuX3YoIiAiK3QuX3ModC5uYW1lKSsiICIpXSksbigiZGl2Iix7c3RhdGljQ2xhc3M6ImFkZHJlc3MiLG9uOntjbGljazpmdW5jdGlvbihlKXtyZXR1cm4gdC5zZXRDZW50ZXIodC5tYXJrZXIpfX19LFt0Ll92KCIgIit0Ll9zKHQuYWRkcmVzcykrIiAiKV0pLG4oImRpdiIse3N0YXRpY0NsYXNzOiJuYXYiLG9uOntjbGljazp0Lm5hdn19LFtuKCJzdmciLHthdHRyczp7d2lkdGg6IjI2IixoZWlnaHQ6IjI2Iix2aWV3Qm94OiIwIDAgMTAyNCAxMDI0Iix2ZXJzaW9uOiIxLjEiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9fSxbbigicGF0aCIse2F0dHJzOntkOiJNODk2IDU0NGMtMjA3LjgwNyAwLTM4OC4zOTEgODIuMjUzLTQ4MCAyMDMuMTQ5VjE3My4xMzZsMjAxLjU1NSAyMDEuNTU1YzEyLjQxMiAxMi40MTIgMzIuNzIzIDEyLjQxMiA0NS4xMzYgMCAxMi40MTItMTIuNDEyIDEyLjQxMi0zMi43MjMgMC00NS4xMzZMNDA4LjkxMyA3NS43NzdhMzEuOTMgMzEuOTMgMCAwIDAtMi4yMjItMi40NjhjLTYuMjIyLTYuMjIyLTE0LjQyOS05LjMyNC0yMi42MzEtOS4zMDhsLTAuMDU5LTAuMDAyLTAuMDU5IDAuMDAyYy04LjIwMi0wLjAxNi0xNi40MDkgMy4wODUtMjIuNjMxIDkuMzA4YTMxLjkzIDMxLjkzIDAgMCAwLTIuMjIyIDIuNDY4bC0yNTMuNzggMjUzLjc3OGMtMTIuNDEyIDEyLjQxMi0xMi40MTIgMzIuNzIzIDAgNDUuMTM2IDEyLjQxMiAxMi40MTIgMzIuNzIzIDEyLjQxMiA0NS4xMzYgMEwzNTIgMTczLjEzNlY5MjhjMCAxNy42IDE0LjQgMzIgMzIgMzJzMzItMTQuNCAzMi0zMmMwLTE3Ni43MzEgMjE0LjkwMy0zMjAgNDgwLTMyMCAxNy42NzMgMCAzMi0xNC4zMjcgMzItMzIgMC0xNy42NzMtMTQuMzI3LTMyLTMyLTMyeiIsZmlsbDoiI2ZmZmZmZiJ9fSldKV0pXSksbigiZGl2Iix7c3RhdGljQ2xhc3M6Im5hdi1idG4tYmFjayIsb246e2NsaWNrOnQuYmFja319LFtuKCJpIix7c3RhdGljQ2xhc3M6InVuaS1idG4taWNvbiJ9LFt0Ll92KCLumIEiKV0pXSldLDEpfSxVPVtdLHE9bigiYjQzNSIpLFY9e25hbWU6IlN5c3RlbU9wZW5Mb2NhdGlvbiIsZGF0YTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJHJvdXRlLnF1ZXJ5LGU9dC5sYXRpdHVkZSxuPXQubG9uZ2l0dWRlLHI9dC5zY2FsZSxpPXZvaWQgMD09PXI/MTg6cixvPXQubmFtZSxhPXZvaWQgMD09PW8/IiI6byxzPXQuYWRkcmVzcyxjPXZvaWQgMD09PXM/IiI6cztyZXR1cm57bGF0aXR1ZGU6ZSxsb25naXR1ZGU6bixzY2FsZTppLG5hbWU6YSxhZGRyZXNzOmMsY2VudGVyOntsYXRpdHVkZTplLGxvbmdpdHVkZTpufSxtYXJrZXI6e2lkOjEsbGF0aXR1ZGU6ZSxsb25naXR1ZGU6bixpY29uUGF0aDpxWyJiIl0sd2lkdGg6MzIsaGVpZ2h0OjUyfSxsb2NhdGlvbjp7aWQ6MixsYXRpdHVkZTowLGxvbmdpdHVkZTowLGljb25QYXRoOnFbImEiXSx3aWR0aDo0NCxoZWlnaHQ6NDR9fX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dW5pLmdldExvY2F0aW9uKHt0eXBlOiJnY2owMiIsc3VjY2VzczpmdW5jdGlvbihlKXt2YXIgbj1lLmxhdGl0dWRlLHI9ZS5sb25naXR1ZGU7dC5sb2NhdGlvbi5sYXRpdHVkZT1uLHQubG9jYXRpb24ubG9uZ2l0dWRlPXJ9fSl9LG1ldGhvZHM6e29uUmVnaW9uQ2hhbmdlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZGV0YWlsLmNlbnRlckxvY2F0aW9uO2UmJih0aGlzLmNlbnRlci5sYXRpdHVkZT1lLmxhdGl0dWRlLHRoaXMuY2VudGVyLmxvbmdpdHVkZT1lLmxvbmdpdHVkZSl9LHNldENlbnRlcjpmdW5jdGlvbih0KXt2YXIgZT10LmxhdGl0dWRlLG49dC5sb25naXR1ZGU7dGhpcy5jZW50ZXIubGF0aXR1ZGU9ZSx0aGlzLmNlbnRlci5sb25naXR1ZGU9bn0sYmFjazpmdW5jdGlvbigpe2dldEFwcCgpLiRyb3V0ZXIuYmFjaygpfSxuYXY6ZnVuY3Rpb24oKXt2YXIgdD1PYmplY3QocVsiZSJdKSgpLGU9IiI7aWYodC50eXBlPT09cVsiZCJdLkdPT0dMRSl7dmFyIG49dGhpcy5sb2NhdGlvbi5sYXRpdHVkZT8iJm9yaWdpbj0iLmNvbmNhdCh0aGlzLmxvY2F0aW9uLmxhdGl0dWRlLCIlMkMiKS5jb25jYXQodGhpcy5sb2NhdGlvbi5sb25naXR1ZGUpOiIiO2U9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9kaXIvP2FwaT0xIi5jb25jYXQobiwiJmRlc3RpbmF0aW9uPSIpLmNvbmNhdCh0aGlzLmxhdGl0dWRlLCIlMkMiKS5jb25jYXQodGhpcy5sb25naXR1ZGUpfWVsc2UgaWYodC50eXBlPT09cVsiZCJdLlFRKXt2YXIgcj10aGlzLmxvY2F0aW9uLmxhdGl0dWRlPyImZnJvbWNvb3JkPSIuY29uY2F0KHRoaXMubG9jYXRpb24ubGF0aXR1ZGUsIiUyQyIpLmNvbmNhdCh0aGlzLmxvY2F0aW9uLmxvbmdpdHVkZSwiJmZyb209IikuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudCgi5oiR55qE5L2N572uIikpOiIiO2U9Imh0dHBzOi8vYXBpcy5tYXAucXEuY29tL3VyaS92MS9yb3V0ZXBsYW4/dHlwZT1kcml2ZSIuY29uY2F0KHIsIiZ0b2Nvb3JkPSIpLmNvbmNhdCh0aGlzLmxhdGl0dWRlLCIlMkMiKS5jb25jYXQodGhpcy5sb25naXR1ZGUsIiZ0bz0iKS5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMubmFtZXx8IuebrueahOWcsCIpLCImcmVmPSIpLmNvbmNhdCh0LmtleSl9ZWxzZSBpZih0LnR5cGU9PT1xWyJkIl0uQU1BUCl7dmFyIGk9dGhpcy5sb2NhdGlvbi5sYXRpdHVkZT8iZnJvbT0iLmNvbmNhdCh0aGlzLmxvY2F0aW9uLmxvbmdpdHVkZSwiLCIpLmNvbmNhdCh0aGlzLmxvY2F0aW9uLmxhdGl0dWRlLCIsIikuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudCgi5oiR55qE5L2N572uIiksIiYiKToiIjtlPSJodHRwczovL3VyaS5hbWFwLmNvbS9uYXZpZ2F0aW9uPyIuY29uY2F0KGksInRvPSIpLmNvbmNhdCh0aGlzLmxvbmdpdHVkZSwiLCIpLmNvbmNhdCh0aGlzLmxhdGl0dWRlLCIsIikuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLm5hbWV8fCLnm67nmoTlnLAiKSl9d2luZG93Lm9wZW4oZSl9fX0sWT1WLFg9KG4oIjcyNGMiKSxPYmplY3QodVsiYSJdKShZLEgsVSwhMSxudWxsLG51bGwsbnVsbCkpLEc9WC5leHBvcnRzLFE9e0Nob29zZUxvY2F0aW9uOlcsT3BlbkxvY2F0aW9uOkd9O2kuYS5jb21wb25lbnQoZi5uYW1lLGYpLGkuYS5jb21wb25lbnQobS5uYW1lLG0pLGkuYS5jb21wb25lbnQoay5uYW1lLGspLGkuYS5jb21wb25lbnQoai5uYW1lLGopLGkuYS5jb21wb25lbnQoUi5uYW1lLFIpLE9iamVjdC5rZXlzKFEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPVFbdF07aS5hLmNvbXBvbmVudChlLm5hbWUsZSl9KSl9LCI0NjZiIjpmdW5jdGlvbih0LGUsbil7fSw0NzA1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe3ZhciByLGk9bigiOTA5ZSIpLG89bigiN2NjZSIpLGE9bigiZGZhNyIpLHM9bigiYmRlZSIpO2Z1bmN0aW9uIGModCl7cmV0dXJuIGQodCl8fGYodCl8fGwodCl8fHUoKX1mdW5jdGlvbiB1KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9ZnVuY3Rpb24gbCh0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT09dHlwZW9mIHQpcmV0dXJuIGgodCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20obik6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9oKHQsZSk6dm9pZCAwfX1mdW5jdGlvbiBmKHQpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSlyZXR1cm4gQXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBkKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGgodCl9ZnVuY3Rpb24gaCh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQ9dC5zbGljZSgwKSx0WzNdPXRbM10vMjU1LCJyZ2JhKCIrdC5qb2luKCIsIikrIikifWZ1bmN0aW9uIHYodCxlKXtyZXR1cm5bXS5tYXAuY2FsbChlLChmdW5jdGlvbihlKXt2YXIgbj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybntpZGVudGlmaWVyOmUuaWRlbnRpZmllcix4OmUuY2xpZW50WC1uLmxlZnQseTplLmNsaWVudFktbi50b3B9fSkpfWZ1bmN0aW9uIGcoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3JldHVybiByfHwocj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSksci53aWR0aD10LHIuaGVpZ2h0PWUscn1lWyJhIl09e25hbWU6IkNhbnZhcyIsbWl4aW5zOltpWyJnIl1dLHByb3BzOntjYW52YXNJZDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sZGlzYWJsZVNjcm9sbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LGhpZHBpOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57YWN0aW9uc1dhaXRpbmc6ITF9fSxjb21wdXRlZDp7aWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW52YXNJZH0sX2xpc3RlbmVyczpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1PYmplY3QuYXNzaWduKHt9LHRoaXMuJGxpc3RlbmVycyksbj1bInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCJdO3JldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByPWVbbl0saT1bXTtyJiZpLnB1c2goKGZ1bmN0aW9uKGUpe3QuJHRyaWdnZXIobixPYmplY3QuYXNzaWduKHt9LGUse3RvdWNoZXM6dihlLmN1cnJlbnRUYXJnZXQsZS50b3VjaGVzKSxjaGFuZ2VkVG91Y2hlczp2KGUuY3VycmVudFRhcmdldCxlLmNoYW5nZWRUb3VjaGVzKX0pKX0pKSx0LmRpc2FibGVTY3JvbGwmJiJ0b3VjaG1vdmUiPT09biYmaS5wdXNoKHQuX3RvdWNobW92ZSksZVtuXT1pfSkpLGV9LHBpeGVsUmF0aW86ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWRwaT9vWyJhIl06MX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9hY3Rpb25zRGVmZXI9W10sdGhpcy5faW1hZ2VzPXt9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dGhpcy5fcmVzaXplKCl9LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRyZWZzLmNhbnZhczt0LmhlaWdodD10LndpZHRoPTB9LG1ldGhvZHM6e19oYW5kbGVTdWJzY3JpYmU6ZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLG49dC5kYXRhLHI9dm9pZCAwPT09bj97fTpuLGk9dGhpc1tlXTswIT09ZS5pbmRleE9mKCJfIikmJiJmdW5jdGlvbiI9PT10eXBlb2YgaSYmaShyKX0sX3Jlc2l6ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLiRyZWZzLmNhbnZhcyxuPSF0fHxlLndpZHRoIT09TWF0aC5mbG9vcih0LndpZHRoKnRoaXMucGl4ZWxSYXRpbyl8fGUuaGVpZ2h0IT09TWF0aC5mbG9vcih0LmhlaWdodCp0aGlzLnBpeGVsUmF0aW8pO2lmKG4paWYoZS53aWR0aD4wJiZlLmhlaWdodD4wKXt2YXIgcj1lLmdldENvbnRleHQoIjJkIiksaT1yLmdldEltYWdlRGF0YSgwLDAsZS53aWR0aCxlLmhlaWdodCk7T2JqZWN0KG9bImIiXSkoZSx0aGlzLmhpZHBpKSxyLnB1dEltYWdlRGF0YShpLDAsMCl9ZWxzZSBPYmplY3Qob1siYiJdKShlLHRoaXMuaGlkcGkpfSxfdG91Y2htb3ZlOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKX0sYWN0aW9uc0NoYW5nZWQ6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcyxyPWUuYWN0aW9ucyxpPWUucmVzZXJ2ZSxvPWUuY2FsbGJhY2tJZCxhPXRoaXM7aWYocilpZih0aGlzLmFjdGlvbnNXYWl0aW5nKXRoaXMuX2FjdGlvbnNEZWZlci5wdXNoKFtyLGksb10pO2Vsc2V7dmFyIHM9dGhpcy4kcmVmcy5jYW52YXMsdT1zLmdldENvbnRleHQoIjJkIik7aXx8KHUuZmlsbFN0eWxlPSIjMDAwMDAwIix1LnN0cm9rZVN0eWxlPSIjMDAwMDAwIix1LnNoYWRvd0NvbG9yPSIjMDAwMDAwIix1LnNoYWRvd0JsdXI9MCx1LnNoYWRvd09mZnNldFg9MCx1LnNoYWRvd09mZnNldFk9MCx1LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksdS5jbGVhclJlY3QoMCwwLHMud2lkdGgscy5oZWlnaHQpKSx0aGlzLnByZWxvYWRJbWFnZShyKTt2YXIgbD1mdW5jdGlvbih0KXt2YXIgZT1yW3RdLGk9ZS5tZXRob2Qscz1lLmRhdGE7aWYoL15zZXQvLnRlc3QoaSkmJiJzZXRUcmFuc2Zvcm0iIT09aSl7dmFyIGwsZj1pWzNdLnRvTG93ZXJDYXNlKCkraS5zbGljZSg0KTtpZigiZmlsbFN0eWxlIj09PWZ8fCJzdHJva2VTdHlsZSI9PT1mKXtpZigibm9ybWFsIj09PXNbMF0pbD1wKHNbMV0pO2Vsc2UgaWYoImxpbmVhciI9PT1zWzBdKXt2YXIgdj11LmNyZWF0ZUxpbmVhckdyYWRpZW50LmFwcGx5KHUsYyhzWzFdKSk7c1syXS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10WzBdLG49cCh0WzFdKTt2LmFkZENvbG9yU3RvcChlLG4pfSkpLGw9dn1lbHNlIGlmKCJyYWRpYWwiPT09c1swXSl7dmFyIGc9c1sxXVswXSxtPXNbMV1bMV0sYj1zWzFdWzJdLHk9dS5jcmVhdGVSYWRpYWxHcmFkaWVudChnLG0sMCxnLG0sYik7c1syXS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10WzBdLG49cCh0WzFdKTt5LmFkZENvbG9yU3RvcChlLG4pfSkpLGw9eX1lbHNlIGlmKCJwYXR0ZXJuIj09PXNbMF0pe3ZhciBfPW4uY2hlY2tJbWFnZUxvYWRlZChzWzFdLHIuc2xpY2UodCsxKSxvLChmdW5jdGlvbih0KXt0JiYodVtmXT11LmNyZWF0ZVBhdHRlcm4odCxzWzJdKSl9KSk7cmV0dXJuIF8/ImNvbnRpbnVlIjoiYnJlYWsifXVbZl09bH1lbHNlIGlmKCJnbG9iYWxBbHBoYSI9PT1mKXVbZl09c1swXS8yNTU7ZWxzZSBpZigic2hhZG93Ij09PWYpZD1bInNoYWRvd09mZnNldFgiLCJzaGFkb3dPZmZzZXRZIiwic2hhZG93Qmx1ciIsInNoYWRvd0NvbG9yIl0scy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3VbZFtlXV09InNoYWRvd0NvbG9yIj09PWRbZV0/cCh0KTp0fSkpO2Vsc2UgaWYoImZvbnRTaXplIj09PWYpe3ZhciB3PXUuX19mb250X198fHUuZm9udDt1Ll9fZm9udF9fPXUuZm9udD13LnJlcGxhY2UoL1xkK1wuP1xkKnB4LyxzWzBdKyJweCIpfWVsc2UibGluZURhc2giPT09Zj8odS5zZXRMaW5lRGFzaChzWzBdKSx1LmxpbmVEYXNoT2Zmc2V0PXNbMV18fDApOiJ0ZXh0QmFzZWxpbmUiPT09Zj8oIm5vcm1hbCI9PT1zWzBdJiYoc1swXT0iYWxwaGFiZXRpYyIpLHVbZl09c1swXSk6ImZvbnQiPT09Zj91Ll9fZm9udF9fPXUuZm9udD1zWzBdOnVbZl09c1swXX1lbHNlIGlmKCJmaWxsUGF0aCI9PT1pfHwic3Ryb2tlUGF0aCI9PT1pKWk9aS5yZXBsYWNlKC9QYXRoLywiIiksdS5iZWdpblBhdGgoKSxzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3VbdC5tZXRob2RdLmFwcGx5KHUsdC5kYXRhKX0pKSx1W2ldKCk7ZWxzZSBpZigiZmlsbFRleHQiPT09aSl1LmZpbGxUZXh0LmFwcGx5KHUscyk7ZWxzZSBpZigiZHJhd0ltYWdlIj09PWkpe2lmKGg9ZnVuY3Rpb24oKXt2YXIgZT1jKHMpLG49ZVswXSxpPWUuc2xpY2UoMSk7aWYoYS5faW1hZ2VzPWEuX2ltYWdlc3x8e30sIWEuY2hlY2tJbWFnZUxvYWRlZChuLHIuc2xpY2UodCsxKSxvLChmdW5jdGlvbih0KXt0JiZ1LmRyYXdJbWFnZS5hcHBseSh1LFt0XS5jb25jYXQoYyhpLnNsaWNlKDQsOCkpLGMoaS5zbGljZSgwLDQpKSkpfSkpKXJldHVybiJicmVhayJ9KCksImJyZWFrIj09PWgpcmV0dXJuImJyZWFrIn1lbHNlImNsaXAiPT09aT8ocy5mb3JFYWNoKChmdW5jdGlvbih0KXt1W3QubWV0aG9kXS5hcHBseSh1LHQuZGF0YSl9KSksdS5jbGlwKCkpOnVbaV0uYXBwbHkodSxzKX07dDpmb3IodmFyIGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIGQsaCx2PWwoZik7c3dpdGNoKHYpe2Nhc2UiYnJlYWsiOmJyZWFrIHQ7Y2FzZSJjb250aW51ZSI6Y29udGludWV9fSF0aGlzLmFjdGlvbnNXYWl0aW5nJiZvJiZ0LnB1Ymxpc2hIYW5kbGVyKCJvbkNhbnZhc01ldGhvZENhbGxiYWNrIix7Y2FsbGJhY2tJZDpvLGRhdGE6e2Vyck1zZzoiZHJhd0NhbnZhczpvayJ9fSx0aGlzLiRwYWdlLmlkKX19LHByZWxvYWRJbWFnZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49dC5tZXRob2Qscj10LmRhdGEsaT0iIjtmdW5jdGlvbiBvKCl7dmFyIHQ9ZS5faW1hZ2VzW2ldPW5ldyBJbWFnZTt0Lm9ubG9hZD1mdW5jdGlvbigpe3QucmVhZHk9ITB9LE9iamVjdChzWyJkIl0pKGkpLnRoZW4oKGZ1bmN0aW9uKGUpe3Quc3JjPWV9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7dC5zcmM9aX0pKX0iZHJhd0ltYWdlIj09PW4/KGk9clswXSxpPWUuJGdldFJlYWxQYXRoKGkpLHJbMF09aSk6InNldEZpbGxTdHlsZSI9PT1uJiYicGF0dGVybiI9PT1yWzBdJiYoaT1yWzFdLGk9ZS4kZ2V0UmVhbFBhdGgoaSksclsxXT1pKSxpJiYhZS5faW1hZ2VzW2ldJiZvKCl9KSl9LGNoZWNrSW1hZ2VMb2FkZWQ6ZnVuY3Rpb24odCxlLG4scil7dmFyIGk9dGhpcyxvPXRoaXMuX2ltYWdlc1t0XTtyZXR1cm4gby5yZWFkeT8ocihvKSwhMCk6KHRoaXMuX2FjdGlvbnNEZWZlci51bnNoaWZ0KFtlLCEwXSksdGhpcy5hY3Rpb25zV2FpdGluZz0hMCxvLm9ubG9hZD1mdW5jdGlvbigpe28ucmVhZHk9ITAscihvKSxpLmFjdGlvbnNXYWl0aW5nPSExO3ZhciB0PWkuX2FjdGlvbnNEZWZlci5zbGljZSgwKTtpLl9hY3Rpb25zRGVmZXI9W107Zm9yKHZhciBlPXQuc2hpZnQoKTtlOylpLmFjdGlvbnNDaGFuZ2VkKHthY3Rpb25zOmVbMF0scmVzZXJ2ZTplWzFdLGNhbGxiYWNrSWQ6bn0pLGU9dC5zaGlmdCgpfSwhMSl9LGdldEltYWdlRGF0YTpmdW5jdGlvbihlKXt2YXIgbixyPWUueCxpPXZvaWQgMD09PXI/MDpyLG89ZS55LGE9dm9pZCAwPT09bz8wOm8scz1lLndpZHRoLGM9ZS5oZWlnaHQsdT1lLmRlc3RXaWR0aCxsPWUuZGVzdEhlaWdodCxmPWUuaGlkcGksZD12b2lkIDA9PT1mfHxmLGg9ZS5kYXRhVHlwZSxwPWUucXVhbGl0eSx2PXZvaWQgMD09PXA/MTpwLG09ZS50eXBlLGI9dm9pZCAwPT09bT8icG5nIjptLHk9ZS5jYWxsYmFja0lkLF89dGhpcy4kcmVmcy5jYW52YXMsdz1fLm9mZnNldFdpZHRoLWk7cz1zP01hdGgubWluKHMsdyk6dzt2YXIgUz1fLm9mZnNldEhlaWdodC1hO2M9Yz9NYXRoLm1pbihjLFMpOlMsZD8odT1zLGw9Yyk6dXx8bD91P2x8fChsPU1hdGgucm91bmQoYy9zKnUpKTp1PU1hdGgucm91bmQocy9jKmwpOih1PU1hdGgucm91bmQocyp0aGlzLnBpeGVsUmF0aW8pLGw9TWF0aC5yb3VuZChjKnRoaXMucGl4ZWxSYXRpbykpO3ZhciB4LGs9Zyh1LGwpLEM9ay5nZXRDb250ZXh0KCIyZCIpOyJqcGVnIiE9PWImJiJqcGciIT09Ynx8KGI9ImpwZWciLEMuZmlsbFN0eWxlPSIjZmZmIixDLmZpbGxSZWN0KDAsMCx1LGwpKSxDLl9faGlkcGlfXz0hMCxDLmRyYXdJbWFnZUJ5Q2FudmFzKF8saSxhLHMsYywwLDAsdSxsLCExKTt0cnl7dmFyIFQ7aWYoImJhc2U2NCI9PT1oKW49ay50b0RhdGFVUkwoImltYWdlLyIuY29uY2F0KGIpLHYpO2Vsc2V7dmFyIE89Qy5nZXRJbWFnZURhdGEoMCwwLHUsbCk7bj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChPLmRhdGEpfXg9e2Vyck1zZzoiY2FudmFzR2V0SW1hZ2VEYXRhOm9rIixkYXRhOm4sY29tcHJlc3NlZDpULHdpZHRoOnUsaGVpZ2h0Omx9fWNhdGNoKEEpe3g9e2Vyck1zZzoiY2FudmFzR2V0SW1hZ2VEYXRhOmZhaWwgIi5jb25jYXQoQSl9fWlmKGsuaGVpZ2h0PWsud2lkdGg9MCxDLl9faGlkcGlfXz0hMSwheSlyZXR1cm4geDt0LnB1Ymxpc2hIYW5kbGVyKCJvbkNhbnZhc01ldGhvZENhbGxiYWNrIix7Y2FsbGJhY2tJZDp5LGRhdGE6eH0sdGhpcy4kcGFnZS5pZCl9LHB1dEltYWdlRGF0YTpmdW5jdGlvbihlKXt2YXIgbj1lLmRhdGEscj1lLngsaT1lLnksbz1lLndpZHRoLGE9ZS5oZWlnaHQscz0oZS5jb21wcmVzc2VkLGUuY2FsbGJhY2tJZCk7dHJ5e2F8fChhPU1hdGgucm91bmQobi5sZW5ndGgvNC9vKSk7dmFyIGM9ZyhvLGEpLHU9Yy5nZXRDb250ZXh0KCIyZCIpO3UucHV0SW1hZ2VEYXRhKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG4pLG8sYSksMCwwKSx0aGlzLiRyZWZzLmNhbnZhcy5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShjLHIsaSxvLGEpLGMuaGVpZ2h0PWMud2lkdGg9MH1jYXRjaChsKXtyZXR1cm4gdm9pZCB0LnB1Ymxpc2hIYW5kbGVyKCJvbkNhbnZhc01ldGhvZENhbGxiYWNrIix7Y2FsbGJhY2tJZDpzLGRhdGE6e2Vyck1zZzoiY2FudmFzUHV0SW1hZ2VEYXRhOmZhaWwifX0sdGhpcy4kcGFnZS5pZCl9dC5wdWJsaXNoSGFuZGxlcigib25DYW52YXNNZXRob2RDYWxsYmFjayIse2NhbGxiYWNrSWQ6cyxkYXRhOntlcnJNc2c6ImNhbnZhc1B1dEltYWdlRGF0YTpvayJ9fSx0aGlzLiRwYWdlLmlkKX0sdG9UZW1wRmlsZVBhdGg6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcyxyPWUueCxpPXZvaWQgMD09PXI/MDpyLG89ZS55LHM9dm9pZCAwPT09bz8wOm8sYz1lLndpZHRoLHU9ZS5oZWlnaHQsbD1lLmRlc3RXaWR0aCxmPWUuZGVzdEhlaWdodCxkPWUuZmlsZVR5cGUsaD1lLnF1YWxpdHkscD1lLmRpcm5hbWUsdj1lLmNhbGxiYWNrSWQsZz10aGlzLmdldEltYWdlRGF0YSh7eDppLHk6cyx3aWR0aDpjLGhlaWdodDp1LGRlc3RXaWR0aDpsLGRlc3RIZWlnaHQ6ZixoaWRwaTohMSxkYXRhVHlwZToiYmFzZTY0Iix0eXBlOmQscXVhbGl0eTpofSk7Zy5kYXRhJiZnLmRhdGEubGVuZ3RoP09iamVjdChhWyJhIl0pKGcuZGF0YSxwLChmdW5jdGlvbihlLHIpe3ZhciBpPSJ0b1RlbXBGaWxlUGF0aDoiLmNvbmNhdChlPyJmYWlsIjoib2siKTtlJiYoaSs9IiAiLmNvbmNhdChlLm1lc3NhZ2UpKSx0LnB1Ymxpc2hIYW5kbGVyKCJvbkNhbnZhc01ldGhvZENhbGxiYWNrIix7Y2FsbGJhY2tJZDp2LGRhdGE6e2Vyck1zZzppLHRlbXBGaWxlUGF0aDpyfX0sbi4kcGFnZS5pZCl9KSk6dC5wdWJsaXNoSGFuZGxlcigib25DYW52YXNNZXRob2RDYWxsYmFjayIse2NhbGxiYWNrSWQ6dixkYXRhOntlcnJNc2c6Zy5lcnJNc2cucmVwbGFjZSgiY2FudmFzUHV0SW1hZ2VEYXRhIiwidG9UZW1wRmlsZVBhdGgiKX19LHRoaXMuJHBhZ2UuaWQpfX19fSkuY2FsbCh0aGlzLG4oIjMxZDIiKSl9LDQ3Mzg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSk7dmFyIHI9bigiOGYyZiIpLGk9L14oW2Etei1dKzopP1wvXC8vaSxvPS9eZGF0YTouKiwuKi87ZnVuY3Rpb24gYSh0KXt2YXIgZT1fX3VuaUNvbmZpZy5yb3V0ZXIuYmFzZTtyZXR1cm4gZT8iLyIhPT1lJiYwPT09KCIvIit0KS5pbmRleE9mKGUpPyIvIit0OmUrdDp0fWZ1bmN0aW9uIHModCl7aWYoIi4vIj09PV9fdW5pQ29uZmlnLnJvdXRlci5iYXNlJiYoMCE9PXQuaW5kZXhPZigiLi8iKXx8IXQuaW5jbHVkZXMoIi9zdGF0aWMvIikmJjAhPT10LmluZGV4T2YoIi4vYXNzZXRzLyIpfHwodD10LnNsaWNlKDEpKSksMD09PXQuaW5kZXhPZigiLyIpKXtpZigwIT09dC5pbmRleE9mKCIvLyIpKXJldHVybiBhKHQuc3Vic3RyKDEpKTt0PSJodHRwczoiK3R9aWYoaS50ZXN0KHQpfHxvLnRlc3QodCl8fDA9PT10LmluZGV4T2YoImJsb2I6IikpcmV0dXJuIHQ7dmFyIGU9Z2V0Q3VycmVudFBhZ2VzKCk7cmV0dXJuIGUubGVuZ3RoP2EoT2JqZWN0KHJbImEiXSkoZVtlLmxlbmd0aC0xXS4kcGFnZS5yb3V0ZSx0KS5zdWJzdHIoMSkpOnR9fSwiNDhmZSI6ZnVuY3Rpb24odCxlLG4pe30sIjQ5M2QiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPW4oIjM0MGQiKSxpPW4oIjg0NmUiKSxvPW4oIjkwOWUiKTtvWyJkIl0uYWRkSW50ZXJhY3RMaXN0ZW5lcigpO3ZhciBhPSIqIjtmdW5jdGlvbiBzKCl7dmFyIHQ9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtyZXR1cm4hKCF0Lm1hdGNoKC9NaWNyb01lc3Nlbmdlci9pKXx8Im1pY3JvbWVzc2VuZ2VyIiE9PXQubWF0Y2goL01pY3JvTWVzc2VuZ2VyL2kpWzBdKX1lWyJkZWZhdWx0Il09ZnVuY3Rpb24odCl7dmFyIGU9dC5jb3VudCxuPXQuc291cmNlVHlwZSxvPXQudHlwZSxjPXQuZXh0ZW5zaW9uLHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtyZXR1cm4gdS50eXBlPSJmaWxlIixPYmplY3QoclsieCJdKSh1LHtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsInotaW5kZXgiOi05OTksd2lkdGg6MCxoZWlnaHQ6MCx0b3A6MCxsZWZ0OjB9KSx1LmFjY2VwdD1jLm1hcCgoZnVuY3Rpb24odCl7aWYobyE9PWEpe3ZhciBlPXQucmVwbGFjZSgiLiIsIiIpO3JldHVybiIiLmNvbmNhdChvLCIvIikuY29uY2F0KGlbImRlZmF1bHQiXVtvXVtlXXx8ZSl9cmV0dXJuIHMoKT8iLiI6MD09PXQuaW5kZXhPZigiLiIpP3Q6Ii4iLmNvbmNhdCh0KX0pKS5qb2luKCIsIiksZT4xJiYodS5tdWx0aXBsZT0ibXVsdGlwbGUiKSwxPT09bi5sZW5ndGgmJiJjYW1lcmEiPT09blswXSYmKHUuY2FwdHVyZT0iY2FtZXJhIiksdX19LCI0OTNmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXtuLmQoZSwiYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSksbi5kKGUsImMiLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gY30pKTt2YXIgcixpPW4oImE4MDUiKTtmdW5jdGlvbiBvKHQpe3QucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBhKHQpe3ZhciBlPXQuc2Nyb2xsVG9wLG49dC5zZWxlY3RvcixyPXQuZHVyYXRpb247aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgZSl7dmFyIGk9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihuKTtpZihpKXt2YXIgbz1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9by50b3Ascz1vLmhlaWdodDtlPWErd2luZG93LnBhZ2VZT2Zmc2V0LGUtPXN9fXZhciBjPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx1PWMuY2xpZW50SGVpZ2h0LGw9Yy5zY3JvbGxIZWlnaHQ7ZnVuY3Rpb24gZih0KXtpZih0PD0wKXdpbmRvdy5zY3JvbGxUbygwLGUpO2Vsc2V7dmFyIG49ZS13aW5kb3cuc2Nyb2xsWTtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7d2luZG93LnNjcm9sbFRvKDAsd2luZG93LnNjcm9sbFkrbi90KjEwKSxmKHQtMTApfSkpfX1lPU1hdGgubWluKGUsbC11KSwwIT09cj93aW5kb3cuc2Nyb2xsWSE9PWUmJmYocik6Yy5zY3JvbGxUb3A9ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A9ZX12YXIgcz0wO2Z1bmN0aW9uIGMoZSxuKXt2YXIgbz1uLmVuYWJsZVBhZ2VTY3JvbGwsYT1uLmVuYWJsZVBhZ2VSZWFjaEJvdHRvbSxjPW4ub25SZWFjaEJvdHRvbURpc3RhbmNlLHU9bi5lbmFibGVUcmFuc3BhcmVudFRpdGxlTlZpZXcsbD0hMSxmPSExLGQ9ITA7ZnVuY3Rpb24gaCgpe3ZhciB0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQsZT13aW5kb3cuaW5uZXJIZWlnaHQsbj13aW5kb3cuc2Nyb2xsWSxyPW4+MCYmdD5lJiZuK2UrYz49dCxpPU1hdGguYWJzKHQtcyk+YztyZXR1cm4hcnx8ZiYmIWk/KCFyJiZmJiYoZj0hMSksITEpOihzPXQsZj0hMCwhMCl9ZnVuY3Rpb24gcCgpe3ZhciBuPWdldEN1cnJlbnRQYWdlcygpO2lmKG4ubGVuZ3RoJiZuW24ubGVuZ3RoLTFdLiRwYWdlLmlkPT09ZSl7dmFyIHM9d2luZG93LnBhZ2VZT2Zmc2V0O28mJk9iamVjdChpWyJhIl0pKCJvblBhZ2VTY3JvbGwiLHtzY3JvbGxUb3A6c30sZSksdSYmdC5lbWl0KCJvblBhZ2VTY3JvbGwiLHtzY3JvbGxUb3A6c30pLGEmJmQmJihjKCl8fChyPXNldFRpbWVvdXQoYywzMDApKSksbD0hMX1mdW5jdGlvbiBjKCl7aWYoaCgpKXJldHVybiBPYmplY3QoaVsiYSJdKSgib25SZWFjaEJvdHRvbSIse30sZSksZD0hMSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2Q9ITB9KSwzNTApLCEwfX1yZXR1cm4gZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQociksbHx8cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHApLGw9ITB9fX0pLmNhbGwodGhpcyxuKCIzMWQyIikpfSwiNDljMiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBsfSkpO3ZhciByPW4oIjM4Y2UiKSxpPW4oIjM0MGQiKSxvPW4oIjhkN2QiKSxhPW4oIjBkYjMiKTtmdW5jdGlvbiBzKHQpe3ZhciBlPXt9O2lmKHQuaWQmJihlLmlkPSIiKSx0LmRhdGFzZXQmJihlLmRhdGFzZXQ9e30pLHQucmVjdCYmKGUubGVmdD0wLGUucmlnaHQ9MCxlLnRvcD0wLGUuYm90dG9tPTApLHQuc2l6ZSYmKGUud2lkdGg9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLGUuaGVpZ2h0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpLHQuc2Nyb2xsT2Zmc2V0KXt2YXIgbj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscj1kb2N1bWVudC5ib2R5O2Uuc2Nyb2xsTGVmdD1uLnNjcm9sbExlZnR8fHIuc2Nyb2xsTGVmdHx8MCxlLnNjcm9sbFRvcD1uLnNjcm9sbFRvcHx8ci5zY3JvbGxUb3B8fDAsZS5zY3JvbGxIZWlnaHQ9bi5zY3JvbGxIZWlnaHR8fHIuc2Nyb2xsSGVpZ2h0fHwwLGUuc2Nyb2xsV2lkdGg9bi5zY3JvbGxXaWR0aHx8ci5zY3JvbGxXaWR0aHx8MH1yZXR1cm4gZX1mdW5jdGlvbiBjKHQsZSl7dmFyIG49e30sYT1PYmplY3Qob1siYSJdKSgpLHM9YS50b3A7aWYoZS5pZCYmKG4uaWQ9dC5pZCksZS5kYXRhc2V0JiYobi5kYXRhc2V0PU9iamVjdChyWyJiIl0pKHQpKSxlLnJlY3R8fGUuc2l6ZSl7dmFyIGM9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlLnJlY3QmJihuLmxlZnQ9Yy5sZWZ0LG4ucmlnaHQ9Yy5yaWdodCxuLnRvcD1jLnRvcC1zLG4uYm90dG9tPWMuYm90dG9tLXMpLGUuc2l6ZSYmKG4ud2lkdGg9Yy53aWR0aCxuLmhlaWdodD1jLmhlaWdodCl9aWYoQXJyYXkuaXNBcnJheShlLnByb3BlcnRpZXMpKXt2YXIgdT10Ll9fdnVlX18mJnQuX192dWVfXy4kcHJvcHM7dSYmZS5wcm9wZXJ0aWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpeyJzdHJpbmciPT09dHlwZW9mIHQmJih0PU9iamVjdChpWyJiIl0pKHQpLG51bGwhPXVbdF0mJihuW3RdPXVbdF0pKX0pKX1pZihlLnNjcm9sbE9mZnNldCYmKCJVTkktU0NST0xMLVZJRVciPT09dC50YWdOYW1lJiZ0Ll9fdnVlX18mJnQuX192dWVfXy5nZXRTY3JvbGxQb3NpdGlvbj9PYmplY3QuYXNzaWduKG4sdC5fX3Z1ZV9fLmdldFNjcm9sbFBvc2l0aW9uKCkpOihuLnNjcm9sbExlZnQ9MCxuLnNjcm9sbFRvcD0wLG4uc2Nyb2xsSGVpZ2h0PTAsbi5zY3JvbGxXaWR0aD0wKSksQXJyYXkuaXNBcnJheShlLmNvbXB1dGVkU3R5bGUpKXt2YXIgbD1nZXRDb21wdXRlZFN0eWxlKHQpO2UuY29tcHV0ZWRTdHlsZS5mb3JFYWNoKChmdW5jdGlvbih0KXtuW3RdPWxbdF19KSl9cmV0dXJuIGUuY29udGV4dCYmdC5fX3Z1ZV9fJiZ0Ll9fdnVlX18uX2dldENvbnRleHRJbmZvJiYobi5jb250ZXh0PXQuX192dWVfXy5fZ2V0Q29udGV4dEluZm8oKSksbn1mdW5jdGlvbiB1KHQsZSxuLHIsaSl7dmFyIG89T2JqZWN0KGFbImEiXSkoT2JqZWN0KGFbImIiXSkoZSx0KSk7aWYoIW98fG8mJjg9PT1vLm5vZGVUeXBlKXJldHVybiByP251bGw6W107aWYocil7dmFyIHM9by5tYXRjaGVzKG4pP286by5xdWVyeVNlbGVjdG9yKG4pO3JldHVybiBzP2MocyxpKTpudWxsfXZhciB1PVtdLGw9by5xdWVyeVNlbGVjdG9yQWxsKG4pO3JldHVybiBsJiZsLmxlbmd0aCYmKHU9W10ubWFwLmNhbGwobCwoZnVuY3Rpb24odCl7cmV0dXJuIGModCxpKX0pKSksby5tYXRjaGVzKG4pJiZ1LnVuc2hpZnQoYyhvLGkpKSx1fWZ1bmN0aW9uIGwoZSxuKXt2YXIgcixpPWUucmVxSWQsbz1lLnJlcXM7aWYobi5faXNWdWUpcj1uO2Vsc2V7dmFyIGE9Z2V0Q3VycmVudFBhZ2VzKCksYz1hLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LiRwYWdlLmlkPT09bn0pKTtpZighYyl0aHJvdyBuZXcgRXJyb3IoIk5vdCBGb3VuZO+8mlBhZ2VbIi5jb25jYXQobiwiXSIpKTtyPWMuJHZtfXZhciBsPVtdO28uZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5jb21wb25lbnQsbj10LnNlbGVjdG9yLGk9dC5zaW5nbGUsbz10LmZpZWxkczswPT09ZT9sLnB1c2gocyhvKSk6bC5wdXNoKHUocixlLG4saSxvKSl9KSksdC5wdWJsaXNoSGFuZGxlcigib25SZXF1ZXN0Q29tcG9uZW50SW5mbyIse3JlcUlkOmkscmVzOmx9KX19KS5jYWxsKHRoaXMsbigiMzFkMiIpKX0sIjQ5ZGYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPVtdLGk9bigiMjQzMiIpO2kua2V5cygpLmZvckVhY2goKGZ1bmN0aW9uKHQpeyIuL2luZGV4LmpzIiE9PXQmJnIucHVzaChpKHQpLmRlZmF1bHQpfSkpLGVbImRlZmF1bHQiXT1yfSwiNGEzZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZnVuY3Rpb24odCl7ZnVuY3Rpb24gcihlLG4pe3ZhciByPWUuZmlsZVBhdGgsaT10LG89aS5pbnZva2VDYWxsYmFja0hhbmRsZXI7d2luZG93Lm9wZW4ociksbyhuLHtlcnJNc2c6Im9wZW5Eb2N1bWVudDpvayJ9KX1uLmQoZSwib3BlbkRvY3VtZW50IiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKX0uY2FsbCh0aGlzLG4oIjJjOWYiKSl9LCI0YjIxIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXtuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSk7dmFyIHI9bigiZDk3ZCIpO2Z1bmN0aW9uIGkodCl7cmV0dXJuIHQucmVwbGFjZSgvPFw/eG1sLipcPz5cbi8sIiIpLnJlcGxhY2UoLzwhZG9jdHlwZS4qPlxuLywiIikucmVwbGFjZSgvPCFET0NUWVBFLio+XG4vLCIiKX1mdW5jdGlvbiBvKHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXt2YXIgbj1lLnZhbHVlLHI9ZS5uYW1lO3JldHVybiBuLm1hdGNoKC8gLykmJi0xPT09WyJzdHlsZSIsInNyYyJdLmluZGV4T2YocikmJihuPW4uc3BsaXQoIiAiKSksdFtyXT9BcnJheS5pc0FycmF5KHRbcl0pP3Rbcl0ucHVzaChuKTp0W3JdPVt0W3JdLG5dOnRbcl09bix0fSkse30pfWZ1bmN0aW9uIGEoZSl7ZT1pKGUpO3ZhciBuPVtdLGE9e25vZGU6InJvb3QiLGNoaWxkcmVuOltdfTtyZXR1cm4gT2JqZWN0KHJbImEiXSkoZSx7c3RhcnQ6ZnVuY3Rpb24odCxlLHIpe3ZhciBpPXtuYW1lOnR9O2lmKDAhPT1lLmxlbmd0aCYmKGkuYXR0cnM9byhlKSkscil7dmFyIHM9blswXXx8YTtzLmNoaWxkcmVufHwocy5jaGlsZHJlbj1bXSkscy5jaGlsZHJlbi5wdXNoKGkpfWVsc2Ugbi51bnNoaWZ0KGkpfSxlbmQ6ZnVuY3Rpb24oZSl7dmFyIHI9bi5zaGlmdCgpO2lmKHIubmFtZSE9PWUmJnQuZXJyb3IoImludmFsaWQgc3RhdGU6IG1pc21hdGNoIGVuZCB0YWciKSwwPT09bi5sZW5ndGgpYS5jaGlsZHJlbi5wdXNoKHIpO2Vsc2V7dmFyIGk9blswXTtpLmNoaWxkcmVufHwoaS5jaGlsZHJlbj1bXSksaS5jaGlsZHJlbi5wdXNoKHIpfX0sY2hhcnM6ZnVuY3Rpb24odCl7dmFyIGU9e3R5cGU6InRleHQiLHRleHQ6dH07aWYoMD09PW4ubGVuZ3RoKWEuY2hpbGRyZW4ucHVzaChlKTtlbHNle3ZhciByPW5bMF07ci5jaGlsZHJlbnx8KHIuY2hpbGRyZW49W10pLHIuY2hpbGRyZW4ucHVzaChlKX19LGNvbW1lbnQ6ZnVuY3Rpb24odCl7dmFyIGU9e25vZGU6ImNvbW1lbnQiLHRleHQ6dH0scj1uWzBdO3ImJihyLmNoaWxkcmVufHwoci5jaGlsZHJlbj1bXSksci5jaGlsZHJlbi5wdXNoKGUpKX19KSxhLmNoaWxkcmVufX0pLmNhbGwodGhpcyxuKCI0MThiIilbImRlZmF1bHQiXSl9LCI0YjdlIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9eyIuL2Jhc2UvYmFzZTY0LmpzIjoiNTNmOSIsIi4vYmFzZS9jYW4taS11c2UuanMiOiI1YmNmIiwiLi9iYXNlL2V2ZW50LWJ1cy5qcyI6ImZkNWQiLCIuL2Jhc2UvaW50ZXJjZXB0b3IuanMiOiI5ODc5IiwiLi9iYXNlL3VweDJweC5qcyI6IjY4NTYiLCIuL2NvbnRleHQvY2FudmFzLmpzIjoiZTBlYyIsIi4vY29udGV4dC9jb250ZXh0LmpzIjoiNjYyNSIsIi4vZGV2aWNlL2FkZC1waG9uZS1jb250YWN0LmpzIjoiY2VkYyIsIi4vZGV2aWNlL21ha2UtcGhvbmUtY2FsbC5qcyI6IjZmNzMiLCIuL2RldmljZS9zY2FuLWNvZGUuanMiOiIzYjhkIiwiLi9kZXZpY2Uvc2V0LWNsaXBib2FyZC1kYXRhLmpzIjoiNTFlNSIsIi4vZmlsZS9maWxlLmpzIjoiNDNkZiIsIi4vZmlsZS9vcGVuLWRvY3VtZW50LmpzIjoiMDlmMCIsIi4vbG9jYXRpb24vY2hvb3NlLWxvY2F0aW9uLmpzIjoiZWM2MCIsIi4vbG9jYXRpb24vZ2V0LWxvY2F0aW9uLmpzIjoiZTBmOSIsIi4vbG9jYXRpb24vb3Blbi1sb2NhdGlvbi5qcyI6ImQyODAiLCIuL21lZGlhL2Nob29zZS1maWxlLmpzIjoiOTI1ZiIsIi4vbWVkaWEvY2hvb3NlLWltYWdlLmpzIjoiZGFjOSIsIi4vbWVkaWEvY2hvb3NlLXZpZGVvLmpzIjoiYTExMSIsIi4vbWVkaWEvY29tcHJlc3MtaW1hZ2UuanMiOiI0NGI5IiwiLi9tZWRpYS9jb21wcmVzcy12aWRlby5qcyI6IjNiYmIiLCIuL21lZGlhL2dldC1pbWFnZS1pbmZvLmpzIjoiNjFkOCIsIi4vbWVkaWEvZ2V0LXZpZGVvLWluZm8uanMiOiI5YmZlIiwiLi9tZWRpYS9wcmV2aWV3LWltYWdlLmpzIjoiNGNhMSIsIi4vbWVkaWEvc2F2ZS1pbWFnZS10by1waG90b3MtYWxidW0uanMiOiIwM2QwIiwiLi9uZXR3b3JrL2Rvd25sb2FkLWZpbGUuanMiOiIzZmM1IiwiLi9uZXR3b3JrL3JlcXVlc3QuanMiOiJiMzJmIiwiLi9uZXR3b3JrL3NvY2tldC5qcyI6IjEyM2MiLCIuL25ldHdvcmsvdXBsb2FkLWZpbGUuanMiOiJiNzVhIiwiLi9wbHVnaW4vZ2V0LXByb3ZpZGVyLmpzIjoiOTBmMCIsIi4vcGx1Z2luL2xvYWQtc3ViLXBhY2thZ2UuanMiOiJhOGE3IiwiLi9wbHVnaW4vcHJlLWxvZ2luLmpzIjoiNWYzMCIsIi4vcm91dGUvcm91dGUuanMiOiI2YmQ3IiwiLi9zdG9yYWdlL3N0b3JhZ2UuanMiOiI2N2MzIiwiLi91aS9sb2FkLWZvbnQtZmFjZS5qcyI6ImM2ZWIiLCIuL3VpL25hdmlnYXRpb24tYmFyLmpzIjoiNzk2YyIsIi4vdWkvcGFnZS1zY3JvbGwtdG8uanMiOiIzYWNmIiwiLi91aS9wb3B1cC5qcyI6ImY2MGIiLCIuL3VpL3RhYi1iYXIuanMiOiIzYmQ2In07ZnVuY3Rpb24gaSh0KXt2YXIgZT1vKHQpO3JldHVybiBuKGUpfWZ1bmN0aW9uIG8odCl7aWYoIW4ubyhyLHQpKXt2YXIgZT1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIit0KyInIik7dGhyb3cgZS5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixlfXJldHVybiByW3RdfWkua2V5cz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhyKX0saS5yZXNvbHZlPW8sdC5leHBvcnRzPWksaS5pZD0iNGI3ZSJ9LCI0YmE2IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlLG4pe3JldHVybiB0PmUtbiYmdDxlK259ZnVuY3Rpb24gaSh0LGUpe3JldHVybiByKHQsMCxlKX1mdW5jdGlvbiBvKHQsZSxuKXt0aGlzLl9tPXQsdGhpcy5faz1lLHRoaXMuX2M9bix0aGlzLl9zb2x1dGlvbj1udWxsLHRoaXMuX2VuZFBvc2l0aW9uPTAsdGhpcy5fc3RhcnRUaW1lPTB9bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG8ucHJvdG90eXBlLl9zb2x2ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2Mscj10aGlzLl9tLGk9dGhpcy5fayxvPW4qbi00KnIqaTtpZigwPT09byl7dmFyIGE9LW4vKDIqcikscz10LGM9ZS8oYSp0KTtyZXR1cm57eDpmdW5jdGlvbih0KXtyZXR1cm4ocytjKnQpKk1hdGgucG93KE1hdGguRSxhKnQpfSxkeDpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLnBvdyhNYXRoLkUsYSp0KTtyZXR1cm4gYSoocytjKnQpKmUrYyplfX19aWYobz4wKXt2YXIgdT0oLW4tTWF0aC5zcXJ0KG8pKS8oMipyKSxsPSgtbitNYXRoLnNxcnQobykpLygyKnIpLGY9KGUtdSp0KS8obC11KSxkPXQtZjtyZXR1cm57eDpmdW5jdGlvbih0KXt2YXIgZSxuO3JldHVybiB0PT09dGhpcy5fdCYmKGU9dGhpcy5fcG93RVIxVCxuPXRoaXMuX3Bvd0VSMlQpLHRoaXMuX3Q9dCxlfHwoZT10aGlzLl9wb3dFUjFUPU1hdGgucG93KE1hdGguRSx1KnQpKSxufHwobj10aGlzLl9wb3dFUjJUPU1hdGgucG93KE1hdGguRSxsKnQpKSxkKmUrZipufSxkeDpmdW5jdGlvbih0KXt2YXIgZSxuO3JldHVybiB0PT09dGhpcy5fdCYmKGU9dGhpcy5fcG93RVIxVCxuPXRoaXMuX3Bvd0VSMlQpLHRoaXMuX3Q9dCxlfHwoZT10aGlzLl9wb3dFUjFUPU1hdGgucG93KE1hdGguRSx1KnQpKSxufHwobj10aGlzLl9wb3dFUjJUPU1hdGgucG93KE1hdGguRSxsKnQpKSxkKnUqZStmKmwqbn19fXZhciBoPU1hdGguc3FydCg0KnIqaS1uKm4pLygyKnIpLHA9LW4vMipyLHY9dCxnPShlLXAqdCkvaDtyZXR1cm57eDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5wb3coTWF0aC5FLHAqdCkqKHYqTWF0aC5jb3MoaCp0KStnKk1hdGguc2luKGgqdCkpfSxkeDpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLnBvdyhNYXRoLkUscCp0KSxuPU1hdGguY29zKGgqdCkscj1NYXRoLnNpbihoKnQpO3JldHVybiBlKihnKmgqbi12KmgqcikrcCplKihnKnIrdipuKX19fSxvLnByb3RvdHlwZS54PWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0oKG5ldyBEYXRlKS5nZXRUaW1lKCktdGhpcy5fc3RhcnRUaW1lKS8xZTMpLHRoaXMuX3NvbHV0aW9uP3RoaXMuX2VuZFBvc2l0aW9uK3RoaXMuX3NvbHV0aW9uLngodCk6MH0sby5wcm90b3R5cGUuZHg9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSgobmV3IERhdGUpLmdldFRpbWUoKS10aGlzLl9zdGFydFRpbWUpLzFlMyksdGhpcy5fc29sdXRpb24/dGhpcy5fc29sdXRpb24uZHgodCk6MH0sby5wcm90b3R5cGUuc2V0RW5kPWZ1bmN0aW9uKHQsZSxuKXtpZihufHwobj0obmV3IERhdGUpLmdldFRpbWUoKSksdCE9PXRoaXMuX2VuZFBvc2l0aW9ufHwhaShlLC40KSl7ZT1lfHwwO3ZhciByPXRoaXMuX2VuZFBvc2l0aW9uO3RoaXMuX3NvbHV0aW9uJiYoaShlLC40KSYmKGU9dGhpcy5fc29sdXRpb24uZHgoKG4tdGhpcy5fc3RhcnRUaW1lKS8xZTMpKSxyPXRoaXMuX3NvbHV0aW9uLngoKG4tdGhpcy5fc3RhcnRUaW1lKS8xZTMpLGkoZSwuNCkmJihlPTApLGkociwuNCkmJihyPTApLHIrPXRoaXMuX2VuZFBvc2l0aW9uKSx0aGlzLl9zb2x1dGlvbiYmaShyLXQsLjQpJiZpKGUsLjQpfHwodGhpcy5fZW5kUG9zaXRpb249dCx0aGlzLl9zb2x1dGlvbj10aGlzLl9zb2x2ZShyLXRoaXMuX2VuZFBvc2l0aW9uLGUpLHRoaXMuX3N0YXJ0VGltZT1uKX19LG8ucHJvdG90eXBlLnNuYXA9ZnVuY3Rpb24odCl7dGhpcy5fc3RhcnRUaW1lPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHRoaXMuX2VuZFBvc2l0aW9uPXQsdGhpcy5fc29sdXRpb249e3g6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZHg6ZnVuY3Rpb24oKXtyZXR1cm4gMH19fSxvLnByb3RvdHlwZS5kb25lPWZ1bmN0aW9uKHQpe3JldHVybiB0fHwodD0obmV3IERhdGUpLmdldFRpbWUoKSkscih0aGlzLngoKSx0aGlzLl9lbmRQb3NpdGlvbiwuNCkmJmkodGhpcy5keCgpLC40KX0sby5wcm90b3R5cGUucmVjb25maWd1cmU9ZnVuY3Rpb24odCxlLG4pe3RoaXMuX209dCx0aGlzLl9rPWUsdGhpcy5fYz1uLHRoaXMuZG9uZSgpfHwodGhpcy5fc29sdXRpb249dGhpcy5fc29sdmUodGhpcy54KCktdGhpcy5fZW5kUG9zaXRpb24sdGhpcy5keCgpKSx0aGlzLl9zdGFydFRpbWU9KG5ldyBEYXRlKS5nZXRUaW1lKCkpfSxvLnByb3RvdHlwZS5zcHJpbmdDb25zdGFudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9rfSxvLnByb3RvdHlwZS5kYW1waW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N9LG8ucHJvdG90eXBlLmNvbmZpZ3VyYXRpb249ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dC5yZWNvbmZpZ3VyZSgxLGUsdC5kYW1waW5nKCkpfWZ1bmN0aW9uIGUodCxlKXt0LnJlY29uZmlndXJlKDEsdC5zcHJpbmdDb25zdGFudCgpLGUpfXJldHVyblt7bGFiZWw6IlNwcmluZyBDb25zdGFudCIscmVhZDp0aGlzLnNwcmluZ0NvbnN0YW50LmJpbmQodGhpcyksd3JpdGU6dC5iaW5kKHRoaXMsdGhpcyksbWluOjEwMCxtYXg6MWUzfSx7bGFiZWw6IkRhbXBpbmciLHJlYWQ6dGhpcy5kYW1waW5nLmJpbmQodGhpcyksd3JpdGU6ZS5iaW5kKHRoaXMsdGhpcyksbWluOjEsbWF4OjUwMH1dfX0sIjRjNjgiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJ1bmktdmlkZW8iLHQuX2coe2F0dHJzOntpZDp0LmlkfX0sdC4kbGlzdGVuZXJzKSxbbigiZGl2Iix7cmVmOiJjb250YWluZXIiLHN0YXRpY0NsYXNzOiJ1bmktdmlkZW8tY29udGFpbmVyIixvbjp7dG91Y2hzdGFydDp0LnRvdWNoc3RhcnQsdG91Y2hlbmQ6dC50b3VjaGVuZCx0b3VjaG1vdmU6dC50b3VjaG1vdmUsZnVsbHNjcmVlbmNoYW5nZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKSx0Lm9uRnVsbHNjcmVlbkNoYW5nZShlKX0sd2Via2l0ZnVsbHNjcmVlbmNoYW5nZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKSx0Lm9uRnVsbHNjcmVlbkNoYW5nZShlLCEwKX19fSxbbigidmlkZW8iLHQuX2Ioe3JlZjoidmlkZW8iLHN0YXRpY0NsYXNzOiJ1bmktdmlkZW8tdmlkZW8iLHN0eWxlOntvYmplY3RGaXQ6dC5vYmplY3RGaXR9LGF0dHJzOntsb29wOnQubG9vcCxzcmM6dC5zcmNTeW5jLHBvc3Rlcjp0LnBvc3RlcixhdXRvcGxheTp0LmF1dG9wbGF5LCJ3ZWJraXQtcGxheXNpbmxpbmUiOiIiLHBsYXlzaW5saW5lOiIifSxkb21Qcm9wczp7bXV0ZWQ6dC5tdXRlZH0sb246e2NsaWNrOnQudHJpZ2dlckNvbnRyb2xzLGR1cmF0aW9uY2hhbmdlOnQub25EdXJhdGlvbkNoYW5nZSxsb2FkZWRtZXRhZGF0YTp0Lm9uTG9hZGVkTWV0YWRhdGEscHJvZ3Jlc3M6dC5vblByb2dyZXNzLHdhaXRpbmc6dC5vbldhaXRpbmcsZXJyb3I6dC5vblZpZGVvRXJyb3IscGxheTp0Lm9uUGxheSxwYXVzZTp0Lm9uUGF1c2UsZW5kZWQ6dC5vbkVuZGVkLHRpbWV1cGRhdGU6dC5vblRpbWVVcGRhdGUsd2Via2l0YmVnaW5mdWxsc2NyZWVuOmZ1bmN0aW9uKGUpe3JldHVybiB0LmVtaXRGdWxsc2NyZWVuQ2hhbmdlKCEwKX0seDV2aWRlb2VudGVyZnVsbHNjcmVlbjpmdW5jdGlvbihlKXtyZXR1cm4gdC5lbWl0RnVsbHNjcmVlbkNoYW5nZSghMCl9LHdlYmtpdGVuZGZ1bGxzY3JlZW46ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZW1pdEZ1bGxzY3JlZW5DaGFuZ2UoITEpfSx4NXZpZGVvZXhpdGZ1bGxzY3JlZW46ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZW1pdEZ1bGxzY3JlZW5DaGFuZ2UoITEpfX19LCJ2aWRlbyIsdC4kYXR0cnMsITEpKSxuKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTp0LmNvbnRyb2xzU2hvdyxleHByZXNzaW9uOiJjb250cm9sc1Nob3cifV0sc3RhdGljQ2xhc3M6InVuaS12aWRlby1iYXIgdW5pLXZpZGVvLWJhci1mdWxsIixvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKX19fSxbbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS12aWRlby1jb250cm9scyJ9LFtuKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTp0LnNob3dQbGF5QnRuLGV4cHJlc3Npb246InNob3dQbGF5QnRuIn1dLHN0YXRpY0NsYXNzOiJ1bmktdmlkZW8tY29udHJvbC1idXR0b24iLGNsYXNzOnsidW5pLXZpZGVvLWNvbnRyb2wtYnV0dG9uLXBsYXkiOiF0LnBsYXlpbmcsInVuaS12aWRlby1jb250cm9sLWJ1dHRvbi1wYXVzZSI6dC5wbGF5aW5nfSxvbjp7Y2xpY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCksdC50cmlnZ2VyKGUpfX19KSxuKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTp0LnNob3dQcm9ncmVzcyxleHByZXNzaW9uOiJzaG93UHJvZ3Jlc3MifV0sc3RhdGljQ2xhc3M6InVuaS12aWRlby1jdXJyZW50LXRpbWUifSxbdC5fdigiICIrdC5fcyh0Ll9mKCJ0aW1lIikodC5jdXJyZW50VGltZSkpKyIgIildKSxuKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTp0LnNob3dQcm9ncmVzcyxleHByZXNzaW9uOiJzaG93UHJvZ3Jlc3MifV0scmVmOiJwcm9ncmVzcyIsc3RhdGljQ2xhc3M6InVuaS12aWRlby1wcm9ncmVzcy1jb250YWluZXIiLG9uOntjbGljazpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKSx0LmNsaWNrUHJvZ3Jlc3MoZSl9fX0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdmlkZW8tcHJvZ3Jlc3MifSxbbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS12aWRlby1wcm9ncmVzcy1idWZmZXJlZCIsc3R5bGU6e3dpZHRoOnQuYnVmZmVyZWQrIiUifX0pLG4oImRpdiIse3JlZjoiYmFsbCIsc3RhdGljQ2xhc3M6InVuaS12aWRlby1iYWxsIixzdHlsZTp7bGVmdDp0LnByb2dyZXNzKyIlIn19LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXZpZGVvLWlubmVyIn0pXSldKV0pLG4oImRpdiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOnQuc2hvd1Byb2dyZXNzLGV4cHJlc3Npb246InNob3dQcm9ncmVzcyJ9XSxzdGF0aWNDbGFzczoidW5pLXZpZGVvLWR1cmF0aW9uIn0sW3QuX3YoIiAiK3QuX3ModC5fZigidGltZSIpKHQuZHVyYXRpb258fHQuZHVyYXRpb25UaW1lKSkrIiAiKV0pXSksdC5kYW5tdUJ0bj9uKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXZpZGVvLWRhbm11LWJ1dHRvbiIsY2xhc3M6eyJ1bmktdmlkZW8tZGFubXUtYnV0dG9uLWFjdGl2ZSI6dC5lbmFibGVEYW5tdVN5bmN9LG9uOntjbGljazpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKSx0LnRyaWdnZXJEYW5tdShlKX19fSxbdC5fdigiICIrdC5fcyh0LiQkdCgidW5pLnZpZGVvLmRhbm11IikpKyIgIildKTp0Ll9lKCksbigiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6dC5zaG93RnVsbHNjcmVlbkJ0bixleHByZXNzaW9uOiJzaG93RnVsbHNjcmVlbkJ0biJ9XSxzdGF0aWNDbGFzczoidW5pLXZpZGVvLWZ1bGxzY3JlZW4iLGNsYXNzOnsidW5pLXZpZGVvLXR5cGUtZnVsbHNjcmVlbiI6dC5mdWxsc2NyZWVufSxvbjp7Y2xpY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCksdC50cmlnZ2VyRnVsbHNjcmVlbighdC5mdWxsc2NyZWVuKX19fSldKSxuKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTp0LnN0YXJ0JiZ0LmVuYWJsZURhbm11U3luYyxleHByZXNzaW9uOiJzdGFydCYmZW5hYmxlRGFubXVTeW5jIn1dLHJlZjoiZGFubXUiLHN0YXRpY0NsYXNzOiJ1bmktdmlkZW8tZGFubXUiLHN0YXRpY1N0eWxlOnsiei1pbmRleCI6IjAifX0pLHQuY2VudGVyUGxheUJ0blNob3c/bigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS12aWRlby1jb3ZlciIsb246e2NsaWNrOmZ1bmN0aW9uKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCl9fX0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdmlkZW8tY292ZXItcGxheS1idXR0b24iLG9uOntjbGljazpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKSx0LnBsYXkoZSl9fX0pLG4oInAiLHtzdGF0aWNDbGFzczoidW5pLXZpZGVvLWNvdmVyLWR1cmF0aW9uIn0sW3QuX3YoIiAiK3QuX3ModC5fZigidGltZSIpKHQuZHVyYXRpb258fHQuZHVyYXRpb25UaW1lKSkrIiAiKV0pXSk6dC5fZSgpLG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdmlkZW8tdG9hc3QiLGNsYXNzOnsidW5pLXZpZGVvLXRvYXN0LXZvbHVtZSI6InZvbHVtZSI9PT10Lmdlc3R1cmVUeXBlfX0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdmlkZW8tdG9hc3QtdGl0bGUifSxbdC5fdigiICIrdC5fcyh0LiQkdCgidW5pLnZpZGVvLnZvbHVtZSIpKSsiICIpXSksbigic3ZnIix7c3RhdGljQ2xhc3M6InVuaS12aWRlby10b2FzdC1pY29uIixhdHRyczp7d2lkdGg6IjIwMHB4IixoZWlnaHQ6IjIwMHB4Iix2aWV3Qm94OiIwIDAgMTAyNCAxMDI0Iix2ZXJzaW9uOiIxLjEiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9fSxbbigicGF0aCIse2F0dHJzOntkOiJNNDc1LjQwMDcwNCAyMDEuMTk1NTJsMCA2MjEuNjc0NDk2cTAgMTQuODU2MTkyLTEwLjg1NjQ0OCAyNS43MTI2NHQtMjUuNzEyNjQgMTAuODU2NDQ4LTI1LjcxMjY0LTEwLjg1NjQ0OGwtMTkwLjI3MzUzNi0xOTAuMjczNTM2LTE0OS43MDQ3MDQgMHEtMTQuODU2MTkyIDAtMjUuNzEyNjQtMTAuODU2NDQ4dC0xMC44NTY0NDgtMjUuNzEyNjRsMC0yMTkuNDE0NTI4cTAtMTQuODU2MTkyIDEwLjg1NjQ0OC0yNS43MTI2NHQyNS43MTI2NC0xMC44NTY0NDhsMTQ5LjcwNDcwNCAwIDE5MC4yNzM1MzYtMTkwLjI3MzUzNnExMC44NTY0NDgtMTAuODU2NDQ4IDI1LjcxMjY0LTEwLjg1NjQ0OHQyNS43MTI2NCAxMC44NTY0NDggMTAuODU2NDQ4IDI1LjcxMjY0em0yMTkuNDE0NTI4IDMxMC44MzcyNDhxMCA0My40MjU3OTItMjQuMjg0MTYgODAuODUxOTY4dC02NC4yODE2IDUzLjQyNTE1MnEtNS43MTM5MiAyLjg1Njk2LTE0LjI4NDggMi44NTY5Ni0xNC44NTYxOTIgMC0yNS43MTI2NC0xMC41NzA3NTJ0LTEwLjg1NjQ0OC0yNS45OTgzMzZxMC0xMS45OTkyMzIgNi44NTY3MDQtMjAuMjg0NDE2dDE2LjU3MDM2OC0xNC4yODQ4IDE5LjQyNzMyOC0xMy4xNDIwMTYgMTYuNTcwMzY4LTIwLjI4NDQxNiA2Ljg1NjcwNC0zMi41NjkzNDQtNi44NTY3MDQtMzIuNTY5MzQ0LTE2LjU3MDM2OC0yMC4yODQ0MTYtMTkuNDI3MzI4LTEzLjE0MjAxNi0xNi41NzAzNjgtMTQuMjg0OC02Ljg1NjcwNC0yMC4yODQ0MTZxMC0xNS40Mjc1ODQgMTAuODU2NDQ4LTI1Ljk5ODMzNnQyNS43MTI2NC0xMC41NzA3NTJxOC41NzA4OCAwIDE0LjI4NDggMi44NTY5NiAzOS45OTc0NCAxNS40Mjc1ODQgNjQuMjgxNiA1My4xMzk0NTZ0MjQuMjg0MTYgODEuMTM3NjY0em0xNDYuMjc2MzUyIDBxMCA4Ny40MjI5NzYtNDguNTY4MzIgMTYxLjQxODI0dC0xMjguNTYzMiAxMDcuNzA3MzkycS03LjQyODA5NiAyLjg1Njk2LTE0LjI4NDggMi44NTY5Ni0xNS40Mjc1ODQgMC0yNi4yODQwMzItMTAuODU2NDQ4dC0xMC44NTY0NDgtMjUuNzEyNjRxMC0yMi4yODQyODggMjIuMjg0Mjg4LTMzLjcxMjEyOCAzMS45OTc5NTItMTYuNTcwMzY4IDQzLjQyNTc5Mi0yNS4xNDEyNDggNDIuMjgzMDA4LTMwLjg1NTE2OCA2NS45OTU3NzYtNzcuNDIzNjE2dDIzLjcxMjc2OC05OS4xMzY1MTItMjMuNzEyNzY4LTk5LjEzNjUxMi02NS45OTU3NzYtNzcuNDIzNjE2cS0xMS40Mjc4NC04LjU3MDg4LTQzLjQyNTc5Mi0yNS4xNDEyNDgtMjIuMjg0Mjg4LTExLjQyNzg0LTIyLjI4NDI4OC0zMy43MTIxMjggMC0xNC44NTYxOTIgMTAuODU2NDQ4LTI1LjcxMjY0dDI1LjcxMjY0LTEwLjg1NjQ0OHE3LjQyODA5NiAwIDE0Ljg1NjE5MiAyLjg1Njk2IDc5Ljk5NDg4IDMzLjcxMjEyOCAxMjguNTYzMiAxMDcuNzA3MzkydDQ4LjU2ODMyIDE2MS40MTgyNHptMTQ2LjI3NjM1MiAwcTAgMTMxLjQyMDE2LTcyLjU2Njc4NCAyNDEuNDEzMTJ0LTE5My4xMzA0OTYgMTYxLjk4OTYzMnEtNy40MjgwOTYgMi44NTY5Ni0xNC44NTYxOTIgMi44NTY5Ni0xNC44NTYxOTIgMC0yNS43MTI2NC0xMC44NTY0NDh0LTEwLjg1NjQ0OC0yNS43MTI2NHEwLTIwLjU3MDExMiAyMi4yODQyODgtMzMuNzEyMTI4IDMuOTk5NzQ0LTIuMjg1NTY4IDEyLjg1NjMyLTUuOTk5NjE2dDEyLjg1NjMyLTUuOTk5NjE2cTI2LjI4NDAzMi0xNC4yODQ4IDQ2Ljg1NDE0NC0yOS4xNDA5OTIgNzAuMjgxMjE2LTUxLjk5NjY3MiAxMDkuNzA3MjY0LTEyOS43MDU5ODR0MzkuNDI2MDQ4LTE2NS4xMzIyODgtMzkuNDI2MDQ4LTE2NS4xMzIyODgtMTA5LjcwNzI2NC0xMjkuNzA1OTg0cS0yMC41NzAxMTItMTQuODU2MTkyLTQ2Ljg1NDE0NC0yOS4xNDA5OTItMy45OTk3NDQtMi4yODU1NjgtMTIuODU2MzItNS45OTk2MTZ0LTEyLjg1NjMyLTUuOTk5NjE2cS0yMi4yODQyODgtMTMuMTQyMDE2LTIyLjI4NDI4OC0zMy43MTIxMjggMC0xNC44NTYxOTIgMTAuODU2NDQ4LTI1LjcxMjY0dDI1LjcxMjY0LTEwLjg1NjQ0OHE3LjQyODA5NiAwIDE0Ljg1NjE5MiAyLjg1Njk2IDEyMC41NjM3MTIgNTEuOTk2NjcyIDE5My4xMzA0OTYgMTYxLjk4OTYzMnQ3Mi41NjY3ODQgMjQxLjQxMzEyeiJ9fSldKSxuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXZpZGVvLXRvYXN0LXZhbHVlIn0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdmlkZW8tdG9hc3QtdmFsdWUtY29udGVudCIsc3R5bGU6e3dpZHRoOjEwMCp0LnZvbHVtZU5ldysiJSJ9fSxbbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS12aWRlby10b2FzdC12b2x1bWUtZ3JpZHMifSx0Ll9sKDEwLChmdW5jdGlvbih0LGUpe3JldHVybiBuKCJkaXYiLHtrZXk6ZSxzdGF0aWNDbGFzczoidW5pLXZpZGVvLXRvYXN0LXZvbHVtZS1ncmlkcy1pdGVtIn0pfSkpLDApXSldKV0pLG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdmlkZW8tdG9hc3QiLGNsYXNzOnsidW5pLXZpZGVvLXRvYXN0LXByb2dyZXNzIjoicHJvZ3Jlc3MiPT10Lmdlc3R1cmVUeXBlfX0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdmlkZW8tdG9hc3QtdGl0bGUifSxbdC5fdigiICIrdC5fcyh0Ll9mKCJ0aW1lIikodC5jdXJyZW50VGltZU5ldykpKyIgLyAiK3QuX3ModC5fZigidGltZSIpKHQuZHVyYXRpb25UaW1lKSkrIiAiKV0pXSksbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS12aWRlby1zbG90cyJ9LFt0Ll90KCJkZWZhdWx0IildLDIpXSldKX0saT1bXSxvPW4oIjkwOWUiKSxhPW4oIjM0MGQiKSxzPW4oIjAzNzIiKSxjPSEhYVsidCJdJiZ7cGFzc2l2ZTohMX0sdT17Tk9ORToibm9uZSIsU1RPUDoic3RvcCIsVk9MVU1FOiJ2b2x1bWUiLFBST0dSRVNTOiJwcm9ncmVzcyJ9LGw9e25hbWU6IlZpZGVvIixmaWx0ZXJzOnt0aW1lOmZ1bmN0aW9uKHQpe3Q9dD4wJiZ0PDEvMD90OjA7dmFyIGU9TWF0aC5mbG9vcih0LzM2MDApLG49TWF0aC5mbG9vcih0JTM2MDAvNjApLHI9TWF0aC5mbG9vcih0JTM2MDAlNjApO2U9KGU8MTA/IjAiOiIiKStlLG49KG48MTA/IjAiOiIiKStuLHI9KHI8MTA/IjAiOiIiKStyO3ZhciBpPW4rIjoiK3I7cmV0dXJuIjAwIiE9PWUmJihpPWUrIjoiK2kpLGl9fSxtaXhpbnM6W3NbImMiXSxvWyJnIl0sb1siZCJdXSxwcm9wczp7aWQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LHNyYzp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sZHVyYXRpb246e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6IiJ9LGNvbnRyb2xzOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMH0sZGFubXVMaXN0Ont0eXBlOkFycmF5LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LGRhbm11QnRuOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sZW5hYmxlRGFubXU6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxhdXRvcGxheTp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LGxvb3A6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxtdXRlZDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LG9iamVjdEZpdDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiY29udGFpbiJ9LHBvc3Rlcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sZGlyZWN0aW9uOnt0eXBlOltTdHJpbmcsTnVtYmVyXSxkZWZhdWx0OiIifSxzaG93UHJvZ3Jlc3M6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxpbml0aWFsVGltZTp7dHlwZTpbU3RyaW5nLE51bWJlcl0sZGVmYXVsdDowfSxzaG93RnVsbHNjcmVlbkJ0bjp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITB9LHBhZ2VHZXN0dXJlOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sZW5hYmxlUHJvZ3Jlc3NHZXN0dXJlOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMH0sc2hvd1BsYXlCdG46e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiEwfSxzaG93Q2VudGVyUGxheUJ0bjp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITB9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3N0YXJ0OiExLHBsYXlpbmc6ITEsY3VycmVudFRpbWU6MCxkdXJhdGlvblRpbWU6MCxwcm9ncmVzczowLHRvdWNoaW5nOiExLGVuYWJsZURhbm11U3luYzpCb29sZWFuKHRoaXMuZW5hYmxlRGFubXUpLGNvbnRyb2xzVmlzaWJsZTohMCxmdWxsc2NyZWVuOiExLGNvbnRyb2xzVG91Y2hpbmc6ITEsdG91Y2hTdGFydE9yaWdpbjp7eDowLHk6MH0sZ2VzdHVyZVR5cGU6dS5OT05FLGN1cnJlbnRUaW1lT2xkOjAsY3VycmVudFRpbWVOZXc6MCx2b2x1bWVPbGQ6bnVsbCx2b2x1bWVOZXc6bnVsbCxidWZmZXJlZDowLGlzU2FmYXJpOi9eQXBwbGUvLnRlc3QobmF2aWdhdG9yLnZlbmRvcil9fSxjb21wdXRlZDp7Y2VudGVyUGxheUJ0blNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaG93Q2VudGVyUGxheUJ0biYmIXRoaXMuc3RhcnR9LGNvbnRyb2xzU2hvdzpmdW5jdGlvbigpe3JldHVybiF0aGlzLmNlbnRlclBsYXlCdG5TaG93JiZ0aGlzLmNvbnRyb2xzJiZ0aGlzLmNvbnRyb2xzVmlzaWJsZX0sYXV0b0hpZGVDb250b3JsczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRyb2xzU2hvdyYmdGhpcy5wbGF5aW5nJiYhdGhpcy5jb250cm9sc1RvdWNoaW5nfSxzcmNTeW5jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGdldFJlYWxQYXRoKHRoaXMuc3JjKX19LHdhdGNoOntlbmFibGVEYW5tdVN5bmM6ZnVuY3Rpb24odCl7dGhpcy4kZW1pdCgidXBkYXRlOmVuYWJsZURhbm11Iix0KX0sYXV0b0hpZGVDb250b3JsczpmdW5jdGlvbih0KXt0P3RoaXMuYXV0b0hpZGVTdGFydCgpOnRoaXMuYXV0b0hpZGVFbmQoKX0sc3JjU3luYzpmdW5jdGlvbih0KXt0aGlzLnBsYXlpbmc9ITEsdGhpcy5jdXJyZW50VGltZT0wfSxjdXJyZW50VGltZTpmdW5jdGlvbigpe3RoaXMudXBkYXRlUHJvZ3Jlc3MoKX0sZHVyYXRpb246ZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZVByb2dyZXNzKCl9LGJ1ZmZlcmVkOmZ1bmN0aW9uKHQpezAhPT10JiZ0aGlzLiR0cmlnZ2VyKCJwcm9ncmVzcyIse30se2J1ZmZlcmVkOnR9KX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLm90aGVyRGF0YT17ZGFubXVMaXN0OltdLGRhbm11SW5kZXg6e3RpbWU6MCxpbmRleDotMX0saGlkZVRpbWluZzpudWxsfTt2YXIgdD10aGlzLm90aGVyRGF0YS5kYW5tdUxpc3Q9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhbm11TGlzdHx8W10pKTt0LnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQudGltZXx8MCktKGUudGltZXx8MCl9KSl9LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgdCxlLG4scj10aGlzLGk9dGhpcyxvPSEwLGE9dGhpcy4kcmVmcy5iYWxsO2Z1bmN0aW9uIHMocil7dmFyIGE9ci50YXJnZXRUb3VjaGVzWzBdLHM9YS5wYWdlWCxjPWEucGFnZVk7aWYobyYmTWF0aC5hYnMocy10KTxNYXRoLmFicyhjLWUpKXUoKTtlbHNle289ITE7dmFyIGw9aS4kcmVmcy5wcm9ncmVzcy5vZmZzZXRXaWR0aCxmPW4rKHMtdCkvbCoxMDA7ZjwwP2Y9MDpmPjEwMCYmKGY9MTAwKSxpLnByb2dyZXNzPWYsci5wcmV2ZW50RGVmYXVsdCgpLHIuc3RvcFByb3BhZ2F0aW9uKCl9fWZ1bmN0aW9uIHUodCl7aS5jb250cm9sc1RvdWNoaW5nPSExLGkudG91Y2hpbmcmJihhLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIscyxjKSxvfHwodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksaS5zZWVrKGkuJHJlZnMudmlkZW8uZHVyYXRpb24qaS5wcm9ncmVzcy8xMDApKSxpLnRvdWNoaW5nPSExKX1hLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLChmdW5jdGlvbihpKXtyLmNvbnRyb2xzVG91Y2hpbmc9ITA7dmFyIHU9aS50YXJnZXRUb3VjaGVzWzBdO3Q9dS5wYWdlWCxlPXUucGFnZVksbj1yLnByb2dyZXNzLG89ITAsci50b3VjaGluZz0hMCxhLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIscyxjKX0pKSxhLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix1KSxhLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIix1KX0sYmVmb3JlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMudHJpZ2dlckZ1bGxzY3JlZW4oITEpLGNsZWFyVGltZW91dCh0aGlzLm90aGVyRGF0YS5oaWRlVGltaW5nKX0sbWV0aG9kczp7X2hhbmRsZVN1YnNjcmliZTpmdW5jdGlvbih0KXt2YXIgZSxuPXQudHlwZSxyPXQuZGF0YSxpPXZvaWQgMD09PXI/e306cixvPVsicGxheSIsInBhdXNlIiwic2VlayIsInNlbmREYW5tdSIsInBsYXliYWNrUmF0ZSIsInJlcXVlc3RGdWxsU2NyZWVuIiwiZXhpdEZ1bGxTY3JlZW4iXTtzd2l0Y2gobil7Y2FzZSJzZWVrIjplPWkucG9zaXRpb247YnJlYWs7Y2FzZSJzZW5kRGFubXUiOmU9aTticmVhaztjYXNlInBsYXliYWNrUmF0ZSI6ZT1pLnJhdGU7YnJlYWt9by5pbmRleE9mKG4pPj0wJiZ0aGlzW25dKGUpfSx0cmlnZ2VyOmZ1bmN0aW9uKCl7dGhpcy5wbGF5aW5nP3RoaXMuJHJlZnMudmlkZW8ucGF1c2UoKTp0aGlzLiRyZWZzLnZpZGVvLnBsYXkoKX0scGxheTpmdW5jdGlvbigpe3RoaXMuc3RhcnQ9ITAsdGhpcy4kcmVmcy52aWRlby5wbGF5KCl9LHBhdXNlOmZ1bmN0aW9uKCl7dGhpcy4kcmVmcy52aWRlby5wYXVzZSgpfSxzZWVrOmZ1bmN0aW9uKHQpe3Q9TnVtYmVyKHQpLCJudW1iZXIiIT09dHlwZW9mIHR8fGlzTmFOKHQpfHwodGhpcy4kcmVmcy52aWRlby5jdXJyZW50VGltZT10KX0sY2xpY2tQcm9ncmVzczpmdW5jdGlvbih0KXt2YXIgZT10aGlzLiRyZWZzLnByb2dyZXNzLG49dC50YXJnZXQscj10Lm9mZnNldFg7d2hpbGUobiE9PWUpcis9bi5vZmZzZXRMZWZ0LG49bi5wYXJlbnROb2RlO3ZhciBpPWUub2Zmc2V0V2lkdGgsbz0wO3I+PTAmJnI8PWkmJihvPXIvaSx0aGlzLnNlZWsodGhpcy4kcmVmcy52aWRlby5kdXJhdGlvbipvKSl9LHRyaWdnZXJEYW5tdTpmdW5jdGlvbigpe3RoaXMuZW5hYmxlRGFubXVTeW5jPSF0aGlzLmVuYWJsZURhbm11U3luY30scGxheURhbm11OmZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTtlLmNsYXNzTmFtZT0idW5pLXZpZGVvLWRhbm11LWl0ZW0iLGUuaW5uZXJUZXh0PXQudGV4dDt2YXIgbj0iYm90dG9tOiAiLmNvbmNhdCgxMDAqTWF0aC5yYW5kb20oKSwiJTtjb2xvcjogIikuY29uY2F0KHQuY29sb3IsIjsiKTtlLnNldEF0dHJpYnV0ZSgic3R5bGUiLG4pLHRoaXMuJHJlZnMuZGFubXUuYXBwZW5kQ2hpbGQoZSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtuKz0ibGVmdDogMDstd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsiLGUuc2V0QXR0cmlidXRlKCJzdHlsZSIsbiksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLnJlbW92ZSgpfSksNGUzKX0pLDE3KX0sc2VuZERhbm11OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMub3RoZXJEYXRhO2UuZGFubXVMaXN0LnNwbGljZShlLmRhbm11SW5kZXguaW5kZXgrMSwwLHt0ZXh0OlN0cmluZyh0LnRleHQpLGNvbG9yOnQuY29sb3IsdGltZTp0aGlzLiRyZWZzLnZpZGVvLmN1cnJlbnRUaW1lfHwwfSl9LHBsYXliYWNrUmF0ZTpmdW5jdGlvbih0KXt0aGlzLiRyZWZzLnZpZGVvLnBsYXliYWNrUmF0ZT10fSx0cmlnZ2VyRnVsbHNjcmVlbjpmdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMuJHJlZnMuY29udGFpbmVyLHI9dGhpcy4kcmVmcy52aWRlbzt0PyFkb2N1bWVudC5mdWxsc2NyZWVuRW5hYmxlZCYmIWRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkfHx0aGlzLmlzU2FmYXJpJiYhdGhpcy51c2VySW50ZXJhY3Q/ci53ZWJraXRFbnRlckZ1bGxTY3JlZW4/ci53ZWJraXRFbnRlckZ1bGxTY3JlZW4oKTooZT0hMCxuLnJlbW92ZSgpLG4uY2xhc3NMaXN0LmFkZCgidW5pLXZpZGVvLXR5cGUtZnVsbHNjcmVlbiIpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobikpOm5bZG9jdW1lbnQuZnVsbHNjcmVlbkVuYWJsZWQ/InJlcXVlc3RGdWxsc2NyZWVuIjoid2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4iXSgpOmRvY3VtZW50LmZ1bGxzY3JlZW5FbmFibGVkfHxkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRW5hYmxlZD9kb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudD9kb2N1bWVudC5leGl0RnVsbHNjcmVlbigpOmRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50JiZkb2N1bWVudC53ZWJraXRFeGl0RnVsbHNjcmVlbigpOnIud2Via2l0RXhpdEZ1bGxTY3JlZW4/ci53ZWJraXRFeGl0RnVsbFNjcmVlbigpOihlPSEwLG4ucmVtb3ZlKCksbi5jbGFzc0xpc3QucmVtb3ZlKCJ1bmktdmlkZW8tdHlwZS1mdWxsc2NyZWVuIiksdGhpcy4kZWwuYXBwZW5kQ2hpbGQobikpLGUmJnRoaXMuZW1pdEZ1bGxzY3JlZW5DaGFuZ2UodCl9LG9uRnVsbHNjcmVlbkNoYW5nZTpmdW5jdGlvbih0LGUpe2UmJmRvY3VtZW50LmZ1bGxzY3JlZW5FbmFibGVkfHx0aGlzLmVtaXRGdWxsc2NyZWVuQ2hhbmdlKCEoIWRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50JiYhZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQpKX0sZW1pdEZ1bGxzY3JlZW5DaGFuZ2U6ZnVuY3Rpb24odCl7dGhpcy5mdWxsc2NyZWVuPXQsdGhpcy4kdHJpZ2dlcigiZnVsbHNjcmVlbmNoYW5nZSIse30se2Z1bGxTY3JlZW46dCxkaXJlY3Rpb246InZlcnRpY2FsIn0pfSxyZXF1ZXN0RnVsbFNjcmVlbjpmdW5jdGlvbigpe3RoaXMudHJpZ2dlckZ1bGxzY3JlZW4oITApfSxleGl0RnVsbFNjcmVlbjpmdW5jdGlvbigpe3RoaXMudHJpZ2dlckZ1bGxzY3JlZW4oITEpfSxvbkR1cmF0aW9uQ2hhbmdlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudGFyZ2V0O3RoaXMuZHVyYXRpb25UaW1lPWUuZHVyYXRpb259LG9uTG9hZGVkTWV0YWRhdGE6ZnVuY3Rpb24odCl7dmFyIGU9TnVtYmVyKHRoaXMuaW5pdGlhbFRpbWUpfHwwLG49dC50YXJnZXQ7ZT4wJiYobi5jdXJyZW50VGltZT1lKSx0aGlzLiR0cmlnZ2VyKCJsb2FkZWRtZXRhZGF0YSIsdCx7d2lkdGg6bi52aWRlb1dpZHRoLGhlaWdodDpuLnZpZGVvSGVpZ2h0LGR1cmF0aW9uOm4uZHVyYXRpb259KSx0aGlzLm9uUHJvZ3Jlc3ModCl9LG9uUHJvZ3Jlc3M6ZnVuY3Rpb24odCl7dmFyIGU9dC50YXJnZXQsbj1lLmJ1ZmZlcmVkO24ubGVuZ3RoJiYodGhpcy5idWZmZXJlZD1uLmVuZChuLmxlbmd0aC0xKS9lLmR1cmF0aW9uKjEwMCl9LG9uV2FpdGluZzpmdW5jdGlvbih0KXt0aGlzLiR0cmlnZ2VyKCJ3YWl0aW5nIix0LHt9KX0sb25WaWRlb0Vycm9yOmZ1bmN0aW9uKHQpe3RoaXMucGxheWluZz0hMSx0aGlzLiR0cmlnZ2VyKCJlcnJvciIsdCx7fSl9LG9uUGxheTpmdW5jdGlvbih0KXt0aGlzLnN0YXJ0PSEwLHRoaXMucGxheWluZz0hMCx0aGlzLiR0cmlnZ2VyKCJwbGF5Iix0LHt9KX0sb25QYXVzZTpmdW5jdGlvbih0KXt0aGlzLnBsYXlpbmc9ITEsdGhpcy4kdHJpZ2dlcigicGF1c2UiLHQse30pfSxvbkVuZGVkOmZ1bmN0aW9uKHQpe3RoaXMucGxheWluZz0hMSx0aGlzLiR0cmlnZ2VyKCJlbmRlZCIsdCx7fSl9LG9uVGltZVVwZGF0ZTpmdW5jdGlvbih0KXt2YXIgZT10LnRhcmdldCxuPXRoaXMub3RoZXJEYXRhLHI9dGhpcy5jdXJyZW50VGltZT1lLmN1cnJlbnRUaW1lLGk9bi5kYW5tdUluZGV4LG89e3RpbWU6cixpbmRleDppLmluZGV4fSxhPW4uZGFubXVMaXN0O2lmKHI+aS50aW1lKWZvcih2YXIgcz1pLmluZGV4KzE7czxhLmxlbmd0aDtzKyspe3ZhciBjPWFbc107aWYoIShyPj0oYy50aW1lfHwwKSkpYnJlYWs7by5pbmRleD1zLHRoaXMucGxheWluZyYmdGhpcy5lbmFibGVEYW5tdVN5bmMmJnRoaXMucGxheURhbm11KGMpfWVsc2UgaWYocjxpLnRpbWUpZm9yKHZhciB1PWkuaW5kZXgtMTt1Pi0xO3UtLSl7dmFyIGw9YVt1XTtpZighKHI8PShsLnRpbWV8fDApKSlicmVhaztvLmluZGV4PXUtMX1uLmRhbm11SW5kZXg9byx0aGlzLiR0cmlnZ2VyKCJ0aW1ldXBkYXRlIix0LHtjdXJyZW50VGltZTpyLGR1cmF0aW9uOmUuZHVyYXRpb259KX0sdHJpZ2dlckNvbnRyb2xzOmZ1bmN0aW9uKCl7dGhpcy5jb250cm9sc1Zpc2libGU9IXRoaXMuY29udHJvbHNWaXNpYmxlfSx0b3VjaHN0YXJ0OmZ1bmN0aW9uKHQpe3ZhciBlPXQudGFyZ2V0VG91Y2hlc1swXTt0aGlzLnRvdWNoU3RhcnRPcmlnaW49e3g6ZS5wYWdlWCx5OmUucGFnZVl9LHRoaXMuZ2VzdHVyZVR5cGU9dS5OT05FLHRoaXMudm9sdW1lT2xkPW51bGwsdGhpcy5jdXJyZW50VGltZU9sZD10aGlzLmN1cnJlbnRUaW1lTmV3PTB9LHRvdWNobW92ZTpmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5zdG9wUHJvcGFnYXRpb24oKSx0LnByZXZlbnREZWZhdWx0KCl9dGhpcy5mdWxsc2NyZWVuJiZlKCk7dmFyIG49dGhpcy5nZXN0dXJlVHlwZTtpZihuIT09dS5TVE9QKXt2YXIgcj10LnRhcmdldFRvdWNoZXNbMF0saT1yLnBhZ2VYLG89ci5wYWdlWSxhPXRoaXMudG91Y2hTdGFydE9yaWdpbjtpZihuPT09dS5QUk9HUkVTUz90aGlzLmNoYW5nZVByb2dyZXNzKGktYS54KTpuPT09dS5WT0xVTUUmJnRoaXMuY2hhbmdlVm9sdW1lKG8tYS55KSxuPT09dS5OT05FKWlmKE1hdGguYWJzKGktYS54KT5NYXRoLmFicyhvLWEueSkpe2lmKCF0aGlzLmVuYWJsZVByb2dyZXNzR2VzdHVyZSlyZXR1cm4gdm9pZCh0aGlzLmdlc3R1cmVUeXBlPXUuU1RPUCk7dGhpcy5nZXN0dXJlVHlwZT11LlBST0dSRVNTLHRoaXMuY3VycmVudFRpbWVPbGQ9dGhpcy5jdXJyZW50VGltZU5ldz10aGlzLiRyZWZzLnZpZGVvLmN1cnJlbnRUaW1lLHRoaXMuZnVsbHNjcmVlbnx8ZSgpfWVsc2V7aWYoIXRoaXMucGFnZUdlc3R1cmUpcmV0dXJuIHZvaWQodGhpcy5nZXN0dXJlVHlwZT11LlNUT1ApO3RoaXMuZ2VzdHVyZVR5cGU9dS5WT0xVTUUsdGhpcy52b2x1bWVPbGQ9dGhpcy4kcmVmcy52aWRlby52b2x1bWUsdGhpcy5mdWxsc2NyZWVufHxlKCl9fX0sdG91Y2hlbmQ6ZnVuY3Rpb24odCl7dGhpcy5nZXN0dXJlVHlwZSE9PXUuTk9ORSYmdGhpcy5nZXN0dXJlVHlwZSE9PXUuU1RPUCYmKHQuc3RvcFByb3BhZ2F0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCgpKSx0aGlzLmdlc3R1cmVUeXBlPT09dS5QUk9HUkVTUyYmdGhpcy5jdXJyZW50VGltZU9sZCE9PXRoaXMuY3VycmVudFRpbWVOZXcmJih0aGlzLiRyZWZzLnZpZGVvLmN1cnJlbnRUaW1lPXRoaXMuY3VycmVudFRpbWVOZXcpLHRoaXMuZ2VzdHVyZVR5cGU9dS5OT05FfSxjaGFuZ2VQcm9ncmVzczpmdW5jdGlvbih0KXt2YXIgZT10aGlzLiRyZWZzLnZpZGVvLmR1cmF0aW9uLG49dC82MDAqZSt0aGlzLmN1cnJlbnRUaW1lT2xkO248MD9uPTA6bj5lJiYobj1lKSx0aGlzLmN1cnJlbnRUaW1lTmV3PW59LGNoYW5nZVZvbHVtZTpmdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMudm9sdW1lT2xkOyJudW1iZXIiPT09dHlwZW9mIG4mJihlPW4tdC8yMDAsZTwwP2U9MDplPjEmJihlPTEpLHRoaXMuJHJlZnMudmlkZW8udm9sdW1lPWUsdGhpcy52b2x1bWVOZXc9ZSl9LGF1dG9IaWRlU3RhcnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMub3RoZXJEYXRhLmhpZGVUaW1pbmc9c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LmNvbnRyb2xzVmlzaWJsZT0hMX0pLDNlMyl9LGF1dG9IaWRlRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vdGhlckRhdGE7dC5oaWRlVGltaW5nJiYoY2xlYXJUaW1lb3V0KHQuaGlkZVRpbWluZyksdC5oaWRlVGltaW5nPW51bGwpfSx1cGRhdGVQcm9ncmVzczpmdW5jdGlvbigpe3RoaXMudG91Y2hpbmd8fCh0aGlzLnByb2dyZXNzPXRoaXMuY3VycmVudFRpbWUvdGhpcy5kdXJhdGlvblRpbWUqMTAwKX19fSxmPWwsZD0obigiYTYxZCIpLG4oIjg4NDQiKSksaD1PYmplY3QoZFsiYSJdKShmLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPWguZXhwb3J0c30sIjRjYTEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJwcmV2aWV3SW1hZ2UiLChmdW5jdGlvbigpe3JldHVybiBpfSkpO3ZhciByPW4oIjQ3MzgiKSxpPXt1cmxzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiEwLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe3ZhciBuO2lmKGUudXJscz10Lm1hcCgoZnVuY3Rpb24odCl7aWYoInN0cmluZyI9PT10eXBlb2YgdClyZXR1cm4gT2JqZWN0KHJbImEiXSkodCk7bj0hMH0pKSxuKXJldHVybiJ1cmwgaXMgbm90IHN0cmluZyJ9fSxjdXJyZW50Ont0eXBlOltTdHJpbmcsTnVtYmVyXSx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXsibnVtYmVyIj09PXR5cGVvZiB0P2UuY3VycmVudD10PjAmJnQ8ZS51cmxzLmxlbmd0aD90OjA6InN0cmluZyI9PT10eXBlb2YgdCYmdCYmKGUuY3VycmVudD1PYmplY3QoclsiYSJdKSh0KSl9LGRlZmF1bHQ6MH19fSwiNGNhMTMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe24uZChlLCJkb3dubG9hZEZpbGUiLChmdW5jdGlvbigpe3JldHVybiB1fSkpO3ZhciByPW4oImJkZWUiKTtmdW5jdGlvbiBpKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fWZ1bmN0aW9uIGEodCxlLG4pe3JldHVybiBlJiZvKHQucHJvdG90eXBlLGUpLG4mJm8odCxuKSx0fWZ1bmN0aW9uIHModCxlLG4pe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bix0fXZhciBjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtpKHRoaXMsdCkscyh0aGlzLCJfeGhyIix2b2lkIDApLHModGhpcywiX2NhbGxiYWNrcyIsW10pLHRoaXMuX3hocj1lfXJldHVybiBhKHQsW3trZXk6Im9uUHJvZ3Jlc3NVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpeyJmdW5jdGlvbiI9PT10eXBlb2YgdCYmdGhpcy5fY2FsbGJhY2tzLnB1c2godCl9fSx7a2V5OiJvZmZQcm9ncmVzc1VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY2FsbGJhY2tzLmluZGV4T2YodCk7ZT49MCYmdGhpcy5fY2FsbGJhY2tzLnNwbGljZShlLDEpfX0se2tleToiYWJvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5feGhyJiYodGhpcy5feGhyLmFib3J0KCksZGVsZXRlIHRoaXMuX3hocil9fV0pLHR9KCk7ZnVuY3Rpb24gdShlLG4pe3ZhciBpLG89ZS51cmwsYT1lLmhlYWRlcixzPWUudGltZW91dCx1PXZvaWQgMD09PXM/X191bmlDb25maWcubmV0d29ya1RpbWVvdXQmJl9fdW5pQ29uZmlnLm5ldHdvcmtUaW1lb3V0LnJlcXVlc3R8fDZlNDpzLGw9dCxmPWwuaW52b2tlQ2FsbGJhY2tIYW5kbGVyLGQ9bmV3IFhNTEh0dHBSZXF1ZXN0LGg9bmV3IGMoZCk7cmV0dXJuIGQub3BlbigiR0VUIixvLCEwKSxPYmplY3Qua2V5cyhhKS5mb3JFYWNoKChmdW5jdGlvbih0KXtkLnNldFJlcXVlc3RIZWFkZXIodCxhW3RdKX0pKSxkLnJlc3BvbnNlVHlwZT0iYmxvYiIsZC5vbmxvYWQ9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoaSk7dmFyIHQsZT1kLnN0YXR1cyxhPXRoaXMucmVzcG9uc2Uscz1kLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LWRpc3Bvc2l0aW9uIik7aWYocyl7dmFyIGM9cy5tYXRjaCgvZmlsZW5hbWU9Ij8oXFMrKSI/XGIvKTtjJiYodD1jWzFdKX1hLm5hbWU9dHx8T2JqZWN0KHJbImMiXSkobyksZihuLHtlcnJNc2c6ImRvd25sb2FkRmlsZTpvayIsc3RhdHVzQ29kZTplLHRlbXBGaWxlUGF0aDpPYmplY3QoclsiYiJdKShhKX0pfSxkLm9uYWJvcnQ9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoaSksZihuLHtlcnJNc2c6ImRvd25sb2FkRmlsZTpmYWlsIGFib3J0In0pfSxkLm9uZXJyb3I9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoaSksZihuLHtlcnJNc2c6ImRvd25sb2FkRmlsZTpmYWlsIn0pfSxkLm9ucHJvZ3Jlc3M9ZnVuY3Rpb24odCl7aC5fY2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPXQubG9hZGVkLHI9dC50b3RhbCxpPU1hdGgucm91bmQobi9yKjEwMCk7ZSh7cHJvZ3Jlc3M6aSx0b3RhbEJ5dGVzV3JpdHRlbjpuLHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6cn0pfSkpfSxkLnNlbmQoKSxpPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZC5vbnByb2dyZXNzPWQub25sb2FkPWQub25hYm9ydD1kLm9uZXJyb3I9bnVsbCxoLmFib3J0KCksZihuLHtlcnJNc2c6ImRvd25sb2FkRmlsZTpmYWlsIHRpbWVvdXQifSl9KSx1KSxofX0uY2FsbCh0aGlzLG4oIjJjOWYiKSl9LCI0ZDVhIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXtuLmQoZSwicmVkaXJlY3RUbyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSksbi5kKGUsIm5hdmlnYXRlVG8iLChmdW5jdGlvbigpe3JldHVybiB1fSkpLG4uZChlLCJuYXZpZ2F0ZUJhY2siLChmdW5jdGlvbigpe3JldHVybiBsfSkpLG4uZChlLCJyZUxhdW5jaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKGUsInN3aXRjaFRhYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSksbi5kKGUsInByZWxvYWRQYWdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gaH0pKTt2YXIgcj1uKCIzOGNlIiksaT1uKCJjODc5Iiksbz10LGE9by5pbnZva2VDYWxsYmFja0hhbmRsZXI7ZnVuY3Rpb24gcyh0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj1lLnVybCxvPWUuZGVsdGEsYT1lLmV2ZW50cyxjPWUuZXhpc3RzLHU9ZS5hbmltYXRpb25UeXBlLGw9ZS5hbmltYXRpb25EdXJhdGlvbixmPWUuZnJvbSxkPXZvaWQgMD09PWY/Im5hdmlnYXRlQmFjayI6ZixoPWUuZGV0YWlsLHA9Z2V0QXBwKCkuJHJvdXRlcjtzd2l0Y2goZGVsZXRlIHAuJGV2ZW50Q2hhbm5lbCx0KXtjYXNlInJlZGlyZWN0VG8iOmlmKCJiYWNrIj09PWMpe3ZhciB2PU9iamVjdChyWyJhIl0pKG4pO2lmKC0xIT09dil7dmFyIGc9Z2V0Q3VycmVudFBhZ2VzKCkubGVuZ3RoLTEtdjtpZihnPjApcmV0dXJuIHMoIm5hdmlnYXRlQmFjayIse2RlbHRhOmd9KX19cC5yZXBsYWNlKHt0eXBlOnQscGF0aDpufSk7YnJlYWs7Y2FzZSJuYXZpZ2F0ZVRvIjpyZXR1cm4gcC4kZXZlbnRDaGFubmVsPU9iamVjdChpWyJhIl0pKGEpLHAucHVzaCh7dHlwZTp0LHBhdGg6bixhbmltYXRpb25UeXBlOnUsYW5pbWF0aW9uRHVyYXRpb246bH0pLHtlcnJNc2c6dCsiOm9rIixldmVudENoYW5uZWw6cC4kZXZlbnRDaGFubmVsfTtjYXNlIm5hdmlnYXRlQmFjayI6dmFyIG09ITAsYj1nZXRDdXJyZW50UGFnZXMoKTtpZihiLmxlbmd0aCl7dmFyIHk9YltiLmxlbmd0aC0xXTtPYmplY3QoclsiYyJdKSh5LiRvcHRpb25zLCJvbkJhY2tQcmVzcyIpJiYhMD09PXkuX19jYWxsX2hvb2soIm9uQmFja1ByZXNzIix7ZnJvbTpkfSkmJihtPSExKX1tJiYobz4xJiYocC5fJGRlbHRhPW8pLHAuZ28oLW8se2FuaW1hdGlvblR5cGU6dSxhbmltYXRpb25EdXJhdGlvbjpsfSkpO2JyZWFrO2Nhc2UicmVMYXVuY2giOnAucmVwbGFjZSh7dHlwZTp0LHBhdGg6bn0pO2JyZWFrO2Nhc2Uic3dpdGNoVGFiIjpwLnJlcGxhY2Uoe3R5cGU6dCxwYXRoOm4scGFyYW1zOntkZXRhaWw6aH19KTticmVha31yZXR1cm57ZXJyTXNnOnQrIjpvayJ9fWZ1bmN0aW9uIGModCl7cmV0dXJuIHMoInJlZGlyZWN0VG8iLHQpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIHMoIm5hdmlnYXRlVG8iLHQpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIHMoIm5hdmlnYXRlQmFjayIsdCl9ZnVuY3Rpb24gZih0KXtyZXR1cm4gcygicmVMYXVuY2giLHQpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIHMoInN3aXRjaFRhYiIsdCl9ZnVuY3Rpb24gaCh0LGUpe3ZhciBuPXQudXJsLHI9bi5zcGxpdCgiPyIpWzBdLnJlcGxhY2UoL1wvL2csIi0iKTtfX3VuaUNvbmZpZy5fX3dlYnBhY2tfY2h1bmtfbG9hZF9fKHIuc3Vic3RyKDEpKS50aGVuKChmdW5jdGlvbigpe2EoZSx7dXJsOm4sZXJyTXNnOiJwcmVsb2FkUGFnZTpvayJ9KX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7YShlLHt1cmw6bixlcnJNc2c6InByZWxvYWRQYWdlOmZhaWwgIit0fSl9KSl9fS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sIjRkYzYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNjU1ZCIpLGk9bi5uKHIpO2kuYX0sIjRlNDYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBjfSkpO3ZhciByPW4oIjk1MWMiKSxpPW4ubihyKSxvPW4oIjAzNzIiKSxhPW4oImI0MDUiKSxzPV9fdW5pQ29uZmlnLnRhYkJhcnx8e307X191bmlDb25maWcudGFiQmFyPWkuYS5vYnNlcnZhYmxlKE9iamVjdChhWyJkIl0pKE9iamVjdChvWyJmIl0pKHMpKSksT2JqZWN0KGFbImMiXSkoKGZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0KGFbImQiXSkoT2JqZWN0KG9bImYiXSkocykpO19fdW5pQ29uZmlnLnRhYkJhci5iYWNrZ3JvdW5kQ29sb3I9dC5iYWNrZ3JvdW5kQ29sb3IsX191bmlDb25maWcudGFiQmFyLmJvcmRlclN0eWxlPXQuYm9yZGVyU3R5bGUsX191bmlDb25maWcudGFiQmFyLmNvbG9yPXQuY29sb3IsX191bmlDb25maWcudGFiQmFyLnNlbGVjdGVkQ29sb3I9dC5zZWxlY3RlZENvbG9yLF9fdW5pQ29uZmlnLnRhYkJhci5ibHVyRWZmZWN0PXQuYmx1ckVmZmVjdCxfX3VuaUNvbmZpZy50YWJCYXIubWlkQnV0dG9uPXQubWlkQnV0dG9uLHQubGlzdCYmdC5saXN0Lmxlbmd0aCYmX191bmlDb25maWcudGFiQmFyLmxpc3QubGVuZ3RoJiZ0Lmxpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtfX3VuaUNvbmZpZy50YWJCYXIubGlzdFtlXS5pY29uUGF0aD10Lmljb25QYXRoLF9fdW5pQ29uZmlnLnRhYkJhci5saXN0W2VdLnNlbGVjdGVkSWNvblBhdGg9dC5zZWxlY3RlZEljb25QYXRofSkpfSkpO3ZhciBjPV9fdW5pQ29uZmlnLnRhYkJhcn0sIjRlZDQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQscil7dmFyIGk9bigiMzQwZCIpLG89bigiMWRhYSIpLGE9bigiMDM3MiIpLHM9bigiYjQzNSIpO2VbImEiXT17bmFtZToiU3lzdGVtQ2hvb3NlTG9jYXRpb24iLGZpbHRlcnM6e2Rpc3RhbmNlOmZ1bmN0aW9uKHQpe3JldHVybiB0PjEwMD8iIi5jb25jYXQodD4xZTM/KHQvMWUzKS50b0ZpeGVkKDEpKyJrIjp0LnRvRml4ZWQoMCksIm0gfCAiKTp0PjA/IjwxMDBtIHwgIjoiIn19LG1peGluczpbYVsiYyJdXSxkYXRhOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy4kcm91dGUucXVlcnksZT10LmxhdGl0dWRlLG49dC5sb25naXR1ZGU7cmV0dXJue2xhdGl0dWRlOmUsbG9uZ2l0dWRlOm4scGFnZVNpemU6MjAscGFnZUluZGV4OjEsaGFzTmV4dFBhZ2U6ITAsbmV4dFBhZ2U6bnVsbCxzZWxlY3RlZEluZGV4Oi0xLGxpc3Q6W10sa2V5d29yZDoiIixzZWFyY2hpbmc6ITEsbG9hZGluZzohMCxhZGNvZGU6IiIsbG9jYXRpb25TdHlsZTonYmFja2dyb3VuZC1pbWFnZTogdXJsKCInLmNvbmNhdChzWyJiIl0sJyIpJyl9fSxjb21wdXRlZDp7c2VsZWN0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saXN0W3RoaXMuc2VsZWN0ZWRJbmRleF19LGJvdW5kYXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWRjb2RlPyJyZWdpb24oIi5jb25jYXQodGhpcy5hZGNvZGUsIiwxLCIpLmNvbmNhdCh0aGlzLmxhdGl0dWRlLCIsIikuY29uY2F0KHRoaXMubG9uZ2l0dWRlLCIpIik6Im5lYXJieSgiLmNvbmNhdCh0aGlzLmxhdGl0dWRlLCIsIikuY29uY2F0KHRoaXMubG9uZ2l0dWRlLCIsNTAwMCkiKX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMubGF0aXR1ZGUmJnRoaXMubG9uZ2l0dWRlfHx0aGlzLm1vdmVUb0xvY2F0aW9uKCksdGhpcy5zZWFyY2g9T2JqZWN0KGlbImQiXSkoKGZ1bmN0aW9uKCl7dC5yZXNldCgpLHQua2V5d29yZCYmdC5nZXRMaXN0KCl9KSwxZTMpLHRoaXMuJHdhdGNoKCJzZWFyY2hpbmciLChmdW5jdGlvbihlKXt0LnJlc2V0KCksZXx8dC5nZXRMaXN0KCl9KSl9LG1ldGhvZHM6e2Nob29zZTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQmJih0LnB1Ymxpc2hIYW5kbGVyKCJvbkNob29zZUxvY2F0aW9uIixPYmplY3QuYXNzaWduKHt9LHRoaXMuc2VsZWN0ZWQpKSxnZXRBcHAoKS4kcm91dGVyLmJhY2soKSl9LGJhY2s6ZnVuY3Rpb24oKXt0LnB1Ymxpc2hIYW5kbGVyKCJvbkNob29zZUxvY2F0aW9uIixudWxsKSxnZXRBcHAoKS4kcm91dGVyLmJhY2soKX0sbW92ZVRvTG9jYXRpb246ZnVuY3Rpb24oKXt1bmkuZ2V0TG9jYXRpb24oe3R5cGU6ImdjajAyIixzdWNjZXNzOnRoaXMubW92ZS5iaW5kKHRoaXMpLGZhaWw6ZnVuY3Rpb24oKXt9fSl9LG9uUmVnaW9uQ2hhbmdlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZGV0YWlsLmNlbnRlckxvY2F0aW9uO2UmJnRoaXMubW92ZShlKX0scHVzaERhdGE6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UubGlzdC5wdXNoKHtuYW1lOnQudGl0bGV8fHQubmFtZSxhZGRyZXNzOnQuYWRkcmVzcyxkaXN0YW5jZTp0Ll9kaXN0YW5jZXx8dC5kaXN0YW5jZSxsYXRpdHVkZTp0LmxvY2F0aW9uLmxhdCxsb25naXR1ZGU6dC5sb2NhdGlvbi5sbmd9KX0pKX0sZ2V0TGlzdDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5sb2FkaW5nPSEwO3ZhciBlPU9iamVjdChzWyJlIl0pKCk7aWYoZS50eXBlPT09c1siZCJdLkdPT0dMRSl7aWYodGhpcy5wYWdlSW5kZXg+MSYmdGhpcy5uZXh0UGFnZSlyZXR1cm4gdm9pZCB0aGlzLm5leHRQYWdlKCk7dmFyIG49bmV3IHdpbmRvdy5nb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7blt0aGlzLnNlYXJjaGluZz8idGV4dFNlYXJjaCI6Im5lYXJieVNlYXJjaCJdKHtsb2NhdGlvbjp7bGF0OnRoaXMubGF0aXR1ZGUsbG5nOnRoaXMubG9uZ2l0dWRlfSxxdWVyeTp0aGlzLmtleXdvcmQscmFkaXVzOjVlM30sKGZ1bmN0aW9uKGUsbixyKXt0LmxvYWRpbmc9ITEsZSYmZS5sZW5ndGgmJmUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5saXN0LnB1c2goe25hbWU6ZS5uYW1lfHwiIixhZGRyZXNzOmUudmljaW5pdHl8fGUuZm9ybWF0dGVkX2FkZHJlc3N8fCIiLGRpc3RhbmNlOjAsbGF0aXR1ZGU6ZS5nZW9tZXRyeS5sb2NhdGlvbi5sYXQoKSxsb25naXR1ZGU6ZS5nZW9tZXRyeS5sb2NhdGlvbi5sbmcoKX0pfSkpLHImJihyLmhhc05leHRQYWdlP3QubmV4dFBhZ2U9ZnVuY3Rpb24oKXtyLm5leHRQYWdlKCl9OnQuaGFzTmV4dFBhZ2U9ITEpfSkpfWVsc2UgaWYoZS50eXBlPT09c1siZCJdLlFRKXt2YXIgaT10aGlzLnNlYXJjaGluZz8iaHR0cHM6Ly9hcGlzLm1hcC5xcS5jb20vd3MvcGxhY2UvdjEvc2VhcmNoP291dHB1dD1qc29ucCZrZXk9Ii5jb25jYXQoZS5rZXksIiZib3VuZGFyeT0iKS5jb25jYXQodGhpcy5ib3VuZGFyeSwiJmtleXdvcmQ9IikuY29uY2F0KHRoaXMua2V5d29yZCwiJnBhZ2Vfc2l6ZT0iKS5jb25jYXQodGhpcy5wYWdlU2l6ZSwiJnBhZ2VfaW5kZXg9IikuY29uY2F0KHRoaXMucGFnZUluZGV4KToiaHR0cHM6Ly9hcGlzLm1hcC5xcS5jb20vd3MvZ2VvY29kZXIvdjEvP291dHB1dD1qc29ucCZrZXk9Ii5jb25jYXQoZS5rZXksIiZsb2NhdGlvbj0iKS5jb25jYXQodGhpcy5sYXRpdHVkZSwiLCIpLmNvbmNhdCh0aGlzLmxvbmdpdHVkZSwiJmdldF9wb2k9MSZwb2lfb3B0aW9ucz1wYWdlX3NpemU9IikuY29uY2F0KHRoaXMucGFnZVNpemUsIjtwYWdlX2luZGV4PSIpLmNvbmNhdCh0aGlzLnBhZ2VJbmRleCk7T2JqZWN0KG9bImEiXSkoaSx7Y2FsbGJhY2s6ImNhbGxiYWNrIn0sKGZ1bmN0aW9uKGUpe2lmKHQubG9hZGluZz0hMSx0LnNlYXJjaGluZyYmImRhdGEiaW4gZSYmZS5kYXRhLmxlbmd0aCl0LnB1c2hEYXRhKGUuZGF0YSk7ZWxzZSBpZigicmVzdWx0ImluIGUpe3ZhciBuPWUucmVzdWx0O3QuYWRjb2RlPW4uYWRfaW5mbz9uLmFkX2luZm8uYWRjb2RlOiIiLG4ucG9pcyYmdC5wdXNoRGF0YShuLnBvaXMpLHQubGlzdC5sZW5ndGg9PT10LnBhZ2VTaXplKnQucGFnZUluZGV4JiYodC5oYXNOZXh0UGFnZT0hMSl9fSksKGZ1bmN0aW9uKCl7dC5sb2FkaW5nPSExfSkpfWVsc2UgaWYoZS50eXBlPT09c1siZCJdLkFNQVApe3ZhciBhPXRoaXM7d2luZG93LkFNYXAucGx1Z2luKCJBTWFwLlBsYWNlU2VhcmNoIiwoZnVuY3Rpb24oKXtpZihhLmxvbmdpdHVkZSYmYS5sYXRpdHVkZSl7dmFyIHQ9bmV3IHdpbmRvdy5BTWFwLlBsYWNlU2VhcmNoKHtjaXR5OiLlhajlm70iLHBhZ2VTaXplOjEwLHBhZ2VJbmRleDphLnBhZ2VJbmRleH0pLGU9YS5zZWFyY2hpbmc/YS5rZXl3b3JkOiIiLG49YS5zZWFyY2hpbmc/NWU0OjVlMzt0LnNlYXJjaE5lYXJCeShlLFthLmxvbmdpdHVkZSxhLmxhdGl0dWRlXSxuLChmdW5jdGlvbih0LGUpeyJlcnJvciI9PT10P3IuZXJyb3IoZSk6Im5vX2RhdGEiPT09dD9hLmhhc05leHRQYWdlPSExOmEucHVzaERhdGEoZS5wb2lMaXN0LnBvaXMpfSkpfWEubG9hZGluZz0hMX0pKX19LGxvYWRNb3JlOmZ1bmN0aW9uKCl7IXRoaXMubG9hZGluZyYmdGhpcy5oYXNOZXh0UGFnZSYmKHRoaXMucGFnZUluZGV4KyssdGhpcy5nZXRMaXN0KCkpfSxyZXNldDpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWRJbmRleD0tMSx0aGlzLnBhZ2VJbmRleD0xLHRoaXMuaGFzTmV4dFBhZ2U9ITAsdGhpcy5uZXh0UGFnZT1udWxsLHRoaXMubGlzdD1bXX0sbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10LmxhdGl0dWRlLG49dC5sb25naXR1ZGU7dGhpcy5sYXRpdHVkZT1lLHRoaXMubG9uZ2l0dWRlPW4sdGhpcy5zZWFyY2hpbmd8fCh0aGlzLnJlc2V0KCksdGhpcy5nZXRMaXN0KCkpfSxpbnB1dDpmdW5jdGlvbigpe3RoaXMuc2VhcmNoKCl9fX19KS5jYWxsKHRoaXMsbigiMzFkMiIpLG4oIjQxOGIiKVsiZGVmYXVsdCJdKX0sIjRlZjUiOmZ1bmN0aW9uKHQpe3QuZXhwb3J0cz1KU09OLnBhcnNlKCd7InVuaS5hcHAucXVpdCI6IuWGjeaMieS4gOasoemAgOWHuuaHieeUqCIsInVuaS5hc3luYy5lcnJvciI6IumAo+aOpeacjeWLmeWZqOi2heaZgu+8jOm7nuaTiuWxj+W5lemHjeippiIsInVuaS5zaG93QWN0aW9uU2hlZXQuY2FuY2VsIjoi5Y+W5raIIiwidW5pLnNob3dUb2FzdC51bnBhaXJlZCI6Iuiri+azqOaEjyBzaG93VG9hc3Qg6IiHIGhpZGVUb2FzdCDlv4XpoIjphY3lsI3kvb/nlKgiLCJ1bmkuc2hvd0xvYWRpbmcudW5wYWlyZWQiOiLoq4vms6jmhI8gc2hvd0xvYWRpbmcg6IiHIGhpZGVMb2FkaW5nIOW/hemgiOmFjeWwjeS9v+eUqCIsInVuaS5zaG93TW9kYWwuY2FuY2VsIjoi5Y+W5raIIiwidW5pLnNob3dNb2RhbC5jb25maXJtIjoi56K65a6aIiwidW5pLmNob29zZUltYWdlLmNhbmNlbCI6IuWPlua2iCIsInVuaS5jaG9vc2VJbWFnZS5zb3VyY2VUeXBlLmFsYnVtIjoi5b6e55u45YaK6YG45pOHIiwidW5pLmNob29zZUltYWdlLnNvdXJjZVR5cGUuY2FtZXJhIjoi5ouN5pSdIiwidW5pLmNob29zZVZpZGVvLmNhbmNlbCI6IuWPlua2iCIsInVuaS5jaG9vc2VWaWRlby5zb3VyY2VUeXBlLmFsYnVtIjoi5b6e55u45YaK6YG45pOHIiwidW5pLmNob29zZVZpZGVvLnNvdXJjZVR5cGUuY2FtZXJhIjoi5ouN5pSdIiwidW5pLmNob29zZUZpbGUubm90VXNlckFjdGl2YXRpb24iOiLmlofku7bpgbjmk4flmajlsI3oqbHmoYblj6rog73lnKjnlLHnlKjmiLbmv4DmtLvmmYLpoa/npLoiLCJ1bmkucHJldmlld0ltYWdlLmNhbmNlbCI6IuWPlua2iCIsInVuaS5wcmV2aWV3SW1hZ2UuYnV0dG9uLnNhdmUiOiLkv53lrZjlnJblg48iLCJ1bmkucHJldmlld0ltYWdlLnNhdmUuc3VjY2VzcyI6IuS/neWtmOWcluWDj+WIsOebuOWGiuaIkOWKnyIsInVuaS5wcmV2aWV3SW1hZ2Uuc2F2ZS5mYWlsIjoi5L+d5a2Y5ZyW5YOP5Yiw55u45YaK5aSx5pWXIiwidW5pLnNldENsaXBib2FyZERhdGEuc3VjY2VzcyI6IuWFp+WuueW3suW+qeWItiIsInVuaS5zY2FuQ29kZS50aXRsZSI6IuaOg+eivCIsInVuaS5zY2FuQ29kZS5hbGJ1bSI6IuebuOWGiiIsInVuaS5zY2FuQ29kZS5mYWlsIjoi6K2Y5Yil5aSx5pWXIiwidW5pLnNjYW5Db2RlLmZsYXNoLm9uIjoi6LyV6Ke454Wn5LquIiwidW5pLnNjYW5Db2RlLmZsYXNoLm9mZiI6Iui8leinuOmXnOmWiSIsInVuaS5zdGFydFNvdGVyQXV0aGVudGljYXRpb24uYXV0aENvbnRlbnQiOiLmjIfntIvorZjliKXkuK0uLi4iLCJ1bmkuc3RhcnRTb3RlckF1dGhlbnRpY2F0aW9uLndhaXRpbmdDb250ZW50Ijoi54Sh5rOV6K2Y5YilIiwidW5pLnBpY2tlci5kb25lIjoi5a6M5oiQIiwidW5pLnBpY2tlci5jYW5jZWwiOiLlj5bmtogiLCJ1bmkudmlkZW8uZGFubXUiOiLlvYjluZUiLCJ1bmkudmlkZW8udm9sdW1lIjoi6Z+z6YePIiwidW5pLmJ1dHRvbi5mZWVkYmFjay50aXRsZSI6IuWVj+mhjOWPjemliyIsInVuaS5idXR0b24uZmVlZGJhY2suc2VuZCI6IueZvOmAgSIsInVuaS5jaG9vc2VMb2NhdGlvbi5zZWFyY2giOiLmkJzntKLlnLDpu54iLCJ1bmkuY2hvb3NlTG9jYXRpb24uY2FuY2VsIjoi5Y+W5raIIn0nKX0sIjRmMmUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJ1bmktY292ZXItdmlldyIsdC5fZyh7YXR0cnM6eyJzY3JvbGwtdG9wIjp0LnNjcm9sbFRvcH19LHQuJGxpc3RlbmVycyksW24oImRpdiIse3JlZjoiY29udGVudCIsc3RhdGljQ2xhc3M6InVuaS1jb3Zlci12aWV3In0sW3QuX3QoImRlZmF1bHQiKV0sMildKX0saT1bXSxvPXtuYW1lOiJDb3ZlclZpZXciLHByb3BzOntzY3JvbGxUb3A6e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6MH19LHdhdGNoOntzY3JvbGxUb3A6ZnVuY3Rpb24odCl7dGhpcy5zZXRTY3JvbGxUb3AodCl9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dGhpcy5zZXRTY3JvbGxUb3AodGhpcy5zY3JvbGxUb3ApfSxtZXRob2RzOntzZXRTY3JvbGxUb3A6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy4kcmVmcy5jb250ZW50OyJzY3JvbGwiPT09Z2V0Q29tcHV0ZWRTdHlsZShlKS5vdmVyZmxvd1kmJihlLnNjcm9sbFRvcD10aGlzLl91cHgycHhOdW0odCkpfSxfdXB4MnB4TnVtOmZ1bmN0aW9uKHQpe3JldHVybi9cZCtbdXJdcHgkL2kudGVzdCh0KSYmdC5yZXBsYWNlKC9cZCtbdXJdcHgkL2ksKGZ1bmN0aW9uKHQpe3JldHVybiB1bmkudXB4MnB4KHBhcnNlRmxvYXQodCkpfSkpLHBhcnNlRmxvYXQodCl8fDB9fX0sYT1vLHM9KG4oImNhNTQiKSxuKCI4ODQ0IikpLGM9T2JqZWN0KHNbImEiXSkoYSxyLGksITEsbnVsbCxudWxsLG51bGwpO2VbImRlZmF1bHQiXT1jLmV4cG9ydHN9LCI0ZmNiIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXt2YXIgcj1uKCIzNDBkIik7ZVsiZGVmYXVsdCJdPXtkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3Nob3dNb2RhbDp7dmlzaWJsZTohMX19fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0Lm9uKCJvblNob3dNb2RhbCIsKGZ1bmN0aW9uKHQsbil7ZS5zaG93TW9kYWw9dCxlLm9uTW9kYWxDbG9zZUNhbGxiYWNrPW59KSksdC5vbigib25IaWRlUG9wdXAiLChmdW5jdGlvbih0KXtlLnNob3dNb2RhbC52aXNpYmxlPSExfSkpfSxtZXRob2RzOntfb25Nb2RhbENsb3NlOmZ1bmN0aW9uKHQpe3RoaXMuc2hvd01vZGFsLnZpc2libGU9ITEsT2JqZWN0KHJbImsiXSkodGhpcy5vbk1vZGFsQ2xvc2VDYWxsYmFjaykmJnRoaXMub25Nb2RhbENsb3NlQ2FsbGJhY2sodCl9fX19LmNhbGwodGhpcyxuKCIyYzlmIikpfSwiNTA4ZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSk7dmFyIHI9bigiY2ZmOSIpLGk9bigiNjU2NCIpO2Z1bmN0aW9uIG8odCxlKXt2YXIgbj10Lm5hbWUscj10LmFyZzsicG9zdE1lc3NhZ2UiPT09bnx8dW5pW25dKHIpfWZ1bmN0aW9uIGEodCxlKXt2YXIgbj1lLmdldEFwcCxhPWUuZ2V0Q3VycmVudFBhZ2VzO2Z1bmN0aW9uIHModCl7T2JqZWN0KHJbImEiXSkobigpLCJvbkVycm9yIix0KX1mdW5jdGlvbiBjKHQpe09iamVjdChyWyJhIl0pKG4oKSwib25QYWdlTm90Rm91bmQiLHQpfWZ1bmN0aW9uIHUodCxlKXt2YXIgbj1hKCkuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuJHBhZ2UuaWQ9PT1lfSkpO24mJk9iamVjdChyWyJiIl0pKG4sIm9uUmVzaXplIix0KX1mdW5jdGlvbiBsKHQsZSl7dmFyIG49YSgpLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LiRwYWdlLmlkPT09ZX0pKTtuJiYoT2JqZWN0KGlbInNldFB1bGxEb3duUmVmcmVzaFBhZ2VJZCJdKShlKSxPYmplY3QoclsiYiJdKShuLCJvblB1bGxEb3duUmVmcmVzaCIpKX1mdW5jdGlvbiBmKHQsZSl7dmFyIG49YSgpO24ubGVuZ3RoJiZPYmplY3QoclsiYiJdKShuW24ubGVuZ3RoLTFdLHQsZSl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7Zih0LGUpfX1mdW5jdGlvbiBoKCl7T2JqZWN0KHJbImEiXSkobigpLCJvbkhpZGUiKSxmKCJvbkhpZGUiKX1mdW5jdGlvbiBwKHQpe09iamVjdChyWyJhIl0pKG4oKSwib25TaG93Iix0KTt2YXIgZT1hKCk7MCE9PWUubGVuZ3RoJiZmKCJvblNob3ciKX10KCJvbkVycm9yIixzKSx0KCJvblBhZ2VOb3RGb3VuZCIsYyksdCgib25BcHBFbnRlckJhY2tncm91bmQiLGgpLHQoIm9uQXBwRW50ZXJGb3JlZ3JvdW5kIixwKSx0KCJvblJlc2l6ZSIsdSksdCgib25QdWxsRG93blJlZnJlc2giLGwpLHQoIm9uVGFiSXRlbVRhcCIsZCgib25UYWJJdGVtVGFwIikpLHQoIm9uTmF2aWdhdGlvbkJhckJ1dHRvblRhcCIsZCgib25OYXZpZ2F0aW9uQmFyQnV0dG9uVGFwIikpLHQoIm9uTmF2aWdhdGlvbkJhclNlYXJjaElucHV0Q2hhbmdlZCIsZCgib25OYXZpZ2F0aW9uQmFyU2VhcmNoSW5wdXRDaGFuZ2VkIikpLHQoIm9uTmF2aWdhdGlvbkJhclNlYXJjaElucHV0Q29uZmlybWVkIixkKCJvbk5hdmlnYXRpb25CYXJTZWFyY2hJbnB1dENvbmZpcm1lZCIpKSx0KCJvbk5hdmlnYXRpb25CYXJTZWFyY2hJbnB1dENsaWNrZWQiLGQoIm9uTmF2aWdhdGlvbkJhclNlYXJjaElucHV0Q2xpY2tlZCIpKSx0KCJvbk5hdmlnYXRpb25CYXJTZWFyY2hJbnB1dEZvY3VzQ2hhbmdlZCIsZCgib25OYXZpZ2F0aW9uQmFyU2VhcmNoSW5wdXRGb2N1c0NoYW5nZWQiKSksdCgib25XZWJJbnZva2VBcHBTZXJ2aWNlIixvKX19LCI1MGQzIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKTt2YXIgcj1uKCI5NTFjIiksaT1uLm4ociksbz1uKCI0NzM4IiksYT1uKCJjY2UyIikscz17bWV0aG9kczp7JGdldFJlYWxQYXRoOmZ1bmN0aW9uKHQpe3JldHVybiB0P09iamVjdChvWyJhIl0pKHQpOnR9LCR0cmlnZ2VyOmZ1bmN0aW9uKHQsZSxuKXt0aGlzLiRlbWl0KHQsYVsiYiJdLmNhbGwodGhpcyx0LGUsbix0aGlzLiRlbCx0aGlzLiRlbCkpfX19O2Z1bmN0aW9uIGModCl7cmV0dXJuIGQodCl8fGYodCl8fGwodCl8fHUoKX1mdW5jdGlvbiB1KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9ZnVuY3Rpb24gbCh0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT09dHlwZW9mIHQpcmV0dXJuIGgodCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20obik6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9oKHQsZSk6dm9pZCAwfX1mdW5jdGlvbiBmKHQpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSlyZXR1cm4gQXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBkKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGgodCl9ZnVuY3Rpb24gaCh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIHAodCl7cmV0dXJuL14tP1xkK1t1cl1weCQvaS50ZXN0KHQpP3QucmVwbGFjZSgvKF4tP1xkKylbdXJdcHgkL2ksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIiIuY29uY2F0KHVuaS51cHgycHgocGFyc2VGbG9hdChlKSksInB4Iil9KSk6L14tP1tcZFwuXSskLy50ZXN0KHQpPyIiLmNvbmNhdCh0LCJweCIpOnR8fCIifWZ1bmN0aW9uIHYodCl7cmV0dXJuIHQucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24odCl7cmV0dXJuIi0iLmNvbmNhdCh0LnRvTG93ZXJDYXNlKCkpfSkpLnJlcGxhY2UoIndlYmtpdCIsIi13ZWJraXQiKX1mdW5jdGlvbiBnKHQpe3ZhciBlPVsibWF0cml4IiwibWF0cml4M2QiLCJzY2FsZSIsInNjYWxlM2QiLCJyb3RhdGUzZCIsInNrZXciLCJ0cmFuc2xhdGUiLCJ0cmFuc2xhdGUzZCJdLG49WyJzY2FsZVgiLCJzY2FsZVkiLCJzY2FsZVoiLCJyb3RhdGUiLCJyb3RhdGVYIiwicm90YXRlWSIsInJvdGF0ZVoiLCJza2V3WCIsInNrZXdZIiwidHJhbnNsYXRlWCIsInRyYW5zbGF0ZVkiLCJ0cmFuc2xhdGVaIl0scj1bIm9wYWNpdHkiLCJiYWNrZ3JvdW5kLWNvbG9yIl0saT1bIndpZHRoIiwiaGVpZ2h0IiwibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIl0sbz10LmFuaW1hdGVzLGE9dC5vcHRpb24scz1hLnRyYW5zaXRpb24sdT17fSxsPVtdO3JldHVybiBvLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBvPXQudHlwZSxhPWModC5hcmdzKTtpZihlLmNvbmNhdChuKS5pbmNsdWRlcyhvKSlvLnN0YXJ0c1dpdGgoInJvdGF0ZSIpfHxvLnN0YXJ0c1dpdGgoInNrZXciKT9hPWEubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0KSsiZGVnIn0pKTpvLnN0YXJ0c1dpdGgoInRyYW5zbGF0ZSIpJiYoYT1hLm1hcChwKSksbi5pbmRleE9mKG8pPj0wJiYoYS5sZW5ndGg9MSksbC5wdXNoKCIiLmNvbmNhdChvLCIoIikuY29uY2F0KGEuam9pbigiLCIpLCIpIikpO2Vsc2UgaWYoci5jb25jYXQoaSkuaW5jbHVkZXMoYVswXSkpe289YVswXTt2YXIgcz1hWzFdO3Vbb109aS5pbmNsdWRlcyhvKT9wKHMpOnN9fSkpLHUudHJhbnNmb3JtPXUud2Via2l0VHJhbnNmb3JtPWwuam9pbigiICIpLHUudHJhbnNpdGlvbj11LndlYmtpdFRyYW5zaXRpb249T2JqZWN0LmtleXModSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4iIi5jb25jYXQodih0KSwiICIpLmNvbmNhdChzLmR1cmF0aW9uLCJtcyAiKS5jb25jYXQocy50aW1pbmdGdW5jdGlvbiwiICIpLmNvbmNhdChzLmRlbGF5LCJtcyIpfSkpLmpvaW4oIiwiKSx1LnRyYW5zZm9ybU9yaWdpbj11LndlYmtpdFRyYW5zZm9ybU9yaWdpbj1hLnRyYW5zZm9ybU9yaWdpbix1fWZ1bmN0aW9uIG0odCl7dmFyIGU9dC5hbmltYXRpb247aWYoZSYmZS5hY3Rpb25zJiZlLmFjdGlvbnMubGVuZ3RoKXt2YXIgbj0wLHI9ZS5hY3Rpb25zLGk9ZS5hY3Rpb25zLmxlbmd0aDtzZXRUaW1lb3V0KChmdW5jdGlvbigpe28oKX0pLDApfWZ1bmN0aW9uIG8oKXt2YXIgZT1yW25dLGE9ZS5vcHRpb24udHJhbnNpdGlvbixzPWcoZSk7T2JqZWN0LmtleXMocykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC4kZWwuc3R5bGVbZV09c1tlXX0pKSxuKz0xLG48aSYmc2V0VGltZW91dChvLGEuZHVyYXRpb24rYS5kZWxheSl9fXZhciBiPXtwcm9wczpbImFuaW1hdGlvbiJdLHdhdGNoOnthbmltYXRpb246ZnVuY3Rpb24oKXttKHRoaXMpfX0sbW91bnRlZDpmdW5jdGlvbigpe20odGhpcyl9fSx5PVtuKCJhMWQ3IiksbigiNzVlMiIpXTt5LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5rZXlzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49dChlKSxyPW4uZGVmYXVsdHx8bjtyLm1peGlucz1yLm1peGlucz9bXS5jb25jYXQocyxyLm1peGlucyk6W3NdLHIuZnVuY3Rpb25hbHx8ci5taXhpbnMucHVzaChiKSxyLm5hbWU9IlZVbmkiK3IubmFtZSxyLmlzUmVzZXJ2ZWQ9ITAsaS5hLmNvbXBvbmVudChyLm5hbWUscil9KSl9KSl9LCI1MGVjIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXt2YXIgcj1uKCJhNTEzIiksaT1uLm4ociksbz1uKCIzOGNlIiksYT1uKCIzZDFlIikscz1uKCI3MWJlIiksYz1uKCI1OTI4IiksdT1uKCI5N2MzIiksbD1uKCI5N2FmIiksZj1uKCIzNDBkIik7ZnVuY3Rpb24gZCh0KXt2YXIgZT0wO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3QubWV0YS5pZCYmZSsrfSkpLGV9ZnVuY3Rpb24gaCgpe3ZhciB0PXdpbmRvdy5sb2NhdGlvbi5ocmVmLGU9dC5pbmRleE9mKCIjIik7cmV0dXJuLTE9PT1lPyIiOmRlY29kZVVSSSh0LnNsaWNlKGUrMSkpfWZ1bmN0aW9uIHAoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06Ii8iLGU9ZGVjb2RlVVJJKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSksbj13aW5kb3cubG9jYXRpb24uc2VhcmNoLHI9d2luZG93LmxvY2F0aW9uLmhhc2g7cmV0dXJuIi8iPT09dFt0Lmxlbmd0aC0xXSYmZT09PXQuc3Vic3RyaW5nKDAsdC5sZW5ndGgtMSkmJihlPXQsd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCIiLHQrbityKSksdCYmMD09PWUuaW5kZXhPZih0KSYmKGU9ZS5zbGljZSh0Lmxlbmd0aCkpLChlfHwiLyIpK24rcn1lWyJkZWZhdWx0Il09e2luc3RhbGw6ZnVuY3Rpb24oZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LHI9bi5yb3V0ZXM7ZS5jb25maWcuZGV2dG9vbHMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdyYmLTEhPT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImhidWlsZGVyeCIpJiYoZS5jb25maWcuZGV2dG9vbHM9ITEpLE9iamVjdCh1WyJhIl0pKGUpLE9iamVjdChjWyJhIl0pKGUpLE9iamVjdChmWyJ3Il0pKGUpLCJ1bmRlZmluZWQiIT09dHlwZW9mIF9fVU5JX1JPVVRFUl9CQVNFX18mJihfX3VuaUNvbmZpZy5yb3V0ZXIuYmFzZT1fX1VOSV9ST1VURVJfQkFTRV9fKTt2YXIgdj1kKHIpLGc9bmV3IGkuYSh7aWQ6dixtb2RlOl9fdW5pQ29uZmlnLnJvdXRlci5tb2RlLGJhc2U6X191bmlDb25maWcucm91dGVyLmJhc2Uscm91dGVzOnIsc2Nyb2xsQmVoYXZpb3I6ZnVuY3Rpb24odCxlLG4pe2lmKG4pcmV0dXJuIG47aWYodCYmZSYmdC5tZXRhLmlzVGFiQmFyJiZlLm1ldGEuaXNUYWJCYXIpe3ZhciByPU9iamVjdChsWyJiIl0pKHQucGFyYW1zLl9faWRfXyk7aWYocilyZXR1cm4gcn1yZXR1cm57eDowLHk6MH19fSksbT1bXSxiPWcubWF0Y2goImhpc3RvcnkiPT09X191bmlDb25maWcucm91dGVyLm1vZGU/cChfX3VuaUNvbmZpZy5yb3V0ZXIuYmFzZSk6aCgpKTtpZihiLm1ldGEubmFtZSYmKGIubWV0YS5pZD9tLnB1c2goYi5tZXRhLm5hbWUrIi0iK2IubWV0YS5pZCk6bS5wdXNoKGIubWV0YS5uYW1lKyItIisodisxKSkpLGIubWV0YSYmYi5tZXRhLm5hbWUmJihkb2N1bWVudC5ib2R5LmNsYXNzTmFtZT0idW5pLWJvZHkgIitiLm1ldGEubmFtZSxiLm1ldGEuaXNOVnVlKSl7dmFyIHk9Im52dWUtZGlyLSIrX191bmlDb25maWcubnZ1ZVsiZmxleC1kaXJlY3Rpb24iXTtkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgibnZ1ZSIsIiIpLGRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKHksIiIpfWUubWl4aW4oe2JlZm9yZUNyZWF0ZTpmdW5jdGlvbigpe3ZhciBuPXRoaXMuJG9wdGlvbnM7aWYoImFwcCI9PT1uLm1wVHlwZSl7bi5kYXRhPWZ1bmN0aW9uKCl7cmV0dXJue2tlZXBBbGl2ZUluY2x1ZGU6bX19O3ZhciBpPU9iamVjdChhWyJhIl0pKGUscixiKTtPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtuW3RdPW5bdF0/W10uY29uY2F0KGlbdF0sblt0XSk6W2lbdF1dfSkpLG4ucm91dGVyPWcsQXJyYXkuaXNBcnJheShuLm9uRXJyb3IpJiYwIT09bi5vbkVycm9yLmxlbmd0aHx8KG4ub25FcnJvcj1bZnVuY3Rpb24oZSl7dC5lcnJvcihlKX1dKX1lbHNlIGlmKE9iamVjdChvWyJkIl0pKHRoaXMpKXt2YXIgYz1PYmplY3Qoc1siYSJdKSgpO09iamVjdC5rZXlzKGMpLmZvckVhY2goKGZ1bmN0aW9uKHQpe24ubXBPcHRpb25zP25bdF09blt0XT9bXS5jb25jYXQoblt0XSxjW3RdKTpbY1t0XV06blt0XT1uW3RdP1tdLmNvbmNhdChjW3RdLG5bdF0pOltjW3RdXX0pKX1lbHNlIHRoaXMuJHBhcmVudCYmdGhpcy4kcGFyZW50Ll9fcGFnZV9fJiYodGhpcy5fX3BhZ2VfXz10aGlzLiRwYXJlbnQuX19wYWdlX18pfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiJHBhZ2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3BhZ2VfX319KSxlLnByb3RvdHlwZS5jcmVhdGVTZWxlY3RvclF1ZXJ5PWZ1bmN0aW9uKCl7cmV0dXJuIHVuaS5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuaW4odGhpcyl9LGUucHJvdG90eXBlLmNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyPWZ1bmN0aW9uKHQpe3JldHVybiB1bmkuY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIodGhpcyx0KX0sZS5wcm90b3R5cGUuY3JlYXRlTWVkaWFRdWVyeU9ic2VydmVyPWZ1bmN0aW9uKHQpe3JldHVybiB1bmkuY3JlYXRlTWVkaWFRdWVyeU9ic2VydmVyKHRoaXMsdCl9LGUudXNlKGkuYSl9fX0uY2FsbCh0aGlzLG4oIjQxOGIiKVsiZGVmYXVsdCJdKX0sIjUxZTUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJzZXRDbGlwYm9hcmREYXRhIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKTt2YXIgcj1uKCIwMzcyIiksaT17ZGF0YTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LHNob3dUb2FzdDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGJlZm9yZVN1Y2Nlc3M6ZnVuY3Rpb24odCxlKXtpZihlLnNob3dUb2FzdCl7dmFyIG49T2JqZWN0KHJbImciXSkoInVuaS5zZXRDbGlwYm9hcmREYXRhLnN1Y2Nlc3MiKTtuJiZ1bmkuc2hvd1RvYXN0KHt0aXRsZTpuLGljb246InN1Y2Nlc3MiLG1hc2s6ITEsc3R5bGU6e3dpZHRoOnZvaWQgMH19KX19fX0sIjUyNmMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYjkxZCIpLGk9bi5uKHIpO2kuYX0sIjUzZjkiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJiYXNlNjRUb0FycmF5QnVmZmVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKSxuLmQoZSwiYXJyYXlCdWZmZXJUb0Jhc2U2NCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSk7dmFyIHI9W3tuYW1lOiJiYXNlNjQiLHR5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfV0saT1be25hbWU6ImFycmF5QnVmZmVyIix0eXBlOltBcnJheUJ1ZmZlcixVaW50OEFycmF5XSxyZXF1aXJlZDohMH1dfSwiNTQxYyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZnVuY3Rpb24odCl7ZnVuY3Rpb24gcihlLG4scixpKXt2YXIgbz1uLiRwYWdlLmlkO3QucHVibGlzaEhhbmRsZXIobysiLW1hcC0iK2Use21hcElkOmUsdHlwZTpyLGRhdGE6aX0sbyl9bi5kKGUsIm9wZXJhdGVNYXBQbGF5ZXIiLChmdW5jdGlvbigpe3JldHVybiByfSkpfS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sNTUwNTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImM5M2YiKSxpPW4ubihyKTtpLmF9LDU1NTY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI2OGQyIiksaT1uLm4ocik7aS5hfSwiNTZhZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKHQpe3JldHVybiBpPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXIoU3ltYm9sLml0ZXJhdG9yKT9mdW5jdGlvbih0KXtyZXR1cm4gcih0KX06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjpyKHQpfSxpKHQpfW4ucihlKSxuLmQoZSwic2V0U3RvcmFnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSksbi5kKGUsInNldFN0b3JhZ2VTeW5jIiwoZnVuY3Rpb24oKXtyZXR1cm4gY30pKSxuLmQoZSwiZ2V0U3RvcmFnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSksbi5kKGUsImdldFN0b3JhZ2VTeW5jIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKSxuLmQoZSwicmVtb3ZlU3RvcmFnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKGUsInJlbW92ZVN0b3JhZ2VTeW5jIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxuLmQoZSwiY2xlYXJTdG9yYWdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gaH0pKSxuLmQoZSwiY2xlYXJTdG9yYWdlU3luYyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHB9KSksbi5kKGUsImdldFN0b3JhZ2VJbmZvIiwoZnVuY3Rpb24oKXtyZXR1cm4gdn0pKSxuLmQoZSwiZ2V0U3RvcmFnZUluZm9TeW5jIiwoZnVuY3Rpb24oKXtyZXR1cm4gZ30pKTt2YXIgbz0idW5pLXN0b3JhZ2Uta2V5cyI7ZnVuY3Rpb24gYSh0KXt2YXIgZT1bIm9iamVjdCIsInN0cmluZyIsIm51bWJlciIsImJvb2xlYW4iLCJ1bmRlZmluZWQiXTt0cnl7dmFyIG49InN0cmluZyI9PT10eXBlb2YgdD9KU09OLnBhcnNlKHQpOnQscj1uLnR5cGU7aWYoZS5pbmRleE9mKHIpPj0wKXt2YXIgbz1PYmplY3Qua2V5cyhuKTtpZigyPT09by5sZW5ndGgmJiJkYXRhImluIG4pe2lmKGkobi5kYXRhKT09PXIpcmV0dXJuIG4uZGF0YTtpZigib2JqZWN0Ij09PXImJi9eXGR7NH0tXGR7Mn0tXGR7Mn1UXGR7Mn1cOlxkezJ9XDpcZHsyfVwuXGR7M31aJC8udGVzdChuLmRhdGEpKXJldHVybiBuZXcgRGF0ZShuLmRhdGEpfWVsc2UgaWYoMT09PW8ubGVuZ3RoKXJldHVybiIifX1jYXRjaChzKXt9fWZ1bmN0aW9uIHMoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sZT10LmtleSxuPXQuZGF0YSxyPWkobiksbz0ic3RyaW5nIj09PXI/bjpKU09OLnN0cmluZ2lmeSh7dHlwZTpyLGRhdGE6bn0pO3RyeXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShlLG8pfWNhdGNoKHMpe3JldHVybntlcnJNc2c6InNldFN0b3JhZ2U6ZmFpbCAiLmNvbmNhdChzKX19cmV0dXJue2Vyck1zZzoic2V0U3RvcmFnZTpvayJ9fWZ1bmN0aW9uIGModCxlKXtzKHtrZXk6dCxkYXRhOmV9KX1mdW5jdGlvbiB1KCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGU9dC5rZXksbj1sb2NhbFN0b3JhZ2UmJmxvY2FsU3RvcmFnZS5nZXRJdGVtKGUpO2lmKCJzdHJpbmciIT09dHlwZW9mIG4pcmV0dXJue2RhdGE6IiIsZXJyTXNnOiJnZXRTdG9yYWdlOmZhaWwifTt2YXIgcj1uO3RyeXt2YXIgaT1KU09OLnBhcnNlKG4pLG89YShpKTt2b2lkIDAhPT1vJiYocj1vKX1jYXRjaChjKXt9cmV0dXJue2RhdGE6cixlcnJNc2c6ImdldFN0b3JhZ2U6b2sifX1mdW5jdGlvbiBsKHQpe3ZhciBlPXUoe2tleTp0fSk7cmV0dXJuIGUuZGF0YX1mdW5jdGlvbiBmKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGU9dC5rZXk7cmV0dXJuIGxvY2FsU3RvcmFnZSYmbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZSkse2Vyck1zZzoicmVtb3ZlU3RvcmFnZTpvayJ9fWZ1bmN0aW9uIGQodCl7Zih7a2V5OnR9KX1mdW5jdGlvbiBoKCl7cmV0dXJuIGxvY2FsU3RvcmFnZSYmbG9jYWxTdG9yYWdlLmNsZWFyKCkse2Vyck1zZzoiY2xlYXJTdG9yYWdlOm9rIn19ZnVuY3Rpb24gcCgpe2goKX1mdW5jdGlvbiB2KCl7Zm9yKHZhciB0PWxvY2FsU3RvcmFnZSYmbG9jYWxTdG9yYWdlLmxlbmd0aHx8MCxlPVtdLG49MCxyPTA7cjx0O3IrKyl7dmFyIGk9bG9jYWxTdG9yYWdlLmtleShyKSxhPWxvY2FsU3RvcmFnZS5nZXRJdGVtKGkpO24rPWkubGVuZ3RoK2EubGVuZ3RoLGkhPT1vJiZlLnB1c2goaSl9cmV0dXJue2tleXM6ZSxjdXJyZW50U2l6ZTpNYXRoLmNlaWwoMipuLzEwMjQpLGxpbWl0U2l6ZTpOdW1iZXIuTUFYX1ZBTFVFLGVyck1zZzoiZ2V0U3RvcmFnZUluZm86b2sifX1mdW5jdGlvbiBnKCl7dmFyIHQ9digpO3JldHVybiBkZWxldGUgdC5lcnJNc2csdH19LCI1NzZjIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjdhYTQiKSxpPW4ubihyKTtpLmF9LDU4NDQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSksbi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBzfSkpO3ZhciBpPW4oIjM0MGQiKTtmdW5jdGlvbiBvKHQpe3JldHVybiBvPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXIoU3ltYm9sLml0ZXJhdG9yKT9mdW5jdGlvbih0KXtyZXR1cm4gcih0KX06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjpyKHQpfSxvKHQpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIHQubXA9T2JqZWN0LmFzc2lnbih7IkB3YXJuaW5nIjoibXAgaXMgZGVwcmVjYXRlZCJ9LHQpLHQuX3Byb2Nlc3NlZD0hMCx0fWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gT2JqZWN0KGlbImwiXSkoZSkmJihPYmplY3QoaVsiaSJdKShlLCJiYWNrZ3JvdW5kQ29sb3IiKSYmKHQuYmFja2dyb3VuZENvbG9yPWUuYmFja2dyb3VuZENvbG9yKSxPYmplY3QoaVsiaSJdKShlLCJidXR0b25zIikmJih0LmJ1dHRvbnM9ZS5idXR0b25zKSxPYmplY3QoaVsiaSJdKShlLCJ0aXRsZUNvbG9yIikmJih0LnRleHRDb2xvcj1lLnRpdGxlQ29sb3IpLE9iamVjdChpWyJpIl0pKGUsInRpdGxlVGV4dCIpJiYodC50aXRsZVRleHQ9ZS50aXRsZVRleHQpLE9iamVjdChpWyJpIl0pKGUsInRpdGxlU2l6ZSIpJiYodC50aXRsZVNpemU9ZS50aXRsZVNpemUpLE9iamVjdChpWyJpIl0pKGUsInR5cGUiKSYmKHQudHlwZT1lLnR5cGUpLE9iamVjdChpWyJpIl0pKGUsInNlYXJjaElucHV0IikmJiJvYmplY3QiPT09byhlLnNlYXJjaElucHV0KSYmKHQuc2VhcmNoSW5wdXQ9T2JqZWN0LmFzc2lnbih7YXV0b0ZvY3VzOiExLGFsaWduOiJjZW50ZXIiLGNvbG9yOiIjMDAwMDAwIixiYWNrZ3JvdW5kQ29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC41KSIsYm9yZGVyUmFkaXVzOiIwcHgiLHBsYWNlaG9sZGVyOiIiLHBsYWNlaG9sZGVyQ29sb3I6IiNDQ0NDQ0MiLGRpc2FibGVkOiExfSxlLnNlYXJjaElucHV0KSkpLHR9fSw1ODgzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe24uZChlLCJFZGl0b3JDb250ZXh0IiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKTt2YXIgcj1uKCIzNDBkIik7ZnVuY3Rpb24gaSh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8odCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX1mdW5jdGlvbiBhKHQsZSxuKXtyZXR1cm4gZSYmbyh0LnByb3RvdHlwZSxlKSxuJiZvKHQsbiksdH1mdW5jdGlvbiBzKGUsbixyLGkpe3QucHVibGlzaEhhbmRsZXIobisiLWVkaXRvci0iK2Use2NvbXBvbmVudElkOmUsdHlwZTpyLGRhdGE6aX0sbil9dC5zdWJzY3JpYmUoIm9uRWRpdG9yTWV0aG9kQ2FsbGJhY2siLChmdW5jdGlvbih0KXt2YXIgZT10LmNhbGxiYWNrSWQsbj10LmRhdGE7clsiYSJdLmludm9rZShlLG4pfSkpO3ZhciBjPVsiaW5zZXJ0RGl2aWRlciIsImluc2VydEltYWdlIiwiaW5zZXJ0VGV4dCIsInNldENvbnRlbnRzIiwiZ2V0Q29udGVudHMiLCJjbGVhciIsInJlbW92ZUZvcm1hdCIsInVuZG8iLCJyZWRvIiwiYmx1ciIsImdldFNlbGVjdGlvblRleHQiLCJzY3JvbGxJbnRvVmlldyJdLHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7aSh0aGlzLHQpLHRoaXMuaWQ9ZSx0aGlzLnBhZ2VJZD1ufXJldHVybiBhKHQsW3trZXk6ImZvcm1hdCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtzKHRoaXMuaWQsdGhpcy5wYWdlSWQsImZvcm1hdCIse29wdGlvbnM6e25hbWU6dCx2YWx1ZTplfX0pfX1dKSx0fSgpO2MuZm9yRWFjaCgoZnVuY3Rpb24odCl7dS5wcm90b3R5cGVbdF09clsiYSJdLndhcnAoKGZ1bmN0aW9uKGUsbil7cyh0aGlzLmlkLHRoaXMucGFnZUlkLHQse29wdGlvbnM6ZSxjYWxsYmFja0lkOm59KX0pKX0pKX0uY2FsbCh0aGlzLG4oIjJjOWYiKSl9LCI1OGUzIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gY30pKTt2YXIgcj1uKCJjODhlIiksaT1uLm4ociksbz1uKCIyMjE0IiksYT1uKCJkMzM0Iikscz1uKCIwNTBmIiksYz1PYmplY3QuY3JlYXRlKG51bGwpO2kuYS5mb3JFYWNoKChmdW5jdGlvbih0KXtzWyJhIl1bdF0/Y1t0XT1PYmplY3QoYVsiZCJdKSh0LE9iamVjdChvWyJjIl0pKHQsc1siYSJdW3RdKSk6Y1t0XT1PYmplY3Qob1siZCJdKSh0KX0pKX0sNTkyODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0dXJuIHModCl8fGEodCl8fG8odCl8fGkoKX1mdW5jdGlvbiBpKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9ZnVuY3Rpb24gbyh0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT09dHlwZW9mIHQpcmV0dXJuIGModCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20obik6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9jKHQsZSk6dm9pZCAwfX1mdW5jdGlvbiBhKHQpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSlyZXR1cm4gQXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBzKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGModCl9ZnVuY3Rpb24gYyh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfW4uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gcH0pKTt2YXIgdT1bIm9uTGF1bmNoIiwib25TaG93Iiwib25IaWRlIiwib25VbmlOVmlld01lc3NhZ2UiLCJvblBhZ2VOb3RGb3VuZCIsIm9uVGhlbWVDaGFuZ2UiLCJvbkVycm9yIiwib25VbmhhbmRsZWRSZWplY3Rpb24iLCJvbkluaXQiLCJvbkxvYWQiLCJvblJlYWR5Iiwib25VbmxvYWQiLCJvblB1bGxEb3duUmVmcmVzaCIsIm9uUmVhY2hCb3R0b20iLCJvblRhYkl0ZW1UYXAiLCJvbkFkZFRvRmF2b3JpdGVzIiwib25TaGFyZVRpbWVsaW5lIiwib25TaGFyZUFwcE1lc3NhZ2UiLCJvblJlc2l6ZSIsIm9uUGFnZVNjcm9sbCIsIm9uTmF2aWdhdGlvbkJhckJ1dHRvblRhcCIsIm9uQmFja1ByZXNzIiwib25OYXZpZ2F0aW9uQmFyU2VhcmNoSW5wdXRDaGFuZ2VkIiwib25OYXZpZ2F0aW9uQmFyU2VhcmNoSW5wdXRDb25maXJtZWQiLCJvbk5hdmlnYXRpb25CYXJTZWFyY2hJbnB1dENsaWNrZWQiLCJvbk5hdmlnYXRpb25CYXJTZWFyY2hJbnB1dEZvY3VzQ2hhbmdlZCIsIm9uUGFnZVNob3ciLCJvblBhZ2VIaWRlIiwib25QYWdlUmVzaXplIiwib25TZXJ2aWNlQ3JlYXRlZCIsIm9uU2VydmljZUF0dGFjaGVkIl0sbD1bImRhdGEiLCJwcm9wZXJ0aWVzIiwib3B0aW9ucyIsInJlbGF0aW9ucyJdO2Z1bmN0aW9uIGYodCxlLG4pe2Vbbl0mJk9iamVjdC5hc3NpZ24odFtuXXx8KHRbbl09e30pLGVbbl0pfWZ1bmN0aW9uIGQodCxlKXt0LnB1c2guYXBwbHkodCxyKGUpKX1mdW5jdGlvbiBoKHQsZSl7bC5mb3JFYWNoKChmdW5jdGlvbihuKXtmKHQsZSxuKX0pKSxlLmV4dGVybmFsQ2xhc3NlcyYmZCh0LmV4dGVybmFsQ2xhc3Nlc3x8KHQuZXh0ZXJuYWxDbGFzc2VzPVtdKSxlLmV4dGVybmFsQ2xhc3NlcyksZS5wYXRoJiYodC5wYXRoPWUucGF0aCl9ZnVuY3Rpb24gcCh0KXt2YXIgZT10LmV4dGVuZDt0LmV4dGVuZD1mdW5jdGlvbih0KXt0PXR8fHt9O3ZhciBuPXQubWV0aG9kcztuJiZPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXstMSE9PXUuaW5kZXhPZihlKSYmKHRbZV09bltlXSxkZWxldGUgbltlXSl9KSk7dmFyIHI9dC5zZXR1cDtpZihyKXt2YXIgaT1bIm9uUGFnZVNjcm9sbCIsIm9uUmVhY2hCb3R0b20iXSxvPSIiO3RyeXtvPXIudG9TdHJpbmcoKX1jYXRjaChhKXt9aS5mb3JFYWNoKChmdW5jdGlvbihlKXtvLmluZGV4T2YoInVuaUFwcC4iLmNvbmNhdChlKSkmJiF0W2VdJiYodFtlXT1bZnVuY3Rpb24oKXt9XSl9KSl9cmV0dXJuIGUuY2FsbCh0aGlzLHQpfTt2YXIgbj10LmNvbmZpZy5vcHRpb25NZXJnZVN0cmF0ZWdpZXMscj1uLmNyZWF0ZWQ7dS5mb3JFYWNoKChmdW5jdGlvbih0KXtuW3RdPXJ9KSksbi5tcE9wdGlvbnM9ZnVuY3Rpb24odCxlKXtpZighdClyZXR1cm4gZTt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBoKG4sdCksZSYmaChuLGUpLG59fX0sIjVhMmQiOmZ1bmN0aW9uKHQsZSxuKXt9LCI1YjM4IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjQ2NmIiKSxpPW4ubihyKTtpLmF9LCI1YjVmIjpmdW5jdGlvbih0LGUsbil7fSwiNWJjZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsImNhbklVc2UiLChmdW5jdGlvbigpe3JldHVybiByfSkpO3ZhciByPVt7bmFtZToic2NoZW1hIix0eXBlOlN0cmluZyxyZXF1aXJlZDohMH1dfSwiNWMxZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIHQuaG92ZXJDbGFzcyYmIm5vbmUiIT09dC5ob3ZlckNsYXNzP24oInVuaS1uYXZpZ2F0b3IiLHQuX2coe2NsYXNzOlt0LmhvdmVyaW5nP3QuaG92ZXJDbGFzczoiIl0sb246e3RvdWNoc3RhcnQ6dC5faG92ZXJUb3VjaFN0YXJ0LHRvdWNoZW5kOnQuX2hvdmVyVG91Y2hFbmQsdG91Y2hjYW5jZWw6dC5faG92ZXJUb3VjaENhbmNlbCxtb3VzZWRvd246dC5faG92ZXJNb3VzZWRvd24sbW91c2V1cDp0Ll9ob3Zlck1vdXNldXAsY2xpY2s6dC5fb25DbGlja319LHQuJGxpc3RlbmVycyksW3QuX3QoImRlZmF1bHQiKV0sMik6bigidW5pLW5hdmlnYXRvciIsdC5fZyh7b246e2NsaWNrOnQuX29uQ2xpY2t9fSx0LiRsaXN0ZW5lcnMpLFt0Ll90KCJkZWZhdWx0IildLDIpfSxpPVtdLG89bigiNWQyMSIpLGE9b1siYSJdLHM9KG4oIjk4NDgiKSxuKCI4ODQ0IikpLGM9T2JqZWN0KHNbImEiXSkoYSxyLGksITEsbnVsbCxudWxsLG51bGwpO2VbImRlZmF1bHQiXT1jLmV4cG9ydHN9LCI1ZDIxIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgcj1uKCI5MDllIiksaT1bIm5hdmlnYXRlIiwicmVkaXJlY3QiLCJzd2l0Y2hUYWIiLCJyZUxhdW5jaCIsIm5hdmlnYXRlQmFjayJdLG89WyJzbGlkZS1pbi1yaWdodCIsInNsaWRlLWluLWxlZnQiLCJzbGlkZS1pbi10b3AiLCJzbGlkZS1pbi1ib3R0b20iLCJmYWRlLWluIiwiem9vbS1vdXQiLCJ6b29tLWZhZGUtb3V0IiwicG9wLWluIiwibm9uZSJdLGE9WyJzbGlkZS1vdXQtcmlnaHQiLCJzbGlkZS1vdXQtbGVmdCIsInNsaWRlLW91dC10b3AiLCJzbGlkZS1vdXQtYm90dG9tIiwiZmFkZS1vdXQiLCJ6b29tLWluIiwiem9vbS1mYWRlLWluIiwicG9wLW91dCIsIm5vbmUiXTtlWyJhIl09e25hbWU6Ik5hdmlnYXRvciIsbWl4aW5zOltyWyJjIl1dLHByb3BzOntob3ZlckNsYXNzOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJuYXZpZ2F0b3ItaG92ZXIifSx1cmw6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LG9wZW5UeXBlOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJuYXZpZ2F0ZSIsdmFsaWRhdG9yOmZ1bmN0aW9uKHQpe3JldHVybn5pLmluZGV4T2YodCl9fSxkZWx0YTp7dHlwZTpOdW1iZXIsZGVmYXVsdDoxfSxob3ZlclN0YXJ0VGltZTp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDo1MH0saG92ZXJTdGF5VGltZTp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDo2MDB9LGV4aXN0czp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sYW5pbWF0aW9uVHlwZTp7dHlwZTpTdHJpbmcsdmFsaWRhdG9yOmZ1bmN0aW9uKHQpe3JldHVybiF0fHx+by5jb25jYXQoYSkuaW5kZXhPZih0KX0sZGVmYXVsdDoiIn0sYW5pbWF0aW9uRHVyYXRpb246e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6MzAwfX0sbWV0aG9kczp7X29uQ2xpY2s6ZnVuY3Rpb24oZSl7aWYoIm5hdmlnYXRlQmFjayI9PT10aGlzLm9wZW5UeXBlfHx0aGlzLnVybCl7dmFyIG49cGFyc2VJbnQodGhpcy5hbmltYXRpb25EdXJhdGlvbik7c3dpdGNoKHRoaXMub3BlblR5cGUpe2Nhc2UibmF2aWdhdGUiOnVuaS5uYXZpZ2F0ZVRvKHt1cmw6dGhpcy51cmwsYW5pbWF0aW9uVHlwZTp0aGlzLmFuaW1hdGlvblR5cGV8fCJwb3AtaW4iLGFuaW1hdGlvbkR1cmF0aW9uOm59KTticmVhaztjYXNlInJlZGlyZWN0Ijp1bmkucmVkaXJlY3RUbyh7dXJsOnRoaXMudXJsLGV4aXN0czp0aGlzLmV4aXN0c30pO2JyZWFrO2Nhc2Uic3dpdGNoVGFiIjp1bmkuc3dpdGNoVGFiKHt1cmw6dGhpcy51cmx9KTticmVhaztjYXNlInJlTGF1bmNoIjp1bmkucmVMYXVuY2goe3VybDp0aGlzLnVybH0pO2JyZWFrO2Nhc2UibmF2aWdhdGVCYWNrIjp1bmkubmF2aWdhdGVCYWNrKHtkZWx0YTp0aGlzLmRlbHRhLGFuaW1hdGlvblR5cGU6dGhpcy5hbmltYXRpb25UeXBlfHwicG9wLW91dCIsYW5pbWF0aW9uRHVyYXRpb246bn0pO2JyZWFrO2RlZmF1bHQ6YnJlYWt9fWVsc2UgdC5lcnJvcigiPG5hdmlnYXRvci8+IHNob3VsZCBoYXZlIHVybCBhdHRyaWJ1dGUgd2hlbiB1c2luZyBuYXZpZ2F0ZVRvLCByZWRpcmVjdFRvLCByZUxhdW5jaCBvciBzd2l0Y2hUYWIiKX19fX0pLmNhbGwodGhpcyxuKCI0MThiIilbImRlZmF1bHQiXSl9LCI1ZGI5IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJ1bmktdGFiYmFyIix7Y2xhc3M6WyJ1bmktdGFiYmFyLSIrdC5wb3NpdGlvbl19LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXRhYmJhciIsc3R5bGU6e2JhY2tncm91bmRDb2xvcjp0LnRhYmJhckJhY2tncm91bmRDb2xvciwiYmFja2Ryb3AtZmlsdGVyIjoibm9uZSIhPT10LmJsdXJFZmZlY3Q/ImJsdXIoMTBweCkiOnQuYmx1ckVmZmVjdH19LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXRhYmJhci1ib3JkZXIiLHN0eWxlOntiYWNrZ3JvdW5kQ29sb3I6dC5ib3JkZXJDb2xvcn19KSx0Ll9sKHQudmlzaWJsZUxpc3QsKGZ1bmN0aW9uKGUscil7cmV0dXJuIG4oImRpdiIse2tleTplLmlzTWlkQnV0dG9uP3I6ZS5wYWdlUGF0aCxzdGF0aWNDbGFzczoidW5pLXRhYmJhcl9faXRlbSIsc3R5bGU6ZS5pc01pZEJ1dHRvbj97ZmxleDoiMCAwICIrZS53aWR0aCxwb3NpdGlvbjoicmVsYXRpdmUifTp7fSxvbjp7Y2xpY2s6ZnVuY3Rpb24obil7cmV0dXJuIHQuX3N3aXRjaFRhYihlLHIpfX19LFtlLmlzTWlkQnV0dG9uP24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdGFiYmFyX19taWQiLHN0eWxlOnQuX3VuaVRhYmJhckJkU3R5bGUoZSl9LFtlLmljb25QYXRoP24oImltZyIse3N0eWxlOnt3aWR0aDplLmljb25XaWR0aCxoZWlnaHQ6ZS5pY29uV2lkdGh9LGF0dHJzOntzcmM6dC5fZ2V0UmVhbFBhdGgoZS5pY29uUGF0aCl9fSk6dC5fZSgpXSk6dC5fZSgpLG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdGFiYmFyX19iZCIsc3R5bGU6e2hlaWdodDp0LmhlaWdodH19LFt0LmdldEljb25QYXRoKGUscil8fGUuaWNvbmZvbnR8fGUuaWNvblBhdGh8fGUuaXNNaWRCdXR0b24/bigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS10YWJiYXJfX2ljb24iLGNsYXNzOnsidW5pLXRhYmJhcl9faWNvbl9fZGlmZiI6IWUudGV4dH0sc3R5bGU6e3dpZHRoOnQuaWNvbldpZHRoLGhlaWdodDp0Lmljb25XaWR0aH19LFtlLmljb25mb250P24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdGFiYmFyX19pY29uZm9udCIsc3R5bGU6e2NvbG9yOnQuc2VsZWN0ZWRJbmRleD09PXI/ZS5pY29uZm9udC5zZWxlY3RlZENvbG9yOmUuaWNvbmZvbnQuY29sb3IsZm9udFNpemU6ZS5pY29uZm9udC5mb250U2l6ZXx8dC5pY29uV2lkdGh9fSxbdC5fdigiICIrdC5fcyh0LnNlbGVjdGVkSW5kZXg9PT1yP2UuaWNvbmZvbnQuc2VsZWN0ZWRUZXh0OmUuaWNvbmZvbnQudGV4dCkrIiAiKV0pOmUuaXNNaWRCdXR0b24/dC5fZSgpOm4oImltZyIse2F0dHJzOntzcmM6dC5fZ2V0UmVhbFBhdGgodC5nZXRJY29uUGF0aChlLHIpKX19KV0pOnQuX2UoKSxlLnRleHQ/bigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS10YWJiYXJfX2xhYmVsIixzdHlsZTp7Y29sb3I6dC5zZWxlY3RlZEluZGV4PT09cj90LnNlbGVjdGVkQ29sb3I6dC5jb2xvcixmb250U2l6ZTp0LmZvbnRTaXplLGxpbmVIZWlnaHQ6ZS5pY29uUGF0aD8ibm9ybWFsIjoxLjgsbWFyZ2luVG9wOmUuaWNvblBhdGg/dC5zcGFjaW5nOiJpbmhlcml0In19LFt0Ll92KCIgIit0Ll9zKGUudGV4dCkrIiAiKV0pOnQuX2UoKSxlLnJlZERvdD9uKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXRhYmJhcl9fcmVkZG90IixjbGFzczp7InVuaS10YWJiYXJfX2JhZGdlIjohIWUuYmFkZ2V9fSxbdC5fdigiICIrdC5fcyhlLmJhZGdlKSsiICIpXSk6dC5fZSgpXSldKX0pKV0sMiksbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1wbGFjZWhvbGRlciIsc3R5bGU6e2hlaWdodDp0LmhlaWdodH19KV0pfSxpPVtdLG89bigiZWE3MiIpLGE9b1siYSJdLHM9KG4oIjVmNzciKSxuKCI4ODQ0IikpLGM9T2JqZWN0KHNbImEiXSkoYSxyLGksITEsbnVsbCxudWxsLG51bGwpLHU9Yy5leHBvcnRzLGw9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIHQucmVzcG9uc2l2ZT9uKCJ1bmktbGF5b3V0Iix7Y2xhc3M6eyJ1bmktYXBwLS1zaG93bGF5b3V0Ijp0LnNob3dMYXlvdXQsInVuaS1hcHAtLXNob3d0b3B3aW5kb3ciOnQuc2hvd1RvcFdpbmRvdywidW5pLWFwcC0tc2hvd2xlZnR3aW5kb3ciOnQuc2hvd0xlZnRXaW5kb3csInVuaS1hcHAtLXNob3dyaWdodHdpbmRvdyI6dC5zaG93UmlnaHRXaW5kb3d9fSxbdC50b3BXaW5kb3c/bigidW5pLXRvcC13aW5kb3ciLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTp0LnNob3dUb3BXaW5kb3d8fHQuYXBpU2hvd1RvcFdpbmRvdyxleHByZXNzaW9uOiJzaG93VG9wV2luZG93IHx8IGFwaVNob3dUb3BXaW5kb3cifV19LFtuKCJkaXYiLHtyZWY6InRvcFdpbmRvdyIsc3RhdGljQ2xhc3M6InVuaS10b3Atd2luZG93IixzdHlsZTp0LnRvcFdpbmRvd1N0eWxlfSxbbigidi11bmktdG9wLXdpbmRvdyIsdC5fYih7cmVmOiJ0b3AiLGF0dHJzOnsibmF2aWdhdGlvbi1iYXItdGl0bGUtdGV4dCI6dC5uYXZpZ2F0aW9uQmFyVGl0bGVUZXh0fSxvbjp7Imhvb2s6bW91bnRlZCI6dC5vblRvcFdpbmRvd0luaXR9fSwidi11bmktdG9wLXdpbmRvdyIsdC5iaW5kV2luZG93LCExKSldLDEpLG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktdG9wLXdpbmRvdy0tcGxhY2Vob2xkZXIiLHN0eWxlOntoZWlnaHQ6dC50b3BXaW5kb3dIZWlnaHR9fSldKTp0Ll9lKCksbigidW5pLWNvbnRlbnQiLFtuKCJ1bmktbWFpbiIsW24oImtlZXAtYWxpdmUiLHthdHRyczp7aW5jbHVkZTp0LmtlZXBBbGl2ZUluY2x1ZGV9fSxbbigicm91dGVyLXZpZXciLHtrZXk6dC5yb3V0ZXJLZXl9KV0sMSldLDEpLHQubGVmdFdpbmRvdz9uKCJ1bmktbGVmdC13aW5kb3ciLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTp0LnNob3dMZWZ0V2luZG93fHx0LmFwaVNob3dMZWZ0V2luZG93LGV4cHJlc3Npb246InNob3dMZWZ0V2luZG93IHx8IGFwaVNob3dMZWZ0V2luZG93In1dLHJlZjoibGVmdFdpbmRvdyIsc3R5bGU6dC5sZWZ0V2luZG93U3R5bGUsYXR0cnM6eyJkYXRhLXNob3ciOnQuYXBpU2hvd0xlZnRXaW5kb3d9fSxbdC5hcGlTaG93TGVmdFdpbmRvdz9uKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLW1hc2siLG9uOntjbGljazpmdW5jdGlvbihlKXt0LmFwaVNob3dMZWZ0V2luZG93PSExfX19KTp0Ll9lKCksbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1sZWZ0LXdpbmRvdyJ9LFtuKCJ2LXVuaS1sZWZ0LXdpbmRvdyIsdC5fYih7cmVmOiJsZWZ0Iixvbjp7Imhvb2s6bW91bnRlZCI6dC5vbkxlZnRXaW5kb3dJbml0fX0sInYtdW5pLWxlZnQtd2luZG93Iix0LmJpbmRXaW5kb3csITEpKV0sMSldKTp0Ll9lKCksdC5yaWdodFdpbmRvdz9uKCJ1bmktcmlnaHQtd2luZG93Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6dC5zaG93UmlnaHRXaW5kb3d8fHQuYXBpU2hvd1JpZ2h0V2luZG93LGV4cHJlc3Npb246InNob3dSaWdodFdpbmRvdyB8fCBhcGlTaG93UmlnaHRXaW5kb3cifV0scmVmOiJyaWdodFdpbmRvdyIsc3R5bGU6dC5yaWdodFdpbmRvd1N0eWxlLGF0dHJzOnsiZGF0YS1zaG93Ijp0LmFwaVNob3dSaWdodFdpbmRvd319LFt0LmFwaVNob3dSaWdodFdpbmRvdz9uKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLW1hc2siLG9uOntjbGljazpmdW5jdGlvbihlKXt0LmFwaVNob3dSaWdodFdpbmRvdz0hMX19fSk6dC5fZSgpLG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktcmlnaHQtd2luZG93In0sW24oInYtdW5pLXJpZ2h0LXdpbmRvdyIsdC5fYih7cmVmOiJyaWdodCIsb246eyJob29rOm1vdW50ZWQiOnQub25SaWdodFdpbmRvd0luaXR9fSwidi11bmktcmlnaHQtd2luZG93Iix0LmJpbmRXaW5kb3csITEpKV0sMSldKTp0Ll9lKCldLDEpXSwxKTpuKCJrZWVwLWFsaXZlIix7YXR0cnM6e2luY2x1ZGU6dC5rZWVwQWxpdmVJbmNsdWRlfX0sW24oInJvdXRlci12aWV3Iix7a2V5OnQucm91dGVyS2V5fSldLDEpfSxmPVtdLGQ9bigiZTE2ZSIpLGg9ZFsiYSJdLHA9KG4oIjU1NTYiKSxPYmplY3Qoc1siYSJdKShoLGwsZiwhMSxudWxsLG51bGwsbnVsbCkpLHY9cC5leHBvcnRzLGc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInRyYW5zaXRpb24iLHthdHRyczp7bmFtZToidW5pLWZhZGUifX0sW3QudmlzaWJsZT9uKCJ1bmktdG9hc3QiLHthdHRyczp7ImRhdGEtZHVyYXRpb24iOnQuZHVyYXRpb259fSxbdC5tYXNrP24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktbWFzayIsc3RhdGljU3R5bGU6e2JhY2tncm91bmQ6InRyYW5zcGFyZW50In0sb246e3RvdWNobW92ZTpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCl9fX0pOnQuX2UoKSx0LmltYWdlfHx0Lmljb25DbGFzcz9uKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXRvYXN0In0sW3QuaW1hZ2U/bigiaW1nIix7c3RhdGljQ2xhc3M6InVuaS10b2FzdF9faWNvbiIsYXR0cnM6e3NyYzp0LmltYWdlfX0pOm4oImkiLHtzdGF0aWNDbGFzczoidW5pLWljb25fdG9hc3QiLGNsYXNzOnQuaWNvbkNsYXNzfSksbigicCIse3N0YXRpY0NsYXNzOiJ1bmktdG9hc3RfX2NvbnRlbnQifSxbdC5fdigiICIrdC5fcyh0LnRpdGxlKSsiICIpXSldKTpuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXNhbXBsZS10b2FzdCJ9LFtuKCJwIix7c3RhdGljQ2xhc3M6InVuaS1zaW1wbGUtdG9hc3RfX3RleHQifSxbdC5fdigiICIrdC5fcyh0LnRpdGxlKSsiICIpXSldKV0pOnQuX2UoKV0sMSl9LG09W10sYj1uKCJkYWQ2IikseT1iWyJhIl0sXz0obigiY2JkMCIpLE9iamVjdChzWyJhIl0pKHksZyxtLCExLG51bGwsbnVsbCxudWxsKSksdz1fLmV4cG9ydHMsUz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbigidHJhbnNpdGlvbiIse2F0dHJzOntuYW1lOiJ1bmktZmFkZSJ9fSxbbigidW5pLW1vZGFsIix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6dC52aXNpYmxlLGV4cHJlc3Npb246InZpc2libGUifV0sb246e3RvdWNobW92ZTpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCl9fX0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktbWFzayJ9KSxuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLW1vZGFsIn0sW3QudGl0bGU/bigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1tb2RhbF9faGQifSxbbigic3Ryb25nIix7c3RhdGljQ2xhc3M6InVuaS1tb2RhbF9fdGl0bGUiLGRvbVByb3BzOnt0ZXh0Q29udGVudDp0Ll9zKHQudGl0bGUpfX0pXSk6dC5fZSgpLHQuZWRpdGFibGU/bigidGV4dGFyZWEiLHtyZWY6ImVkaXRDb250ZW50IixzdGF0aWNDbGFzczoidW5pLW1vZGFsX190ZXh0YXJlYSIsYXR0cnM6e3Jvd3M6IjEiLHBsYWNlaG9sZGVyOnQucGxhY2Vob2xkZXJUZXh0fSxkb21Qcm9wczp7dmFsdWU6dC5jb250ZW50fX0pOm4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktbW9kYWxfX2JkIixkb21Qcm9wczp7dGV4dENvbnRlbnQ6dC5fcyh0LmNvbnRlbnQpfSxvbjp7dG91Y2htb3ZlOmZ1bmN0aW9uKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCl9fX0pLG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktbW9kYWxfX2Z0In0sW3Quc2hvd0NhbmNlbD9uKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLW1vZGFsX19idG4gdW5pLW1vZGFsX19idG5fZGVmYXVsdCIsc3R5bGU6e2NvbG9yOnQuY2FuY2VsQ29sb3JffSxvbjp7Y2xpY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2Nsb3NlKCJjYW5jZWwiKX19fSxbdC5fdigiICIrdC5fcyh0LmNhbmNlbFRleHQpKyIgIildKTp0Ll9lKCksbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1tb2RhbF9fYnRuIHVuaS1tb2RhbF9fYnRuX3ByaW1hcnkiLHN0eWxlOntjb2xvcjp0LmNvbmZpcm1Db2xvcn0sb246e2NsaWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0Ll9jbG9zZSgiY29uZmlybSIpfX19LFt0Ll92KCIgIit0Ll9zKHQuY29uZmlybVRleHQpKyIgIildKV0pXSksbigia2V5cHJlc3MiLHthdHRyczp7ZGlzYWJsZTohdC52aXNpYmxlfSxvbjp7ZXNjOmZ1bmN0aW9uKGUpe3JldHVybiB0Ll9jbG9zZSgiY2FuY2VsIil9LGVudGVyOmZ1bmN0aW9uKGUpeyF0LmVkaXRhYmxlJiZ0Ll9jbG9zZSgiY29uZmlybSIpfX19KV0sMSldLDEpfSx4PVtdLGs9bigiYTQwOSIpLEM9bigiNzY4NyIpLFQ9bigiYjQwNSIpO2Z1bmN0aW9uIE8odCxlLG4pe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bix0fXZhciBBPXtsaWdodDp7Y2FuY2VsQ29sb3I6IiMwMDAwMDAifSxkYXJrOntjYW5jZWxDb2xvcjoicmdiKDE3MCwgMTcwLCAxNzApIn19O2Z1bmN0aW9uIEUodCl7dGhpcy5jYW5jZWxDb2xvcl89QVt0XS5jYW5jZWxDb2xvcn12YXIgaj17bmFtZToiTW9kYWwiLGNvbXBvbmVudHM6e2tleXByZXNzOkNbImEiXX0sbWl4aW5zOltrWyJkZWZhdWx0Il1dLHByb3BzOnt0aXRsZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sY29udGVudDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sc2hvd0NhbmNlbDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGNhbmNlbFRleHQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IkNhbmNlbCJ9LGNhbmNlbENvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIjMDAwMDAwIn0sY29uZmlybVRleHQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6Ik9LIn0sY29uZmlybUNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIjMDA3YWZmIn0sdmlzaWJsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGVkaXRhYmxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scGxhY2Vob2xkZXJUZXh0Ont0eXBlOlN0cmluZyxkZWZhdWx0OiIifX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntjYW5jZWxDb2xvcl86IiMwMDAifX0sd2F0Y2g6e3Zpc2libGU6ZnVuY3Rpb24odCl7dD8odGhpcy5jYW5jZWxDb2xvcl89dGhpcy4kcGFyZW50LnNob3dNb2RhbC5jYW5jZWxDb2xvciwiIzAwMCI9PT10aGlzLiRwYXJlbnQuc2hvd01vZGFsLmNhbmNlbENvbG9yJiYoImRhcmsiPT09T2JqZWN0KFRbImEiXSkoKSYmdGhpcy5fb25UaGVtZUNoYW5nZSh7dGhlbWU6ImRhcmsifSksT2JqZWN0KFRbImMiXSkodGhpcy5fb25UaGVtZUNoYW5nZSkpKTpPYmplY3QoVFsiYiJdKSh0aGlzLl9vblRoZW1lQ2hhbmdlKX19LG1ldGhvZHM6e19vblRoZW1lQ2hhbmdlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudGhlbWU7RS5jYWxsKHRoaXMsZSl9LF9jbG9zZTpmdW5jdGlvbih0KXt2YXIgZT1PKHt9LHQsITApO3RoaXMuZWRpdGFibGUmJiJjb25maXJtIj09PXQmJihlLmNvbnRlbnQ9dGhpcy4kcmVmcy5lZGl0Q29udGVudC52YWx1ZSksdGhpcy4kZW1pdCgiY2xvc2UiLGUpfX19LE09aixJPShuKCI5NmI5IiksT2JqZWN0KHNbImEiXSkoTSxTLHgsITEsbnVsbCxudWxsLG51bGwpKSxQPUkuZXhwb3J0cywkPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJ1bmktYWN0aW9uc2hlZXQiLHtvbjp7dG91Y2htb3ZlOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKX19fSxbbigidHJhbnNpdGlvbiIse2F0dHJzOntuYW1lOiJ1bmktZmFkZSJ9fSxbbigiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6dC52aXNpYmxlLGV4cHJlc3Npb246InZpc2libGUifV0sc3RhdGljQ2xhc3M6InVuaS1tYXNrIHVuaS1hY3Rpb25zaGVldF9fbWFzayIsb246e2NsaWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0Ll9jbG9zZSgtMSl9fX0pXSksbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1hY3Rpb25zaGVldCIsY2xhc3M6eyJ1bmktYWN0aW9uc2hlZXRfdG9nZ2xlIjp0LnZpc2libGV9LHN0eWxlOnQucG9wdXBTdHlsZS5jb250ZW50fSxbbigiZGl2Iix7cmVmOiJtYWluIixzdGF0aWNDbGFzczoidW5pLWFjdGlvbnNoZWV0X19tZW51Iixvbjp7d2hlZWw6dC5faGFuZGxlV2hlZWx9fSxbdC50aXRsZT9uKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLWFjdGlvbnNoZWV0X19jZWxsIixzdHlsZTp7aGVpZ2h0OnQudGl0bGVIZWlnaHQrInB4In19KTp0Ll9lKCksdC50aXRsZT9uKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLWFjdGlvbnNoZWV0X190aXRsZSJ9LFt0Ll92KCIgIit0Ll9zKHQudGl0bGUpKyIgIildKTp0Ll9lKCksbigiZGl2Iix7c3R5bGU6e21heEhlaWdodDp0LkhFSUdIVCsicHgiLG92ZXJmbG93OiJoaWRkZW4ifX0sW24oImRpdiIse3JlZjoiY29udGVudCJ9LHQuX2wodC5pdGVtTGlzdCwoZnVuY3Rpb24oZSxyKXtyZXR1cm4gbigiZGl2Iix7a2V5OnIsc3RhdGljQ2xhc3M6InVuaS1hY3Rpb25zaGVldF9fY2VsbCIsc3R5bGU6e2NvbG9yOnQubGlzdEl0ZW1Db2xvcn0sb246e2NsaWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0Ll9jbG9zZShyKX19fSxbdC5fdigiICIrdC5fcyhlKSsiICIpXSl9KSksMCldKV0pLG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktYWN0aW9uc2hlZXRfX2FjdGlvbiJ9LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLWFjdGlvbnNoZWV0X19jZWxsIixzdHlsZTp7Y29sb3I6dC5jYW5jZWxJdGVtQ29sb3J9LG9uOntjbGljazpmdW5jdGlvbihlKXtyZXR1cm4gdC5fY2xvc2UoLTEpfX19LFt0Ll92KCIgIit0Ll9zKHQuJCR0KCJ1bmkuc2hvd0FjdGlvblNoZWV0LmNhbmNlbCIpKSsiICIpXSldKSxuKCJkaXYiLHtzdHlsZTp0LnBvcHVwU3R5bGUudHJpYW5nbGV9KV0pLG4oImtleXByZXNzIix7YXR0cnM6e2Rpc2FibGU6IXQudmlzaWJsZX0sb246e2VzYzpmdW5jdGlvbihlKXtyZXR1cm4gdC5fY2xvc2UoLTEpfX19KV0sMSl9LEw9W10sUj1uKCJhMjAyIiksTj1uKCIwMzcyIiksRD1uKCIzOWJkIiksQj1uKCJjNzAwIiksRj1uKCJkNGM5Iiksej1uKCI0YmE2IiksVz1uKCI2Zjc1Iik7ZnVuY3Rpb24gSCh0KXt2YXIgZT0yMCxuPTAscj0wO3QuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsKGZ1bmN0aW9uKHQpe3ZhciBlPXQuY2hhbmdlZFRvdWNoZXNbMF07bj1lLmNsaWVudFgscj1lLmNsaWVudFl9KSksdC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsKGZ1bmN0aW9uKHQpe3ZhciBpPXQuY2hhbmdlZFRvdWNoZXNbMF07aWYoTWF0aC5hYnMoaS5jbGllbnRYLW4pPGUmJk1hdGguYWJzKGkuY2xpZW50WS1yKTxlKXt2YXIgbz1uZXcgQ3VzdG9tRXZlbnQoImNsaWNrIix7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLHRhcmdldDp0LnRhcmdldCxjdXJyZW50VGFyZ2V0OnQuY3VycmVudFRhcmdldH0pO1sic2NyZWVuWCIsInNjcmVlblkiLCJjbGllbnRYIiwiY2xpZW50WSIsInBhZ2VYIiwicGFnZVkiXS5mb3JFYWNoKChmdW5jdGlvbih0KXtvW3RdPWlbdF19KSksdC50YXJnZXQuZGlzcGF0Y2hFdmVudChvKX19KSl9dmFyIFU9e2xpZ2h0OntsaXN0SXRlbUNvbG9yOiIjMDAwMDAwIixjYW5jZWxJdGVtQ29sb3I6IiMwMDAwMDAifSxkYXJrOntsaXN0SXRlbUNvbG9yOiJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCkiLGNhbmNlbEl0ZW1Db2xvcjoicmdiYSgyNTUsIDI1NSwgMjU1KSJ9fTtmdW5jdGlvbiBxKHQpe3ZhciBlPXRoaXM7WyJsaXN0SXRlbUNvbG9yIiwiY2FuY2VsSXRlbUNvbG9yIl0uZm9yRWFjaCgoZnVuY3Rpb24obil7ZVtuXT1VW3RdW25dfSkpfXZhciBWPXtuYW1lOiJBY3Rpb25TaGVldCIsY29tcG9uZW50czp7a2V5cHJlc3M6Q1siYSJdfSxtaXhpbnM6W05bImMiXSxSWyJkZWZhdWx0Il0sRFsiYSJdLEJbImEiXV0scHJvcHM6e3RpdGxlOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxpdGVtTGlzdDp7dHlwZTpBcnJheSxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuW119fSxpdGVtQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiMwMDAwMDAifSxwb3BvdmVyOnt0eXBlOk9iamVjdCxkZWZhdWx0Om51bGx9LHZpc2libGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntIRUlHSFQ6MjYwLGNvbnRlbnRIZWlnaHQ6MCx0aXRsZUhlaWdodDowLGRlbHRhWTowLHNjcm9sbFRvcDowLGxpc3RJdGVtQ29sb3I6IiMwMDAwMDAiLGNhbmNlbEl0ZW1Db2xvcjoiIzAwMDAwMCJ9fSx3YXRjaDp7dmlzaWJsZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3Q/KHRoaXMuJG5leHRUaWNrKChmdW5jdGlvbigpe2UudGl0bGUmJihlLnRpdGxlSGVpZ2h0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi51bmktYWN0aW9uc2hlZXRfX3RpdGxlIikub2Zmc2V0SGVpZ2h0KSxlLl9zY3JvbGxlci51cGRhdGUoKSxlLmNvbnRlbnRIZWlnaHQ9ZS4kcmVmcy5jb250ZW50LmNsaWVudEhlaWdodC1lLkhFSUdIVCxkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIudW5pLWFjdGlvbnNoZWV0X19jZWxsIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7SCh0KX0pKX0pKSx0aGlzLmxpc3RJdGVtQ29sb3I9dGhpcy5jYW5jZWxJdGVtQ29sb3I9dGhpcy5pdGVtQ29sb3IsIiMwMDAiPT09dGhpcy4kcGFyZW50LnNob3dBY3Rpb25TaGVldC5pdGVtQ29sb3ImJigiZGFyayI9PT1PYmplY3QoVFsiYSJdKSgpJiZ0aGlzLl9vblRoZW1lQ2hhbmdlKHt0aGVtZToiZGFyayJ9KSxPYmplY3QoVFsiYyJdKSh0aGlzLl9vblRoZW1lQ2hhbmdlKSkpOk9iamVjdChUWyJiIl0pKHRoaXMuX29uVGhlbWVDaGFuZ2UpfX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy50b3VjaHRyYWNrKHRoaXMuJHJlZnMuY29udGVudCwiX2hhbmRsZVRyYWNrIiwhMCksdGhpcy4kbmV4dFRpY2soKGZ1bmN0aW9uKCl7dC5pbml0U2Nyb2xsZXIodC4kcmVmcy5jb250ZW50LHtlbmFibGVZOiEwLGZyaWN0aW9uOm5ldyBGWyJhIl0oMWUtNCksc3ByaW5nOm5ldyB6WyJhIl0oMiw5MCwyMCksb25TY3JvbGw6ZnVuY3Rpb24oZSl7dC5zY3JvbGxUb3A9ZS50YXJnZXQuc2Nyb2xsVG9wfX0pfSkpLE9iamVjdChXWyJiIl0pKCl9LG1ldGhvZHM6e19vblRoZW1lQ2hhbmdlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudGhlbWU7cS5jYWxsKHRoaXMsZSl9LF9jbG9zZTpmdW5jdGlvbih0KXt0aGlzLiRlbWl0KCJjbG9zZSIsdCl9LF9oYW5kbGVUcmFjazpmdW5jdGlvbih0KXtpZih0aGlzLl9zY3JvbGxlcilzd2l0Y2godC5kZXRhaWwuc3RhdGUpe2Nhc2Uic3RhcnQiOnRoaXMuX2hhbmRsZVRvdWNoU3RhcnQodCksT2JqZWN0KFdbImEiXSkoe2Rpc2FibGU6ITB9KTticmVhaztjYXNlIm1vdmUiOnRoaXMuX2hhbmRsZVRvdWNoTW92ZSh0KTticmVhaztjYXNlImVuZCI6Y2FzZSJjYW5jZWwiOnRoaXMuX2hhbmRsZVRvdWNoRW5kKHQpLE9iamVjdChXWyJhIl0pKHtkaXNhYmxlOiExfSl9fSxfaGFuZGxlV2hlZWw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kZWx0YVkrdC5kZWx0YVk7TWF0aC5hYnMoZSk+MTA/KHRoaXMuc2Nyb2xsVG9wKz1lLzMsdGhpcy5zY3JvbGxUb3A9dGhpcy5zY3JvbGxUb3A+PXRoaXMuY29udGVudEhlaWdodD90aGlzLmNvbnRlbnRIZWlnaHQ6dGhpcy5zY3JvbGxUb3A8PTA/MDp0aGlzLnNjcm9sbFRvcCx0aGlzLl9zY3JvbGxlci5zY3JvbGxUbyh0aGlzLnNjcm9sbFRvcCkpOnRoaXMuZGVsdGFZPWUsdC5wcmV2ZW50RGVmYXVsdCgpfX19LFk9VixYPShuKCI1ZmU4IiksT2JqZWN0KHNbImEiXSkoWSwkLEwsITEsbnVsbCxudWxsLG51bGwpKSxHPVguZXhwb3J0cyxRPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiB0LnZpc2libGU/bigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1zeXN0ZW0tcHJldmlldy1pbWFnZSIsb246e2NsaWNrOnQuX2NsaWNrfX0sW24oInYtdW5pLXN3aXBlciIse3N0YXRpY0NsYXNzOiJ1bmktc3lzdGVtLXByZXZpZXctaW1hZ2Utc3dpcGVyIixhdHRyczp7bmF2aWdhdGlvbjoiYXV0byIsY3VycmVudDp0LmluZGV4LCJpbmRpY2F0b3ItZG90cyI6ITEsYXV0b3BsYXk6ITF9LG9uOnsidXBkYXRlOmN1cnJlbnQiOmZ1bmN0aW9uKGUpe3QuaW5kZXg9ZX19fSx0Ll9sKHQudXJscywoZnVuY3Rpb24odCxlKXtyZXR1cm4gbigidi11bmktc3dpcGVyLWl0ZW0iLHtrZXk6ZX0sW24oImltYWdlLXZpZXciLHthdHRyczp7c3JjOnR9fSldLDEpfSkpLDEpLHQuX20oMCldLDEpOnQuX2UoKX0sSj1bZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oImRpdiIse3N0YXRpY0NsYXNzOiJuYXYtYnRuLWJhY2sifSxbbigiaSIse3N0YXRpY0NsYXNzOiJ1bmktYnRuLWljb24ifSxbdC5fdigi7pmQIildKV0pfV0sSz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbigidi11bmktbW92YWJsZS1hcmVhIix7c3RhdGljQ2xhc3M6ImltYWdlLXZpZXctYXJlYSIsbmF0aXZlT246e3RvdWNoc3RhcnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHQub25Ub3VjaFN0YXJ0KGUpfSx0b3VjaG1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuY2hlY2tEaXJlY3Rpb24oZSl9LHRvdWNoZW5kOmZ1bmN0aW9uKGUpe3JldHVybiB0Lm9uVG91Y2hFbmQoZSl9fX0sW24oInYtdW5pLW1vdmFibGUtdmlldyIse3N0YXRpY0NsYXNzOiJpbWFnZS12aWV3LXZpZXciLGF0dHJzOntkaXJlY3Rpb246dC5kaXJlY3Rpb24saW5lcnRpYToiIixzY2FsZToiIiwic2NhbGUtbWluIjoiMSIsInNjYWxlLW1heCI6IjQifSxvbjp7c2NhbGU6dC5vblNjYWxlfX0sW24oImltZyIse3N0YXRpY0NsYXNzOiJpbWFnZS12aWV3LWltZyIsYXR0cnM6e3NyYzp0LnNyY30sb246e2xvYWQ6dC5vbkltZ0xvYWR9fSldKV0sMSl9LFo9W10sdHQ9e25hbWU6IkltYWdlVmlldyIscHJvcHM6e3NyYzp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57ZGlyZWN0aW9uOiJub25lIn19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnNjYWxlPTEsdGhpcy5pbWdXaWR0aD0wLHRoaXMuaW1nSGVpZ2h0PTAsdGhpcy53aWR0aD0wLHRoaXMuaGVpZ2h0PTB9LG1ldGhvZHM6e29uU2NhbGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5kZXRhaWwuc2NhbGU7dGhpcy5zY2FsZT1lfSxvbkltZ0xvYWQ6ZnVuY3Rpb24odCl7dmFyIGU9dC50YXJnZXQsbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuaW1nV2lkdGg9bi53aWR0aCx0aGlzLmltZ0hlaWdodD1uLmhlaWdodH0sb25Ub3VjaFN0YXJ0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuJGVsLG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLndpZHRoPW4ud2lkdGgsdGhpcy5oZWlnaHQ9bi5oZWlnaHQsdGhpcy5jaGVja0RpcmVjdGlvbih0KX0sb25Ub3VjaEVuZDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnNjYWxlLG49ZSp0aGlzLmltZ1dpZHRoPnRoaXMud2lkdGgscj1lKnRoaXMuaW1nSGVpZ2h0PnRoaXMuaGVpZ2h0O3RoaXMuZGlyZWN0aW9uPW4mJnI/ImFsbCI6bj8iaG9yaXpvbnRhbCI6cj8idmVydGljYWwiOiJub25lIix0aGlzLmNoZWNrRGlyZWN0aW9uKHQpfSxjaGVja0RpcmVjdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmRpcmVjdGlvbjsiYWxsIiE9PWUmJiJob3Jpem9udGFsIiE9PWV8fHQuc3RvcFByb3BhZ2F0aW9uKCl9fX0sZXQ9dHQsbnQ9KG4oIjE4NjciKSxPYmplY3Qoc1siYSJdKShldCxLLFosITEsbnVsbCxudWxsLG51bGwpKSxydD1udC5leHBvcnRzLGl0PXtuYW1lOiJQcmV2aWV3SW1hZ2UiLGNvbXBvbmVudHM6e2ltYWdlVmlldzpydH0scHJvcHM6e3Zpc2libGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx1cmxzOnt0eXBlOkFycmF5LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LGN1cnJlbnQ6e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6MH19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57aW5kZXg6MH19LHdhdGNoOnt2aXNpYmxlOmZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPSJudW1iZXIiPT09dHlwZW9mIHRoaXMuY3VycmVudD90aGlzLmN1cnJlbnQ6dGhpcy51cmxzLmluZGV4T2YodGhpcy5jdXJyZW50KTt0aGlzLmluZGV4PWU8MD8wOmV9fX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT0yMCxuPTAscj0wO3RoaXMuJGVsLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsKGZ1bmN0aW9uKGUpe3QucHJldmVudERlZmF1bHQ9ITEsbj1lLmNsaWVudFgscj1lLmNsaWVudFl9KSksdGhpcy4kZWwuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsKGZ1bmN0aW9uKGkpeyhNYXRoLmFicyhpLmNsaWVudFgtbik+ZXx8TWF0aC5hYnMoaS5jbGllbnRZLXIpPmUpJiYodC5wcmV2ZW50RGVmYXVsdD0hMCl9KSl9LG1ldGhvZHM6e19jbGljazpmdW5jdGlvbigpe3RoaXMucHJldmVudERlZmF1bHR8fHRoaXMuJGVtaXQoImNsb3NlIil9fX0sb3Q9aXQsYXQ9KG4oIjQyMTMiKSxPYmplY3Qoc1siYSJdKShvdCxRLEosITEsbnVsbCxudWxsLG51bGwpKSxzdD1hdC5leHBvcnRzLGN0PXtUb2FzdDp3LE1vZGFsOlAsQWN0aW9uU2hlZXQ6RyxQcmV2aWV3SW1hZ2U6c3R9O2Z1bmN0aW9uIHV0KHQsZSl7dmFyIG49T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYocj1yLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBsdCh0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbZV0/YXJndW1lbnRzW2VdOnt9O2UlMj91dChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Z0KHQsZSxuW2VdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTp1dChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiBmdCh0LGUsbil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1uLHR9ZVsiYSJdPWx0KHtUYWJCYXI6dSxMYXlvdXQ6dn0sY3QpfSwiNWUyNyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyZDEwIiksaT1uLm4ocik7aS5hfSwiNWYzMCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsInByZUxvZ2luIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKTt2YXIgcj17VU5JVkVSSUZZOiJ1bml2ZXJpZnkifSxpPXtwcm92aWRlcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITAsZGVmYXVsdDpyLlVOSVZFUklGWSx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXtpZihPYmplY3QudmFsdWVzKHIpLmluZGV4T2YodCk8MClyZXR1cm4icHJvdmlkZXIgZXJyb3IifX19fSwiNWY3NyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIwNGVkIiksaT1uLm4ocik7aS5hfSwiNWZlOCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlMjgzIiksaT1uLm4ocik7aS5hfSw2MTQwOmZ1bmN0aW9uKHQsZSxuKXt9LCI2MWE1IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXtmdW5jdGlvbiByKGUpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4+MT9uLTE6MCksaT0xO2k8bjtpKyspcltpLTFdPWFyZ3VtZW50c1tpXTt0W2VdLmFwcGx5KHQscil9bi5kKGUsIl9fZl9fIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKX0uY2FsbCh0aGlzLG4oIjQxOGIiKVsiZGVmYXVsdCJdKX0sIjYxZDgiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJnZXRJbWFnZUluZm8iLChmdW5jdGlvbigpe3JldHVybiBpfSkpO3ZhciByPW4oIjQ3MzgiKSxpPXtzcmM6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe2Uuc3JjPU9iamVjdChyWyJhIl0pKHQpfX19fSwiNjJjYiI6ZnVuY3Rpb24odCxlLG4pe30sNjM1MjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0LGkpe24uZChlLCJDYW52YXNDb250ZXh0IiwoZnVuY3Rpb24oKXtyZXR1cm4gTX0pKSxuLmQoZSwiY3JlYXRlQ2FudmFzQ29udGV4dCIsKGZ1bmN0aW9uKCl7cmV0dXJuIEl9KSksbi5kKGUsImNhbnZhc0dldEltYWdlRGF0YSIsKGZ1bmN0aW9uKCl7cmV0dXJuIFB9KSksbi5kKGUsImNhbnZhc1B1dEltYWdlRGF0YSIsKGZ1bmN0aW9uKCl7cmV0dXJuICR9KSksbi5kKGUsImNhbnZhc1RvVGVtcEZpbGVQYXRoIiwoZnVuY3Rpb24oKXtyZXR1cm4gTH0pKTt2YXIgbz1uKCIzNDBkIiksYT1uKCI3NTUzIikscz1uKCI3NDVhIiksYz1uKCI5MTMxIiksdT1uKCIyZjVjIik7ZnVuY3Rpb24gbCh0KXtyZXR1cm4gbD0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT1yKFN5bWJvbC5pdGVyYXRvcik/ZnVuY3Rpb24odCl7cmV0dXJuIHIodCl9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6cih0KX0sbCh0KX1mdW5jdGlvbiBmKHQpe3JldHVybiB2KHQpfHxwKHQpfHxoKHQpfHxkKCl9ZnVuY3Rpb24gZCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfWZ1bmN0aW9uIGgodCxlKXtpZih0KXtpZigic3RyaW5nIj09PXR5cGVvZiB0KXJldHVybiBnKHQsZSk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKG4pOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/Zyh0LGUpOnZvaWQgMH19ZnVuY3Rpb24gcCh0KXtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QodCkpcmV0dXJuIEFycmF5LmZyb20odCl9ZnVuY3Rpb24gdih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBnKHQpfWZ1bmN0aW9uIGcodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn1mdW5jdGlvbiBtKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gYih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fWZ1bmN0aW9uIHkodCxlLG4pe3JldHVybiBlJiZiKHQucHJvdG90eXBlLGUpLG4mJmIodCxuKSx0fXZhciBfPU9iamVjdChhWyJhIl0pKCJjYW52YXNFdmVudCIpO2Z1bmN0aW9uIHcoZSxuLHIsaSl7dC5wdWJsaXNoSGFuZGxlcihuKyItY2FudmFzLSIrZSx7Y2FudmFzSWQ6ZSx0eXBlOnIsZGF0YTppfSxuKX10LnN1YnNjcmliZSgib25DYW52YXNNZXRob2RDYWxsYmFjayIsKGZ1bmN0aW9uKHQpe3ZhciBlPXQuY2FsbGJhY2tJZCxuPXQuZGF0YSxyPV8ucG9wKGUpO3ImJnIobil9KSk7dmFyIFM9e2FsaWNlYmx1ZToiI2YwZjhmZiIsYW50aXF1ZXdoaXRlOiIjZmFlYmQ3IixhcXVhOiIjMDBmZmZmIixhcXVhbWFyaW5lOiIjN2ZmZmQ0IixhenVyZToiI2YwZmZmZiIsYmVpZ2U6IiNmNWY1ZGMiLGJpc3F1ZToiI2ZmZTRjNCIsYmxhY2s6IiMwMDAwMDAiLGJsYW5jaGVkYWxtb25kOiIjZmZlYmNkIixibHVlOiIjMDAwMGZmIixibHVldmlvbGV0OiIjOGEyYmUyIixicm93bjoiI2E1MmEyYSIsYnVybHl3b29kOiIjZGViODg3IixjYWRldGJsdWU6IiM1ZjllYTAiLGNoYXJ0cmV1c2U6IiM3ZmZmMDAiLGNob2NvbGF0ZToiI2QyNjkxZSIsY29yYWw6IiNmZjdmNTAiLGNvcm5mbG93ZXJibHVlOiIjNjQ5NWVkIixjb3Juc2lsazoiI2ZmZjhkYyIsY3JpbXNvbjoiI2RjMTQzYyIsY3lhbjoiIzAwZmZmZiIsZGFya2JsdWU6IiMwMDAwOGIiLGRhcmtjeWFuOiIjMDA4YjhiIixkYXJrZ29sZGVucm9kOiIjYjg4NjBiIixkYXJrZ3JheToiI2E5YTlhOSIsZGFya2dyZXk6IiNhOWE5YTkiLGRhcmtncmVlbjoiIzAwNjQwMCIsZGFya2toYWtpOiIjYmRiNzZiIixkYXJrbWFnZW50YToiIzhiMDA4YiIsZGFya29saXZlZ3JlZW46IiM1NTZiMmYiLGRhcmtvcmFuZ2U6IiNmZjhjMDAiLGRhcmtvcmNoaWQ6IiM5OTMyY2MiLGRhcmtyZWQ6IiM4YjAwMDAiLGRhcmtzYWxtb246IiNlOTk2N2EiLGRhcmtzZWFncmVlbjoiIzhmYmM4ZiIsZGFya3NsYXRlYmx1ZToiIzQ4M2Q4YiIsZGFya3NsYXRlZ3JheToiIzJmNGY0ZiIsZGFya3NsYXRlZ3JleToiIzJmNGY0ZiIsZGFya3R1cnF1b2lzZToiIzAwY2VkMSIsZGFya3Zpb2xldDoiIzk0MDBkMyIsZGVlcHBpbms6IiNmZjE0OTMiLGRlZXBza3libHVlOiIjMDBiZmZmIixkaW1ncmF5OiIjNjk2OTY5IixkaW1ncmV5OiIjNjk2OTY5Iixkb2RnZXJibHVlOiIjMWU5MGZmIixmaXJlYnJpY2s6IiNiMjIyMjIiLGZsb3JhbHdoaXRlOiIjZmZmYWYwIixmb3Jlc3RncmVlbjoiIzIyOGIyMiIsZnVjaHNpYToiI2ZmMDBmZiIsZ2FpbnNib3JvOiIjZGNkY2RjIixnaG9zdHdoaXRlOiIjZjhmOGZmIixnb2xkOiIjZmZkNzAwIixnb2xkZW5yb2Q6IiNkYWE1MjAiLGdyYXk6IiM4MDgwODAiLGdyZXk6IiM4MDgwODAiLGdyZWVuOiIjMDA4MDAwIixncmVlbnllbGxvdzoiI2FkZmYyZiIsaG9uZXlkZXc6IiNmMGZmZjAiLGhvdHBpbms6IiNmZjY5YjQiLGluZGlhbnJlZDoiI2NkNWM1YyIsaW5kaWdvOiIjNGIwMDgyIixpdm9yeToiI2ZmZmZmMCIsa2hha2k6IiNmMGU2OGMiLGxhdmVuZGVyOiIjZTZlNmZhIixsYXZlbmRlcmJsdXNoOiIjZmZmMGY1IixsYXduZ3JlZW46IiM3Y2ZjMDAiLGxlbW9uY2hpZmZvbjoiI2ZmZmFjZCIsbGlnaHRibHVlOiIjYWRkOGU2IixsaWdodGNvcmFsOiIjZjA4MDgwIixsaWdodGN5YW46IiNlMGZmZmYiLGxpZ2h0Z29sZGVucm9keWVsbG93OiIjZmFmYWQyIixsaWdodGdyYXk6IiNkM2QzZDMiLGxpZ2h0Z3JleToiI2QzZDNkMyIsbGlnaHRncmVlbjoiIzkwZWU5MCIsbGlnaHRwaW5rOiIjZmZiNmMxIixsaWdodHNhbG1vbjoiI2ZmYTA3YSIsbGlnaHRzZWFncmVlbjoiIzIwYjJhYSIsbGlnaHRza3libHVlOiIjODdjZWZhIixsaWdodHNsYXRlZ3JheToiIzc3ODg5OSIsbGlnaHRzbGF0ZWdyZXk6IiM3Nzg4OTkiLGxpZ2h0c3RlZWxibHVlOiIjYjBjNGRlIixsaWdodHllbGxvdzoiI2ZmZmZlMCIsbGltZToiIzAwZmYwMCIsbGltZWdyZWVuOiIjMzJjZDMyIixsaW5lbjoiI2ZhZjBlNiIsbWFnZW50YToiI2ZmMDBmZiIsbWFyb29uOiIjODAwMDAwIixtZWRpdW1hcXVhbWFyaW5lOiIjNjZjZGFhIixtZWRpdW1ibHVlOiIjMDAwMGNkIixtZWRpdW1vcmNoaWQ6IiNiYTU1ZDMiLG1lZGl1bXB1cnBsZToiIzkzNzBkYiIsbWVkaXVtc2VhZ3JlZW46IiMzY2IzNzEiLG1lZGl1bXNsYXRlYmx1ZToiIzdiNjhlZSIsbWVkaXVtc3ByaW5nZ3JlZW46IiMwMGZhOWEiLG1lZGl1bXR1cnF1b2lzZToiIzQ4ZDFjYyIsbWVkaXVtdmlvbGV0cmVkOiIjYzcxNTg1IixtaWRuaWdodGJsdWU6IiMxOTE5NzAiLG1pbnRjcmVhbToiI2Y1ZmZmYSIsbWlzdHlyb3NlOiIjZmZlNGUxIixtb2NjYXNpbjoiI2ZmZTRiNSIsbmF2YWpvd2hpdGU6IiNmZmRlYWQiLG5hdnk6IiMwMDAwODAiLG9sZGxhY2U6IiNmZGY1ZTYiLG9saXZlOiIjODA4MDAwIixvbGl2ZWRyYWI6IiM2YjhlMjMiLG9yYW5nZToiI2ZmYTUwMCIsb3JhbmdlcmVkOiIjZmY0NTAwIixvcmNoaWQ6IiNkYTcwZDYiLHBhbGVnb2xkZW5yb2Q6IiNlZWU4YWEiLHBhbGVncmVlbjoiIzk4ZmI5OCIscGFsZXR1cnF1b2lzZToiI2FmZWVlZSIscGFsZXZpb2xldHJlZDoiI2RiNzA5MyIscGFwYXlhd2hpcDoiI2ZmZWZkNSIscGVhY2hwdWZmOiIjZmZkYWI5IixwZXJ1OiIjY2Q4NTNmIixwaW5rOiIjZmZjMGNiIixwbHVtOiIjZGRhMGRkIixwb3dkZXJibHVlOiIjYjBlMGU2IixwdXJwbGU6IiM4MDAwODAiLHJlYmVjY2FwdXJwbGU6IiM2NjMzOTkiLHJlZDoiI2ZmMDAwMCIscm9zeWJyb3duOiIjYmM4ZjhmIixyb3lhbGJsdWU6IiM0MTY5ZTEiLHNhZGRsZWJyb3duOiIjOGI0NTEzIixzYWxtb246IiNmYTgwNzIiLHNhbmR5YnJvd246IiNmNGE0NjAiLHNlYWdyZWVuOiIjMmU4YjU3IixzZWFzaGVsbDoiI2ZmZjVlZSIsc2llbm5hOiIjYTA1MjJkIixzaWx2ZXI6IiNjMGMwYzAiLHNreWJsdWU6IiM4N2NlZWIiLHNsYXRlYmx1ZToiIzZhNWFjZCIsc2xhdGVncmF5OiIjNzA4MDkwIixzbGF0ZWdyZXk6IiM3MDgwOTAiLHNub3c6IiNmZmZhZmEiLHNwcmluZ2dyZWVuOiIjMDBmZjdmIixzdGVlbGJsdWU6IiM0NjgyYjQiLHRhbjoiI2QyYjQ4YyIsdGVhbDoiIzAwODA4MCIsdGhpc3RsZToiI2Q4YmZkOCIsdG9tYXRvOiIjZmY2MzQ3Iix0dXJxdW9pc2U6IiM0MGUwZDAiLHZpb2xldDoiI2VlODJlZSIsd2hlYXQ6IiNmNWRlYjMiLHdoaXRlOiIjZmZmZmZmIix3aGl0ZXNtb2tlOiIjZjVmNWY1Iix5ZWxsb3c6IiNmZmZmMDAiLHllbGxvd2dyZWVuOiIjOWFjZDMyIix0cmFuc3BhcmVudDoiIzAwMDAwMDAwIn07ZnVuY3Rpb24geCh0KXt0PXR8fCIjMDAwMDAwIjt2YXIgZT1udWxsO2lmKG51bGwhPShlPS9eIyhbMC05fEEtRnxhLWZdezZ9KSQvLmV4ZWModCkpKXt2YXIgbj1wYXJzZUludChlWzFdLnNsaWNlKDAsMiksMTYpLHI9cGFyc2VJbnQoZVsxXS5zbGljZSgyLDQpLDE2KSxhPXBhcnNlSW50KGVbMV0uc2xpY2UoNCksMTYpO3JldHVybltuLHIsYSwyNTVdfWlmKG51bGwhPShlPS9eIyhbMC05fEEtRnxhLWZdezN9KSQvLmV4ZWModCkpKXt2YXIgcz1lWzFdLnNsaWNlKDAsMSksYz1lWzFdLnNsaWNlKDEsMiksdT1lWzFdLnNsaWNlKDIsMyk7cmV0dXJuIHM9cGFyc2VJbnQocytzLDE2KSxjPXBhcnNlSW50KGMrYywxNiksdT1wYXJzZUludCh1K3UsMTYpLFtzLGMsdSwyNTVdfWlmKG51bGwhPShlPS9ecmdiXCgoLispXCkkLy5leGVjKHQpKSlyZXR1cm4gZVsxXS5zcGxpdCgiLCIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWluKDI1NSxwYXJzZUludCh0LnRyaW0oKSkpfSkpLmNvbmNhdCgyNTUpO2lmKG51bGwhPShlPS9ecmdiYVwoKC4rKVwpJC8uZXhlYyh0KSkpcmV0dXJuIGVbMV0uc3BsaXQoIiwiKS5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIDM9PT1lP01hdGguZmxvb3IoMjU1KnBhcnNlRmxvYXQodC50cmltKCkpKTpNYXRoLm1pbigyNTUscGFyc2VJbnQodC50cmltKCkpKX0pKTt2YXIgbD10LnRvTG93ZXJDYXNlKCk7aWYoT2JqZWN0KG9bImkiXSkoUyxsKSl7ZT0vXiMoWzAtOXxBLUZ8YS1mXXs2LDh9KSQvLmV4ZWMoU1tsXSk7dmFyIGY9cGFyc2VJbnQoZVsxXS5zbGljZSgwLDIpLDE2KSxkPXBhcnNlSW50KGVbMV0uc2xpY2UoMiw0KSwxNiksaD1wYXJzZUludChlWzFdLnNsaWNlKDQsNiksMTYpLHA9cGFyc2VJbnQoZVsxXS5zbGljZSg2LDgpLDE2KTtyZXR1cm4gcD1wPj0wP3A6MjU1LFtmLGQsaCxwXX1yZXR1cm4gaS5lcnJvcigidW5zdXBwb3J0ZWQgY29sb3I6Iit0KSxbMCwwLDAsMjU1XX1mdW5jdGlvbiBrKHQsZSl7dGhpcy50eXBlPSJwYXR0ZXJuIix0aGlzLmRhdGE9dCx0aGlzLmNvbG9yU3RvcD1lfXZhciBDPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe20odGhpcyx0KSx0aGlzLnR5cGU9ZSx0aGlzLmRhdGE9bix0aGlzLmNvbG9yU3RvcD1bXX1yZXR1cm4geSh0LFt7a2V5OiJhZGRDb2xvclN0b3AiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5jb2xvclN0b3AucHVzaChbdCx4KGUpXSl9fV0pLHR9KCksVD1bInNjYWxlIiwicm90YXRlIiwidHJhbnNsYXRlIiwic2V0VHJhbnNmb3JtIiwidHJhbnNmb3JtIl0sTz1bImRyYXdJbWFnZSIsImZpbGxUZXh0IiwiZmlsbCIsInN0cm9rZSIsImZpbGxSZWN0Iiwic3Ryb2tlUmVjdCIsImNsZWFyUmVjdCIsInN0cm9rZVRleHQiXSxBPVsic2V0RmlsbFN0eWxlIiwic2V0VGV4dEFsaWduIiwic2V0U3Ryb2tlU3R5bGUiLCJzZXRHbG9iYWxBbHBoYSIsInNldFNoYWRvdyIsInNldEZvbnRTaXplIiwic2V0TGluZUNhcCIsInNldExpbmVKb2luIiwic2V0TGluZVdpZHRoIiwic2V0TWl0ZXJMaW1pdCIsInNldFRleHRCYXNlbGluZSIsInNldExpbmVEYXNoIl07ZnVuY3Rpb24gRSh0LGUpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHI9bi5nZXRDb250ZXh0KCIyZCIpO3JldHVybiByLmZvbnQ9ZSxyLm1lYXN1cmVUZXh0KHQpLndpZHRofHwwfWZ1bmN0aW9uIGoodCl7dGhpcy53aWR0aD10fXZhciBNPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe20odGhpcyx0KSx0aGlzLmlkPWUsdGhpcy5wYWdlSWQ9bix0aGlzLmFjdGlvbnM9W10sdGhpcy5wYXRoPVtdLHRoaXMuc3VicGF0aD1bXSx0aGlzLmN1cnJlbnRUcmFuc2Zvcm09W10sdGhpcy5jdXJyZW50U3RlcEFuaW1hdGVzPVtdLHRoaXMuZHJhd2luZ1N0YXRlPVtdLHRoaXMuc3RhdGU9e2xpbmVEYXNoOlswLDBdLHNoYWRvd09mZnNldFg6MCxzaGFkb3dPZmZzZXRZOjAsc2hhZG93Qmx1cjowLHNoYWRvd0NvbG9yOlswLDAsMCwwXSxmb250OiIxMHB4IHNhbnMtc2VyaWYiLGZvbnRTaXplOjEwLGZvbnRXZWlnaHQ6Im5vcm1hbCIsZm9udFN0eWxlOiJub3JtYWwiLGZvbnRGYW1pbHk6InNhbnMtc2VyaWYifX1yZXR1cm4geSh0LFt7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSxuPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLHI9Zih0aGlzLmFjdGlvbnMpO3RoaXMuYWN0aW9ucz1bXSx0aGlzLnBhdGg9W10sImZ1bmN0aW9uIj09PXR5cGVvZiBuJiYodD1fLnB1c2gobikpLHcodGhpcy5pZCx0aGlzLnBhZ2VJZCwiYWN0aW9uc0NoYW5nZWQiLHthY3Rpb25zOnIscmVzZXJ2ZTplLGNhbGxiYWNrSWQ6dH0pfX0se2tleToiY3JlYXRlTGluZWFyR3JhZGllbnQiLHZhbHVlOmZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiBuZXcgQygibGluZWFyIixbdCxlLG4scl0pfX0se2tleToiY3JlYXRlQ2lyY3VsYXJHcmFkaWVudCIsdmFsdWU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBuZXcgQygicmFkaWFsIixbdCxlLG5dKX19LHtrZXk6ImNyZWF0ZVBhdHRlcm4iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09ZSlpLmVycm9yKCJGYWlsZWQgdG8gZXhlY3V0ZSAnY3JlYXRlUGF0dGVybicgb24gJ0NhbnZhc0NvbnRleHQnOiAyIGFyZ3VtZW50cyByZXF1aXJlZCwgYnV0IG9ubHkgMSBwcmVzZW50LiIpO2Vsc2V7aWYoIShbInJlcGVhdCIsInJlcGVhdC14IiwicmVwZWF0LXkiLCJuby1yZXBlYXQiXS5pbmRleE9mKGUpPDApKXJldHVybiBuZXcgayh0LGUpO2kuZXJyb3IoIkZhaWxlZCB0byBleGVjdXRlICdjcmVhdGVQYXR0ZXJuJyBvbiAnQ2FudmFzQ29udGV4dCc6IFRoZSBwcm92aWRlZCB0eXBlICgnIitlKyInKSBpcyBub3Qgb25lIG9mICdyZXBlYXQnLCAnbm8tcmVwZWF0JywgJ3JlcGVhdC14Jywgb3IgJ3JlcGVhdC15Jy4iKX19fSx7a2V5OiJtZWFzdXJlVGV4dCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zdGF0ZS5mb250LG49MDtyZXR1cm4gbj1FKHQsZSksbmV3IGoobil9fSx7a2V5OiJzYXZlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYWN0aW9ucy5wdXNoKHttZXRob2Q6InNhdmUiLGRhdGE6W119KSx0aGlzLmRyYXdpbmdTdGF0ZS5wdXNoKHRoaXMuc3RhdGUpfX0se2tleToicmVzdG9yZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmFjdGlvbnMucHVzaCh7bWV0aG9kOiJyZXN0b3JlIixkYXRhOltdfSksdGhpcy5zdGF0ZT10aGlzLmRyYXdpbmdTdGF0ZS5wb3AoKXx8e2xpbmVEYXNoOlswLDBdLHNoYWRvd09mZnNldFg6MCxzaGFkb3dPZmZzZXRZOjAsc2hhZG93Qmx1cjowLHNoYWRvd0NvbG9yOlswLDAsMCwwXSxmb250OiIxMHB4IHNhbnMtc2VyaWYiLGZvbnRTaXplOjEwLGZvbnRXZWlnaHQ6Im5vcm1hbCIsZm9udFN0eWxlOiJub3JtYWwiLGZvbnRGYW1pbHk6InNhbnMtc2VyaWYifX19LHtrZXk6ImJlZ2luUGF0aCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnBhdGg9W10sdGhpcy5zdWJwYXRoPVtdLHRoaXMucGF0aC5wdXNoKHttZXRob2Q6ImJlZ2luUGF0aCIsZGF0YTpbXX0pfX0se2tleToibW92ZVRvIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMucGF0aC5wdXNoKHttZXRob2Q6Im1vdmVUbyIsZGF0YTpbdCxlXX0pLHRoaXMuc3VicGF0aD1bW3QsZV1dfX0se2tleToibGluZVRvIix2YWx1ZTpmdW5jdGlvbih0LGUpezA9PT10aGlzLnBhdGgubGVuZ3RoJiYwPT09dGhpcy5zdWJwYXRoLmxlbmd0aD90aGlzLnBhdGgucHVzaCh7bWV0aG9kOiJtb3ZlVG8iLGRhdGE6W3QsZV19KTp0aGlzLnBhdGgucHVzaCh7bWV0aG9kOiJsaW5lVG8iLGRhdGE6W3QsZV19KSx0aGlzLnN1YnBhdGgucHVzaChbdCxlXSl9fSx7a2V5OiJxdWFkcmF0aWNDdXJ2ZVRvIix2YWx1ZTpmdW5jdGlvbih0LGUsbixyKXt0aGlzLnBhdGgucHVzaCh7bWV0aG9kOiJxdWFkcmF0aWNDdXJ2ZVRvIixkYXRhOlt0LGUsbixyXX0pLHRoaXMuc3VicGF0aC5wdXNoKFtuLHJdKX19LHtrZXk6ImJlemllckN1cnZlVG8iLHZhbHVlOmZ1bmN0aW9uKHQsZSxuLHIsaSxvKXt0aGlzLnBhdGgucHVzaCh7bWV0aG9kOiJiZXppZXJDdXJ2ZVRvIixkYXRhOlt0LGUsbixyLGksb119KSx0aGlzLnN1YnBhdGgucHVzaChbaSxvXSl9fSx7a2V5OiJhcmMiLHZhbHVlOmZ1bmN0aW9uKHQsZSxuLHIsaSl7dmFyIG89YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0mJmFyZ3VtZW50c1s1XTt0aGlzLnBhdGgucHVzaCh7bWV0aG9kOiJhcmMiLGRhdGE6W3QsZSxuLHIsaSxvXX0pLHRoaXMuc3VicGF0aC5wdXNoKFt0LGVdKX19LHtrZXk6InJlY3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSxuLHIpe3RoaXMucGF0aC5wdXNoKHttZXRob2Q6InJlY3QiLGRhdGE6W3QsZSxuLHJdfSksdGhpcy5zdWJwYXRoPVtbdCxlXV19fSx7a2V5OiJhcmNUbyIsdmFsdWU6ZnVuY3Rpb24odCxlLG4scixpKXt0aGlzLnBhdGgucHVzaCh7bWV0aG9kOiJhcmNUbyIsZGF0YTpbdCxlLG4scixpXX0pLHRoaXMuc3VicGF0aC5wdXNoKFtuLHJdKX19LHtrZXk6ImNsaXAiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5hY3Rpb25zLnB1c2goe21ldGhvZDoiY2xpcCIsZGF0YTpmKHRoaXMucGF0aCl9KX19LHtrZXk6ImNsb3NlUGF0aCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnBhdGgucHVzaCh7bWV0aG9kOiJjbG9zZVBhdGgiLGRhdGE6W119KSx0aGlzLnN1YnBhdGgubGVuZ3RoJiYodGhpcy5zdWJwYXRoPVt0aGlzLnN1YnBhdGguc2hpZnQoKV0pfX0se2tleToiY2xlYXJBY3Rpb25zIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYWN0aW9ucz1bXSx0aGlzLnBhdGg9W10sdGhpcy5zdWJwYXRoPVtdfX0se2tleToiZ2V0QWN0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1mKHRoaXMuYWN0aW9ucyk7cmV0dXJuIHRoaXMuY2xlYXJBY3Rpb25zKCksdH19LHtrZXk6ImxpbmVEYXNoT2Zmc2V0IixzZXQ6ZnVuY3Rpb24odCl7dGhpcy5hY3Rpb25zLnB1c2goe21ldGhvZDoic2V0TGluZURhc2hPZmZzZXQiLGRhdGE6W3RdfSl9fSx7a2V5OiJnbG9iYWxDb21wb3NpdGVPcGVyYXRpb24iLHNldDpmdW5jdGlvbih0KXt0aGlzLmFjdGlvbnMucHVzaCh7bWV0aG9kOiJzZXRHbG9iYWxDb21wb3NpdGVPcGVyYXRpb24iLGRhdGE6W3RdfSl9fSx7a2V5OiJzaGFkb3dCbHVyIixzZXQ6ZnVuY3Rpb24odCl7dGhpcy5hY3Rpb25zLnB1c2goe21ldGhvZDoic2V0U2hhZG93Qmx1ciIsZGF0YTpbdF19KX19LHtrZXk6InNoYWRvd0NvbG9yIixzZXQ6ZnVuY3Rpb24odCl7dGhpcy5hY3Rpb25zLnB1c2goe21ldGhvZDoic2V0U2hhZG93Q29sb3IiLGRhdGE6W3RdfSl9fSx7a2V5OiJzaGFkb3dPZmZzZXRYIixzZXQ6ZnVuY3Rpb24odCl7dGhpcy5hY3Rpb25zLnB1c2goe21ldGhvZDoic2V0U2hhZG93T2Zmc2V0WCIsZGF0YTpbdF19KX19LHtrZXk6InNoYWRvd09mZnNldFkiLHNldDpmdW5jdGlvbih0KXt0aGlzLmFjdGlvbnMucHVzaCh7bWV0aG9kOiJzZXRTaGFkb3dPZmZzZXRZIixkYXRhOlt0XX0pfX0se2tleToiZm9udCIsc2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5zdGF0ZS5mb250PXQ7dmFyIG49dC5tYXRjaCgvXigoW1x3XC1dK1xzKSopKFxkK3I/cHgpKFwvKFxkK1wuP1xkKihyP3B4KT8pKT9ccysoLiopLyk7aWYobil7dmFyIHI9blsxXS50cmltKCkuc3BsaXQoL1xzLyksbz1wYXJzZUZsb2F0KG5bM10pLGE9bls3XSxzPVtdO3IuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXtbIml0YWxpYyIsIm9ibGlxdWUiLCJub3JtYWwiXS5pbmRleE9mKHQpPi0xPyhzLnB1c2goe21ldGhvZDoic2V0Rm9udFN0eWxlIixkYXRhOlt0XX0pLGUuc3RhdGUuZm9udFN0eWxlPXQpOlsiYm9sZCIsIm5vcm1hbCJdLmluZGV4T2YodCk+LTE/KHMucHVzaCh7bWV0aG9kOiJzZXRGb250V2VpZ2h0IixkYXRhOlt0XX0pLGUuc3RhdGUuZm9udFdlaWdodD10KTowPT09bj8ocy5wdXNoKHttZXRob2Q6InNldEZvbnRTdHlsZSIsZGF0YTpbIm5vcm1hbCJdfSksZS5zdGF0ZS5mb250U3R5bGU9Im5vcm1hbCIpOjE9PT1uJiZjKCl9KSksMT09PXIubGVuZ3RoJiZjKCkscj1zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YVswXX0pKS5qb2luKCIgIiksdGhpcy5zdGF0ZS5mb250U2l6ZT1vLHRoaXMuc3RhdGUuZm9udEZhbWlseT1hLHRoaXMuYWN0aW9ucy5wdXNoKHttZXRob2Q6InNldEZvbnQiLGRhdGE6WyIiLmNvbmNhdChyLCIgIikuY29uY2F0KG8sInB4ICIpLmNvbmNhdChhKV19KX1lbHNlIGkud2FybigiRmFpbGVkIHRvIHNldCAnZm9udCcgb24gJ0NhbnZhc0NvbnRleHQnOiBpbnZhbGlkIGZvcm1hdC4iKTtmdW5jdGlvbiBjKCl7cy5wdXNoKHttZXRob2Q6InNldEZvbnRXZWlnaHQiLGRhdGE6WyJub3JtYWwiXX0pLGUuc3RhdGUuZm9udFdlaWdodD0ibm9ybWFsIn19LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlLmZvbnR9fSx7a2V5OiJmaWxsU3R5bGUiLHNldDpmdW5jdGlvbih0KXt0aGlzLnNldEZpbGxTdHlsZSh0KX19LHtrZXk6InN0cm9rZVN0eWxlIixzZXQ6ZnVuY3Rpb24odCl7dGhpcy5zZXRTdHJva2VTdHlsZSh0KX19LHtrZXk6Imdsb2JhbEFscGhhIixzZXQ6ZnVuY3Rpb24odCl7dD1NYXRoLmZsb29yKDI1NSpwYXJzZUZsb2F0KHQpKSx0aGlzLmFjdGlvbnMucHVzaCh7bWV0aG9kOiJzZXRHbG9iYWxBbHBoYSIsZGF0YTpbdF19KX19LHtrZXk6InRleHRBbGlnbiIsc2V0OmZ1bmN0aW9uKHQpe3RoaXMuYWN0aW9ucy5wdXNoKHttZXRob2Q6InNldFRleHRBbGlnbiIsZGF0YTpbdF19KX19LHtrZXk6ImxpbmVDYXAiLHNldDpmdW5jdGlvbih0KXt0aGlzLmFjdGlvbnMucHVzaCh7bWV0aG9kOiJzZXRMaW5lQ2FwIixkYXRhOlt0XX0pfX0se2tleToibGluZUpvaW4iLHNldDpmdW5jdGlvbih0KXt0aGlzLmFjdGlvbnMucHVzaCh7bWV0aG9kOiJzZXRMaW5lSm9pbiIsZGF0YTpbdF19KX19LHtrZXk6ImxpbmVXaWR0aCIsc2V0OmZ1bmN0aW9uKHQpe3RoaXMuYWN0aW9ucy5wdXNoKHttZXRob2Q6InNldExpbmVXaWR0aCIsZGF0YTpbdF19KX19LHtrZXk6Im1pdGVyTGltaXQiLHNldDpmdW5jdGlvbih0KXt0aGlzLmFjdGlvbnMucHVzaCh7bWV0aG9kOiJzZXRNaXRlckxpbWl0IixkYXRhOlt0XX0pfX0se2tleToidGV4dEJhc2VsaW5lIixzZXQ6ZnVuY3Rpb24odCl7dGhpcy5hY3Rpb25zLnB1c2goe21ldGhvZDoic2V0VGV4dEJhc2VsaW5lIixkYXRhOlt0XX0pfX1dKSx0fSgpO2Z1bmN0aW9uIEkoZSxuKXtpZihuKXJldHVybiBuZXcgTShlLG4uJHBhZ2UuaWQpO3ZhciByPU9iamVjdChzWyJhIl0pKCk7aWYocilyZXR1cm4gbmV3IE0oZSxyKTt0LmVtaXQoIm9uRXJyb3IiLCJjcmVhdGVDYW52YXNDb250ZXh0OmZhaWwiKX1mdW5jdGlvbiBQKHQsZSl7dmFyIG49dC5jYW52YXNJZCxyPXQueCxpPXQueSxvPXQud2lkdGgsYT10LmhlaWdodCx1PU9iamVjdChzWyJhIl0pKCk7aWYodSl7dmFyIGw9Xy5wdXNoKChmdW5jdGlvbih0KXt2YXIgbj10LmRhdGE7biYmbi5sZW5ndGgmJih0LmRhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG4pKSxPYmplY3QoY1siYSJdKShlLHQpfSkpO3cobix1LCJnZXRJbWFnZURhdGEiLHt4OnIseTppLHdpZHRoOm8saGVpZ2h0OmEsY2FsbGJhY2tJZDpsfSl9ZWxzZSBPYmplY3QoY1siYSJdKShlLHtlcnJNc2c6ImNhbnZhc0dldEltYWdlRGF0YTpmYWlsIn0pfWZ1bmN0aW9uICQodCxlKXt2YXIgbj10LmNhbnZhc0lkLHI9dC5kYXRhLGk9dC54LG89dC55LGE9dC53aWR0aCx1PXQuaGVpZ2h0LGw9T2JqZWN0KHNbImEiXSkoKTtpZihsKXt2YXIgZixkPV8ucHVzaCgoZnVuY3Rpb24odCl7T2JqZWN0KGNbImEiXSkoZSx0KX0pKTtyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpLHcobixsLCJwdXRJbWFnZURhdGEiLHtkYXRhOnIseDppLHk6byx3aWR0aDphLGhlaWdodDp1LGNvbXByZXNzZWQ6ZixjYWxsYmFja0lkOmR9KX1lbHNlIE9iamVjdChjWyJhIl0pKGUse2Vyck1zZzoiY2FudmFzUHV0SW1hZ2VEYXRhOmZhaWwifSl9ZnVuY3Rpb24gTCh0LGUpe3ZhciBuPXQueCxyPXZvaWQgMD09PW4/MDpuLGk9dC55LG89dm9pZCAwPT09aT8wOmksYT10LndpZHRoLGw9dC5oZWlnaHQsZj10LmRlc3RXaWR0aCxkPXQuZGVzdEhlaWdodCxoPXQuY2FudmFzSWQscD10LmZpbGVUeXBlLHY9dC5xdWFsaXR5LGc9T2JqZWN0KHNbImEiXSkoKTtpZihnKXt2YXIgbT1fLnB1c2goKGZ1bmN0aW9uKHQpe09iamVjdChjWyJhIl0pKGUsdCl9KSksYj0iIi5jb25jYXQodVsiVEVNUF9QQVRIIl0sIi9jYW52YXMiKTt3KGgsZywidG9UZW1wRmlsZVBhdGgiLHt4OnIseTpvLHdpZHRoOmEsaGVpZ2h0OmwsZGVzdFdpZHRoOmYsZGVzdEhlaWdodDpkLGZpbGVUeXBlOnAscXVhbGl0eTp2LGRpcm5hbWU6YixjYWxsYmFja0lkOm19KX1lbHNlIE9iamVjdChjWyJhIl0pKGUse2Vyck1zZzoiY2FudmFzVG9UZW1wRmlsZVBhdGg6ZmFpbCJ9KX1bXS5jb25jYXQoVCxPKS5mb3JFYWNoKChmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe3N3aXRjaCh0KXtjYXNlImZpbGwiOmNhc2Uic3Ryb2tlIjpyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmFjdGlvbnMucHVzaCh7bWV0aG9kOnQrIlBhdGgiLGRhdGE6Zih0aGlzLnBhdGgpfSl9O2Nhc2UiZmlsbFJlY3QiOnJldHVybiBmdW5jdGlvbih0LGUsbixyKXt0aGlzLmFjdGlvbnMucHVzaCh7bWV0aG9kOiJmaWxsUGF0aCIsZGF0YTpbe21ldGhvZDoicmVjdCIsZGF0YTpbdCxlLG4scl19XX0pfTtjYXNlInN0cm9rZVJlY3QiOnJldHVybiBmdW5jdGlvbih0LGUsbixyKXt0aGlzLmFjdGlvbnMucHVzaCh7bWV0aG9kOiJzdHJva2VQYXRoIixkYXRhOlt7bWV0aG9kOiJyZWN0IixkYXRhOlt0LGUsbixyXX1dfSl9O2Nhc2UiZmlsbFRleHQiOmNhc2Uic3Ryb2tlVGV4dCI6cmV0dXJuIGZ1bmN0aW9uKGUsbixyLGkpe3ZhciBvPVtlLnRvU3RyaW5nKCksbixyXTsibnVtYmVyIj09PXR5cGVvZiBpJiZvLnB1c2goaSksdGhpcy5hY3Rpb25zLnB1c2goe21ldGhvZDp0LGRhdGE6b30pfTtjYXNlImRyYXdJbWFnZSI6cmV0dXJuIGZ1bmN0aW9uKGUsbixyLGksbyxhLHMsYyx1KXt2YXIgbDtmdW5jdGlvbiBmKHQpe3JldHVybiJudW1iZXIiPT09dHlwZW9mIHR9dm9pZCAwPT09dSYmKGE9bixzPXIsYz1pLHU9byxuPXZvaWQgMCxyPXZvaWQgMCxpPXZvaWQgMCxvPXZvaWQgMCksbD1mKG4pJiZmKHIpJiZmKGkpJiZmKG8pP1tlLGEscyxjLHUsbixyLGksb106ZihjKSYmZih1KT9bZSxhLHMsYyx1XTpbZSxhLHNdLHRoaXMuYWN0aW9ucy5wdXNoKHttZXRob2Q6dCxkYXRhOmx9KX07ZGVmYXVsdDpyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyluW3JdPWFyZ3VtZW50c1tyXTt0aGlzLmFjdGlvbnMucHVzaCh7bWV0aG9kOnQsZGF0YTpufSl9fX1NLnByb3RvdHlwZVt0XT1lKHQpfSkpLEEuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXtzd2l0Y2godCl7Y2FzZSJzZXRGaWxsU3R5bGUiOmNhc2Uic2V0U3Ryb2tlU3R5bGUiOnJldHVybiBmdW5jdGlvbihlKXsib2JqZWN0IiE9PWwoZSk/dGhpcy5hY3Rpb25zLnB1c2goe21ldGhvZDp0LGRhdGE6WyJub3JtYWwiLHgoZSldfSk6dGhpcy5hY3Rpb25zLnB1c2goe21ldGhvZDp0LGRhdGE6W2UudHlwZSxlLmRhdGEsZS5jb2xvclN0b3BdfSl9O2Nhc2Uic2V0R2xvYmFsQWxwaGEiOnJldHVybiBmdW5jdGlvbihlKXtlPU1hdGguZmxvb3IoMjU1KnBhcnNlRmxvYXQoZSkpLHRoaXMuYWN0aW9ucy5wdXNoKHttZXRob2Q6dCxkYXRhOltlXX0pfTtjYXNlInNldFNoYWRvdyI6cmV0dXJuIGZ1bmN0aW9uKGUsbixyLGkpe2k9eChpKSx0aGlzLmFjdGlvbnMucHVzaCh7bWV0aG9kOnQsZGF0YTpbZSxuLHIsaV19KSx0aGlzLnN0YXRlLnNoYWRvd0JsdXI9cix0aGlzLnN0YXRlLnNoYWRvd0NvbG9yPWksdGhpcy5zdGF0ZS5zaGFkb3dPZmZzZXRYPWUsdGhpcy5zdGF0ZS5zaGFkb3dPZmZzZXRZPW59O2Nhc2Uic2V0TGluZURhc2giOnJldHVybiBmdW5jdGlvbihlLG4pe2U9ZXx8WzAsMF0sbj1ufHwwLHRoaXMuYWN0aW9ucy5wdXNoKHttZXRob2Q6dCxkYXRhOltlLG5dfSksdGhpcy5zdGF0ZS5saW5lRGFzaD1lfTtjYXNlInNldEZvbnRTaXplIjpyZXR1cm4gZnVuY3Rpb24oZSl7dGhpcy5zdGF0ZS5mb250PXRoaXMuc3RhdGUuZm9udC5yZXBsYWNlKC9cZCtcLj9cZCpweC8sZSsicHgiKSx0aGlzLnN0YXRlLmZvbnRTaXplPWUsdGhpcy5hY3Rpb25zLnB1c2goe21ldGhvZDp0LGRhdGE6W2VdfSl9O2RlZmF1bHQ6cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspbltyXT1hcmd1bWVudHNbcl07dGhpcy5hY3Rpb25zLnB1c2goe21ldGhvZDp0LGRhdGE6bn0pfX19TS5wcm90b3R5cGVbdF09ZSh0KX0pKX0uY2FsbCh0aGlzLG4oIjJjOWYiKSxuKCI0MThiIilbImRlZmF1bHQiXSl9LDYzODM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3ZhciBlPXQucGhvbmVOdW1iZXI7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmPSJ0ZWw6Ii5jb25jYXQoZSkse2Vyck1zZzoibWFrZVBob25lQ2FsbDpvayJ9fW4ucihlKSxuLmQoZSwibWFrZVBob25lQ2FsbCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSl9LCI2M2IxIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbigidW5pLWNhbnZhcyIsdC5fZyh7YXR0cnM6eyJjYW52YXMtaWQiOnQuY2FudmFzSWQsImRpc2FibGUtc2Nyb2xsIjp0LmRpc2FibGVTY3JvbGx9fSx0Ll9saXN0ZW5lcnMpLFtuKCJjYW52YXMiLHtyZWY6ImNhbnZhcyIsYXR0cnM6e3dpZHRoOiIzMDAiLGhlaWdodDoiMTUwIn19KSxuKCJkaXYiLHtzdGF0aWNTdHlsZTp7cG9zaXRpb246ImFic29sdXRlIix0b3A6IjAiLGxlZnQ6IjAiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG92ZXJmbG93OiJoaWRkZW4ifX0sW3QuX3QoImRlZmF1bHQiKV0sMiksbigidi11bmktcmVzaXplLXNlbnNvciIse3JlZjoic2Vuc29yIixvbjp7cmVzaXplOnQuX3Jlc2l6ZX19KV0sMSl9LGk9W10sbz1uKCI0NzA1IiksYT1vWyJhIl0scz0obigiZWJjNSIpLG4oIjg4NDQiKSksYz1PYmplY3Qoc1siYSJdKShhLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPWMuZXhwb3J0c30sIjY1NWQiOmZ1bmN0aW9uKHQsZSxuKXt9LDY1NjQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZnVuY3Rpb24odCl7dmFyIHI7ZnVuY3Rpb24gaSh0KXtyPXR9ZnVuY3Rpb24gbygpe3ImJnQuZW1pdChyKyIuc3RvcFB1bGxEb3duUmVmcmVzaCIse30scik7dmFyIGU9Z2V0Q3VycmVudFBhZ2VzKCk7cmV0dXJuIGUubGVuZ3RoJiYocj1lW2UubGVuZ3RoLTFdLiRwYWdlLmlkLHQuZW1pdChyKyIuc3RhcnRQdWxsRG93blJlZnJlc2giLHt9LHIpKSx7fX1mdW5jdGlvbiBhKCl7aWYocil0LmVtaXQocisiLnN0b3BQdWxsRG93blJlZnJlc2giLHt9LHIpLHI9bnVsbDtlbHNle3ZhciBlPWdldEN1cnJlbnRQYWdlcygpO2UubGVuZ3RoJiYocj1lW2UubGVuZ3RoLTFdLiRwYWdlLmlkLHQuZW1pdChyKyIuc3RvcFB1bGxEb3duUmVmcmVzaCIse30scikpfXJldHVybnt9fW4uZChlLCJzZXRQdWxsRG93blJlZnJlc2hQYWdlSWQiLChmdW5jdGlvbigpe3JldHVybiBpfSkpLG4uZChlLCJzdGFydFB1bGxEb3duUmVmcmVzaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSksbi5kKGUsInN0b3BQdWxsRG93blJlZnJlc2giLChmdW5jdGlvbigpe3JldHVybiBhfSkpfS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sIjY1Y2QiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe24uZChlLCJzaG93TW9kYWwiLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZChlLCJzaG93VG9hc3QiLChmdW5jdGlvbigpe3JldHVybiBzfSkpLG4uZChlLCJoaWRlVG9hc3QiLChmdW5jdGlvbigpe3JldHVybiBjfSkpLG4uZChlLCJzaG93TG9hZGluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSksbi5kKGUsImhpZGVMb2FkaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKSxuLmQoZSwic2hvd0FjdGlvblNoZWV0IiwoZnVuY3Rpb24oKXtyZXR1cm4gZn0pKTt2YXIgcj10LGk9ci5lbWl0LG89ci5pbnZva2VDYWxsYmFja0hhbmRsZXI7ZnVuY3Rpb24gYSh0LGUpe2koIm9uU2hvd01vZGFsIix0LChmdW5jdGlvbih0KXtvKGUsdCl9KSl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gaSgib25TaG93VG9hc3QiLHQpLHt9fWZ1bmN0aW9uIGMoKXtyZXR1cm4gaSgib25IaWRlVG9hc3QiKSx7fX1mdW5jdGlvbiB1KHQpe3JldHVybiBpKCJvblNob3dMb2FkaW5nIix0KSx7fX1mdW5jdGlvbiBsKCl7cmV0dXJuIGkoIm9uSGlkZUxvYWRpbmciKSx7fX1mdW5jdGlvbiBmKHQsZSl7aSgib25TaG93QWN0aW9uU2hlZXQiLHQsKGZ1bmN0aW9uKHQpe28oZSwtMT09PXQ/e2Vyck1zZzoic2hvd0FjdGlvblNoZWV0OmZhaWwgY2FuY2VsIn06e3RhcEluZGV4OnR9KX0pKX19LmNhbGwodGhpcyxuKCIyYzlmIikpfSwiNjVjZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInVuaS1tb3ZhYmxlLXZpZXciLHQuX2coe30sdC4kbGlzdGVuZXJzKSxbbigidi11bmktcmVzaXplLXNlbnNvciIse29uOntyZXNpemU6dC5zZXRQYXJlbnR9fSksdC5fdCgiZGVmYXVsdCIpXSwyKX0saT1bXSxvPW4oIjM5YmQiKTtmdW5jdGlvbiBhKHQsZSxuKXtyZXR1cm4gdD5lLW4mJnQ8ZStufWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gYSh0LDAsZSl9ZnVuY3Rpb24gYygpe31mdW5jdGlvbiB1KHQsZSl7dGhpcy5fbT10LHRoaXMuX2Y9MWUzKmUsdGhpcy5fc3RhcnRUaW1lPTAsdGhpcy5fdj0wfWZ1bmN0aW9uIGwodCxlLG4pe3RoaXMuX209dCx0aGlzLl9rPWUsdGhpcy5fYz1uLHRoaXMuX3NvbHV0aW9uPW51bGwsdGhpcy5fZW5kUG9zaXRpb249MCx0aGlzLl9zdGFydFRpbWU9MH1mdW5jdGlvbiBmKHQsZSxuKXt0aGlzLl9zcHJpbmdYPW5ldyBsKHQsZSxuKSx0aGlzLl9zcHJpbmdZPW5ldyBsKHQsZSxuKSx0aGlzLl9zcHJpbmdTY2FsZT1uZXcgbCh0LGUsbiksdGhpcy5fc3RhcnRUaW1lPTB9Yy5wcm90b3R5cGUueD1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zcXJ0KHQpfSx1LnByb3RvdHlwZS5zZXRWPWZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5wb3coTWF0aC5wb3codCwyKStNYXRoLnBvdyhlLDIpLC41KTt0aGlzLl94X3Y9dCx0aGlzLl95X3Y9ZSx0aGlzLl94X2E9LXRoaXMuX2YqdGhpcy5feF92L24sdGhpcy5feV9hPS10aGlzLl9mKnRoaXMuX3lfdi9uLHRoaXMuX3Q9TWF0aC5hYnModC90aGlzLl94X2EpfHxNYXRoLmFicyhlL3RoaXMuX3lfYSksdGhpcy5fbGFzdER0PW51bGwsdGhpcy5fc3RhcnRUaW1lPShuZXcgRGF0ZSkuZ2V0VGltZSgpfSx1LnByb3RvdHlwZS5zZXRTPWZ1bmN0aW9uKHQsZSl7dGhpcy5feF9zPXQsdGhpcy5feV9zPWV9LHUucHJvdG90eXBlLnM9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9KChuZXcgRGF0ZSkuZ2V0VGltZSgpLXRoaXMuX3N0YXJ0VGltZSkvMWUzKSx0PnRoaXMuX3QmJih0PXRoaXMuX3QsdGhpcy5fbGFzdER0PXQpO3ZhciBlPXRoaXMuX3hfdip0Ky41KnRoaXMuX3hfYSpNYXRoLnBvdyh0LDIpK3RoaXMuX3hfcyxuPXRoaXMuX3lfdip0Ky41KnRoaXMuX3lfYSpNYXRoLnBvdyh0LDIpK3RoaXMuX3lfcztyZXR1cm4odGhpcy5feF9hPjAmJmU8dGhpcy5fZW5kUG9zaXRpb25YfHx0aGlzLl94X2E8MCYmZT50aGlzLl9lbmRQb3NpdGlvblgpJiYoZT10aGlzLl9lbmRQb3NpdGlvblgpLCh0aGlzLl95X2E+MCYmbjx0aGlzLl9lbmRQb3NpdGlvbll8fHRoaXMuX3lfYTwwJiZuPnRoaXMuX2VuZFBvc2l0aW9uWSkmJihuPXRoaXMuX2VuZFBvc2l0aW9uWSkse3g6ZSx5Om59fSx1LnByb3RvdHlwZS5kcz1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9KChuZXcgRGF0ZSkuZ2V0VGltZSgpLXRoaXMuX3N0YXJ0VGltZSkvMWUzKSx0PnRoaXMuX3QmJih0PXRoaXMuX3QpLHtkeDp0aGlzLl94X3YrdGhpcy5feF9hKnQsZHk6dGhpcy5feV92K3RoaXMuX3lfYSp0fX0sdS5wcm90b3R5cGUuZGVsdGE9ZnVuY3Rpb24oKXtyZXR1cm57eDotMS41Kk1hdGgucG93KHRoaXMuX3hfdiwyKS90aGlzLl94X2F8fDAseTotMS41Kk1hdGgucG93KHRoaXMuX3lfdiwyKS90aGlzLl95X2F8fDB9fSx1LnByb3RvdHlwZS5kdD1mdW5jdGlvbigpe3JldHVybi10aGlzLl94X3YvdGhpcy5feF9hfSx1LnByb3RvdHlwZS5kb25lPWZ1bmN0aW9uKCl7dmFyIHQ9YSh0aGlzLnMoKS54LHRoaXMuX2VuZFBvc2l0aW9uWCl8fGEodGhpcy5zKCkueSx0aGlzLl9lbmRQb3NpdGlvblkpfHx0aGlzLl9sYXN0RHQ9PT10aGlzLl90O3JldHVybiB0aGlzLl9sYXN0RHQ9bnVsbCx0fSx1LnByb3RvdHlwZS5zZXRFbmQ9ZnVuY3Rpb24odCxlKXt0aGlzLl9lbmRQb3NpdGlvblg9dCx0aGlzLl9lbmRQb3NpdGlvblk9ZX0sdS5wcm90b3R5cGUucmVjb25maWd1cmU9ZnVuY3Rpb24odCxlKXt0aGlzLl9tPXQsdGhpcy5fZj0xZTMqZX0sbC5wcm90b3R5cGUuX3NvbHZlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fYyxyPXRoaXMuX20saT10aGlzLl9rLG89bipuLTQqcippO2lmKDA9PT1vKXt2YXIgYT0tbi8oMipyKSxzPXQsYz1lLyhhKnQpO3JldHVybnt4OmZ1bmN0aW9uKHQpe3JldHVybihzK2MqdCkqTWF0aC5wb3coTWF0aC5FLGEqdCl9LGR4OmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgucG93KE1hdGguRSxhKnQpO3JldHVybiBhKihzK2MqdCkqZStjKmV9fX1pZihvPjApe3ZhciB1PSgtbi1NYXRoLnNxcnQobykpLygyKnIpLGw9KC1uK01hdGguc3FydChvKSkvKDIqciksZj0oZS11KnQpLyhsLXUpLGQ9dC1mO3JldHVybnt4OmZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIHQ9PT10aGlzLl90JiYoZT10aGlzLl9wb3dFUjFULG49dGhpcy5fcG93RVIyVCksdGhpcy5fdD10LGV8fChlPXRoaXMuX3Bvd0VSMVQ9TWF0aC5wb3coTWF0aC5FLHUqdCkpLG58fChuPXRoaXMuX3Bvd0VSMlQ9TWF0aC5wb3coTWF0aC5FLGwqdCkpLGQqZStmKm59LGR4OmZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIHQ9PT10aGlzLl90JiYoZT10aGlzLl9wb3dFUjFULG49dGhpcy5fcG93RVIyVCksdGhpcy5fdD10LGV8fChlPXRoaXMuX3Bvd0VSMVQ9TWF0aC5wb3coTWF0aC5FLHUqdCkpLG58fChuPXRoaXMuX3Bvd0VSMlQ9TWF0aC5wb3coTWF0aC5FLGwqdCkpLGQqdSplK2YqbCpufX19dmFyIGg9TWF0aC5zcXJ0KDQqcippLW4qbikvKDIqcikscD0tbi8yKnIsdj10LGc9KGUtcCp0KS9oO3JldHVybnt4OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdyhNYXRoLkUscCp0KSoodipNYXRoLmNvcyhoKnQpK2cqTWF0aC5zaW4oaCp0KSl9LGR4OmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgucG93KE1hdGguRSxwKnQpLG49TWF0aC5jb3MoaCp0KSxyPU1hdGguc2luKGgqdCk7cmV0dXJuIGUqKGcqaCpuLXYqaCpyKStwKmUqKGcqcit2Km4pfX19LGwucHJvdG90eXBlLng9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSgobmV3IERhdGUpLmdldFRpbWUoKS10aGlzLl9zdGFydFRpbWUpLzFlMyksdGhpcy5fc29sdXRpb24/dGhpcy5fZW5kUG9zaXRpb24rdGhpcy5fc29sdXRpb24ueCh0KTowfSxsLnByb3RvdHlwZS5keD1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9KChuZXcgRGF0ZSkuZ2V0VGltZSgpLXRoaXMuX3N0YXJ0VGltZSkvMWUzKSx0aGlzLl9zb2x1dGlvbj90aGlzLl9zb2x1dGlvbi5keCh0KTowfSxsLnByb3RvdHlwZS5zZXRFbmQ9ZnVuY3Rpb24odCxlLG4pe2lmKG58fChuPShuZXcgRGF0ZSkuZ2V0VGltZSgpKSx0IT09dGhpcy5fZW5kUG9zaXRpb258fCFzKGUsLjEpKXtlPWV8fDA7dmFyIHI9dGhpcy5fZW5kUG9zaXRpb247dGhpcy5fc29sdXRpb24mJihzKGUsLjEpJiYoZT10aGlzLl9zb2x1dGlvbi5keCgobi10aGlzLl9zdGFydFRpbWUpLzFlMykpLHI9dGhpcy5fc29sdXRpb24ueCgobi10aGlzLl9zdGFydFRpbWUpLzFlMykscyhlLC4xKSYmKGU9MCkscyhyLC4xKSYmKHI9MCkscis9dGhpcy5fZW5kUG9zaXRpb24pLHRoaXMuX3NvbHV0aW9uJiZzKHItdCwuMSkmJnMoZSwuMSl8fCh0aGlzLl9lbmRQb3NpdGlvbj10LHRoaXMuX3NvbHV0aW9uPXRoaXMuX3NvbHZlKHItdGhpcy5fZW5kUG9zaXRpb24sZSksdGhpcy5fc3RhcnRUaW1lPW4pfX0sbC5wcm90b3R5cGUuc25hcD1mdW5jdGlvbih0KXt0aGlzLl9zdGFydFRpbWU9KG5ldyBEYXRlKS5nZXRUaW1lKCksdGhpcy5fZW5kUG9zaXRpb249dCx0aGlzLl9zb2x1dGlvbj17eDpmdW5jdGlvbigpe3JldHVybiAwfSxkeDpmdW5jdGlvbigpe3JldHVybiAwfX19LGwucHJvdG90eXBlLmRvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIHR8fCh0PShuZXcgRGF0ZSkuZ2V0VGltZSgpKSxhKHRoaXMueCgpLHRoaXMuX2VuZFBvc2l0aW9uLC4xKSYmcyh0aGlzLmR4KCksLjEpfSxsLnByb3RvdHlwZS5yZWNvbmZpZ3VyZT1mdW5jdGlvbih0LGUsbil7dGhpcy5fbT10LHRoaXMuX2s9ZSx0aGlzLl9jPW4sdGhpcy5kb25lKCl8fCh0aGlzLl9zb2x1dGlvbj10aGlzLl9zb2x2ZSh0aGlzLngoKS10aGlzLl9lbmRQb3NpdGlvbix0aGlzLmR4KCkpLHRoaXMuX3N0YXJ0VGltZT0obmV3IERhdGUpLmdldFRpbWUoKSl9LGwucHJvdG90eXBlLnNwcmluZ0NvbnN0YW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2t9LGwucHJvdG90eXBlLmRhbXBpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY30sbC5wcm90b3R5cGUuY29uZmlndXJhdGlvbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0LnJlY29uZmlndXJlKDEsZSx0LmRhbXBpbmcoKSl9ZnVuY3Rpb24gZSh0LGUpe3QucmVjb25maWd1cmUoMSx0LnNwcmluZ0NvbnN0YW50KCksZSl9cmV0dXJuW3tsYWJlbDoiU3ByaW5nIENvbnN0YW50IixyZWFkOnRoaXMuc3ByaW5nQ29uc3RhbnQuYmluZCh0aGlzKSx3cml0ZTp0LmJpbmQodGhpcyx0aGlzKSxtaW46MTAwLG1heDoxZTN9LHtsYWJlbDoiRGFtcGluZyIscmVhZDp0aGlzLmRhbXBpbmcuYmluZCh0aGlzKSx3cml0ZTplLmJpbmQodGhpcyx0aGlzKSxtaW46MSxtYXg6NTAwfV19LGYucHJvdG90eXBlLnNldEVuZD1mdW5jdGlvbih0LGUsbixyKXt2YXIgaT0obmV3IERhdGUpLmdldFRpbWUoKTt0aGlzLl9zcHJpbmdYLnNldEVuZCh0LHIsaSksdGhpcy5fc3ByaW5nWS5zZXRFbmQoZSxyLGkpLHRoaXMuX3NwcmluZ1NjYWxlLnNldEVuZChuLHIsaSksdGhpcy5fc3RhcnRUaW1lPWl9LGYucHJvdG90eXBlLng9ZnVuY3Rpb24oKXt2YXIgdD0oKG5ldyBEYXRlKS5nZXRUaW1lKCktdGhpcy5fc3RhcnRUaW1lKS8xZTM7cmV0dXJue3g6dGhpcy5fc3ByaW5nWC54KHQpLHk6dGhpcy5fc3ByaW5nWS54KHQpLHNjYWxlOnRoaXMuX3NwcmluZ1NjYWxlLngodCl9fSxmLnByb3RvdHlwZS5kb25lPWZ1bmN0aW9uKCl7dmFyIHQ9KG5ldyBEYXRlKS5nZXRUaW1lKCk7cmV0dXJuIHRoaXMuX3NwcmluZ1guZG9uZSh0KSYmdGhpcy5fc3ByaW5nWS5kb25lKHQpJiZ0aGlzLl9zcHJpbmdTY2FsZS5kb25lKHQpfSxmLnByb3RvdHlwZS5yZWNvbmZpZ3VyZT1mdW5jdGlvbih0LGUsbil7dGhpcy5fc3ByaW5nWC5yZWNvbmZpZ3VyZSh0LGUsbiksdGhpcy5fc3ByaW5nWS5yZWNvbmZpZ3VyZSh0LGUsbiksdGhpcy5fc3ByaW5nU2NhbGUucmVjb25maWd1cmUodCxlLG4pfTt2YXIgZD1uKCI2Zjc1IiksaD0hMTtmdW5jdGlvbiBwKHQpe2h8fChoPSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXt0KCksaD0hMX0pKSl9ZnVuY3Rpb24gdih0LGUpe2lmKHQ9PT1lKXJldHVybiAwO3ZhciBuPXQub2Zmc2V0TGVmdDtyZXR1cm4gdC5vZmZzZXRQYXJlbnQ/bis9dih0Lm9mZnNldFBhcmVudCxlKTowfWZ1bmN0aW9uIGcodCxlKXtpZih0PT09ZSlyZXR1cm4gMDt2YXIgbj10Lm9mZnNldFRvcDtyZXR1cm4gdC5vZmZzZXRQYXJlbnQ/bis9Zyh0Lm9mZnNldFBhcmVudCxlKTowfWZ1bmN0aW9uIG0odCxlKXtyZXR1cm4rKCgxZTMqdC0xZTMqZSkvMWUzKS50b0ZpeGVkKDEpfWZ1bmN0aW9uIGIodCxlLG4pe3ZhciByPWZ1bmN0aW9uKHQpe3QmJnQuaWQmJmNhbmNlbEFuaW1hdGlvbkZyYW1lKHQuaWQpLHQmJih0LmNhbmNlbGxlZD0hMCl9LGk9e2lkOjAsY2FuY2VsbGVkOiExfTtmdW5jdGlvbiBvKGUsbixyLGkpe2lmKCFlfHwhZS5jYW5jZWxsZWQpe3Iobik7dmFyIGE9dC5kb25lKCk7YXx8ZS5jYW5jZWxsZWR8fChlLmlkPXJlcXVlc3RBbmltYXRpb25GcmFtZShvLmJpbmQobnVsbCxlLG4scixpKSkpLGEmJmkmJmkobil9fXJldHVybiBvKGksdCxlLG4pLHtjYW5jZWw6ci5iaW5kKG51bGwsaSksbW9kZWw6dH19dmFyIHk9e25hbWU6Ik1vdmFibGVWaWV3IixtaXhpbnM6W29bImEiXV0scHJvcHM6e2RpcmVjdGlvbjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoibm9uZSJ9LGluZXJ0aWE6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxvdXRPZkJvdW5kczp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LHg6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MH0seTp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDowfSxkYW1waW5nOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjIwfSxmcmljdGlvbjp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDoyfSxkaXNhYmxlZDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LHNjYWxlOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sc2NhbGVNaW46e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6LjF9LHNjYWxlTWF4Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjEwfSxzY2FsZVZhbHVlOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjF9LGFuaW1hdGlvbjp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITB9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3hTeW5jOnRoaXMuX2dldFB4KHRoaXMueCkseVN5bmM6dGhpcy5fZ2V0UHgodGhpcy55KSxzY2FsZVZhbHVlU3luYzpOdW1iZXIodGhpcy5zY2FsZVZhbHVlKXx8MSx3aWR0aDowLGhlaWdodDowLG1pblg6MCxtaW5ZOjAsbWF4WDowLG1heFk6MH19LGNvbXB1dGVkOntkYW1waW5nTnVtYmVyOmZ1bmN0aW9uKCl7dmFyIHQ9TnVtYmVyKHRoaXMuZGFtcGluZyk7cmV0dXJuIGlzTmFOKHQpPzIwOnR9LGZyaWN0aW9uTnVtYmVyOmZ1bmN0aW9uKCl7dmFyIHQ9TnVtYmVyKHRoaXMuZnJpY3Rpb24pO3JldHVybiBpc05hTih0KXx8dDw9MD8yOnR9LHNjYWxlTWluTnVtYmVyOmZ1bmN0aW9uKCl7dmFyIHQ9TnVtYmVyKHRoaXMuc2NhbGVNaW4pO3JldHVybiBpc05hTih0KT8uMTp0fSxzY2FsZU1heE51bWJlcjpmdW5jdGlvbigpe3ZhciB0PU51bWJlcih0aGlzLnNjYWxlTWF4KTtyZXR1cm4gaXNOYU4odCk/MTA6dH0seE1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4iYWxsIj09PXRoaXMuZGlyZWN0aW9ufHwiaG9yaXpvbnRhbCI9PT10aGlzLmRpcmVjdGlvbn0seU1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4iYWxsIj09PXRoaXMuZGlyZWN0aW9ufHwidmVydGljYWwiPT09dGhpcy5kaXJlY3Rpb259fSx3YXRjaDp7eDpmdW5jdGlvbih0KXt0aGlzLnhTeW5jPXRoaXMuX2dldFB4KHQpfSx4U3luYzpmdW5jdGlvbih0KXt0aGlzLl9zZXRYKHQpfSx5OmZ1bmN0aW9uKHQpe3RoaXMueVN5bmM9dGhpcy5fZ2V0UHgodCl9LHlTeW5jOmZ1bmN0aW9uKHQpe3RoaXMuX3NldFkodCl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7dGhpcy5fX2hhbmRsZVRvdWNoU3RhcnQoKX0sc2NhbGVWYWx1ZTpmdW5jdGlvbih0KXt0aGlzLnNjYWxlVmFsdWVTeW5jPU51bWJlcih0KXx8MH0sc2NhbGVWYWx1ZVN5bmM6ZnVuY3Rpb24odCl7dGhpcy5fc2V0U2NhbGVWYWx1ZSh0KX0sc2NhbGVNaW5OdW1iZXI6ZnVuY3Rpb24oKXt0aGlzLl9zZXRTY2FsZU1pbk9yTWF4KCl9LHNjYWxlTWF4TnVtYmVyOmZ1bmN0aW9uKCl7dGhpcy5fc2V0U2NhbGVNaW5Pck1heCgpfX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX29mZnNldD17eDowLHk6MH0sdGhpcy5fc2NhbGVPZmZzZXQ9e3g6MCx5OjB9LHRoaXMuX3RyYW5zbGF0ZVg9MCx0aGlzLl90cmFuc2xhdGVZPTAsdGhpcy5fc2NhbGU9MSx0aGlzLl9vbGRTY2FsZT0xLHRoaXMuX1NURD1uZXcgZigxLDkqTWF0aC5wb3codGhpcy5kYW1waW5nTnVtYmVyLDIpLzQwLHRoaXMuZGFtcGluZ051bWJlciksdGhpcy5fZnJpY3Rpb249bmV3IHUoMSx0aGlzLmZyaWN0aW9uTnVtYmVyKSx0aGlzLl9kZWNsaW5lWD1uZXcgYyx0aGlzLl9kZWNsaW5lWT1uZXcgYyx0aGlzLl9fdG91Y2hJbmZvPXtoaXN0b3J5WDpbMCwwXSxoaXN0b3J5WTpbMCwwXSxoaXN0b3J5VDpbMCwwXX19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt0aGlzLnRvdWNodHJhY2sodGhpcy4kZWwsIl9vblRyYWNrIiksdGhpcy5zZXRQYXJlbnQoKSx0aGlzLl9mcmljdGlvbi5yZWNvbmZpZ3VyZSgxLHRoaXMuZnJpY3Rpb25OdW1iZXIpLHRoaXMuX1NURC5yZWNvbmZpZ3VyZSgxLDkqTWF0aC5wb3codGhpcy5kYW1waW5nTnVtYmVyLDIpLzQwLHRoaXMuZGFtcGluZ051bWJlciksdGhpcy4kZWwuc3R5bGUudHJhbnNmb3JtT3JpZ2luPSJjZW50ZXIiLE9iamVjdChkWyJiIl0pKCl9LG1ldGhvZHM6e19nZXRQeDpmdW5jdGlvbih0KXtyZXR1cm4vXGQrW3VyXXB4JC9pLnRlc3QodCk/dW5pLnVweDJweChwYXJzZUZsb2F0KHQpKTpOdW1iZXIodCl8fDB9LF9zZXRYOmZ1bmN0aW9uKHQpe2lmKHRoaXMueE1vdmUpe2lmKHQrdGhpcy5fc2NhbGVPZmZzZXQueD09PXRoaXMuX3RyYW5zbGF0ZVgpcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVg7dGhpcy5fU0ZBJiZ0aGlzLl9TRkEuY2FuY2VsKCksdGhpcy5fYW5pbWF0aW9uVG8odCt0aGlzLl9zY2FsZU9mZnNldC54LHRoaXMueVN5bmMrdGhpcy5fc2NhbGVPZmZzZXQueSx0aGlzLl9zY2FsZSl9cmV0dXJuIHR9LF9zZXRZOmZ1bmN0aW9uKHQpe2lmKHRoaXMueU1vdmUpe2lmKHQrdGhpcy5fc2NhbGVPZmZzZXQueT09PXRoaXMuX3RyYW5zbGF0ZVkpcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVk7dGhpcy5fU0ZBJiZ0aGlzLl9TRkEuY2FuY2VsKCksdGhpcy5fYW5pbWF0aW9uVG8odGhpcy54U3luYyt0aGlzLl9zY2FsZU9mZnNldC54LHQrdGhpcy5fc2NhbGVPZmZzZXQueSx0aGlzLl9zY2FsZSl9cmV0dXJuIHR9LF9zZXRTY2FsZU1pbk9yTWF4OmZ1bmN0aW9uKCl7aWYoIXRoaXMuc2NhbGUpcmV0dXJuITE7dGhpcy5fdXBkYXRlU2NhbGUodGhpcy5fc2NhbGUsITApLHRoaXMuX3VwZGF0ZU9sZFNjYWxlKHRoaXMuX3NjYWxlKX0sX3NldFNjYWxlVmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuISF0aGlzLnNjYWxlJiYodD10aGlzLl9hZGp1c3RTY2FsZSh0KSx0aGlzLl91cGRhdGVTY2FsZSh0LCEwKSx0aGlzLl91cGRhdGVPbGRTY2FsZSh0KSx0KX0sX19oYW5kbGVUb3VjaFN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5faXNTY2FsaW5nfHx0aGlzLmRpc2FibGVkfHwoT2JqZWN0KGRbImEiXSkoe2Rpc2FibGU6ITB9KSx0aGlzLl9GQSYmdGhpcy5fRkEuY2FuY2VsKCksdGhpcy5fU0ZBJiZ0aGlzLl9TRkEuY2FuY2VsKCksdGhpcy5fX3RvdWNoSW5mby5oaXN0b3J5WD1bMCwwXSx0aGlzLl9fdG91Y2hJbmZvLmhpc3RvcnlZPVswLDBdLHRoaXMuX190b3VjaEluZm8uaGlzdG9yeVQ9WzAsMF0sdGhpcy54TW92ZSYmKHRoaXMuX19iYXNlWD10aGlzLl90cmFuc2xhdGVYKSx0aGlzLnlNb3ZlJiYodGhpcy5fX2Jhc2VZPXRoaXMuX3RyYW5zbGF0ZVkpLHRoaXMuJGVsLnN0eWxlLndpbGxDaGFuZ2U9InRyYW5zZm9ybSIsdGhpcy5fY2hlY2tDYW5Nb3ZlPW51bGwsdGhpcy5fZmlyc3RNb3ZlRGlyZWN0aW9uPW51bGwsdGhpcy5faXNUb3VjaGluZz0hMCl9LF9faGFuZGxlVG91Y2hNb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoIXRoaXMuX2lzU2NhbGluZyYmIXRoaXMuZGlzYWJsZWQmJnRoaXMuX2lzVG91Y2hpbmcpe3ZhciBuPXRoaXMuX3RyYW5zbGF0ZVgscj10aGlzLl90cmFuc2xhdGVZO2lmKG51bGw9PT10aGlzLl9maXJzdE1vdmVEaXJlY3Rpb24mJih0aGlzLl9maXJzdE1vdmVEaXJlY3Rpb249TWF0aC5hYnModC5kZXRhaWwuZHgvdC5kZXRhaWwuZHkpPjE/Imh0b3VjaG1vdmUiOiJ2dG91Y2htb3ZlIiksdGhpcy54TW92ZSYmKG49dC5kZXRhaWwuZHgrdGhpcy5fX2Jhc2VYLHRoaXMuX190b3VjaEluZm8uaGlzdG9yeVguc2hpZnQoKSx0aGlzLl9fdG91Y2hJbmZvLmhpc3RvcnlYLnB1c2gobiksdGhpcy55TW92ZXx8bnVsbCE9PXRoaXMuX2NoZWNrQ2FuTW92ZXx8KHRoaXMuX2NoZWNrQ2FuTW92ZT1NYXRoLmFicyh0LmRldGFpbC5keC90LmRldGFpbC5keSk8MSkpLHRoaXMueU1vdmUmJihyPXQuZGV0YWlsLmR5K3RoaXMuX19iYXNlWSx0aGlzLl9fdG91Y2hJbmZvLmhpc3RvcnlZLnNoaWZ0KCksdGhpcy5fX3RvdWNoSW5mby5oaXN0b3J5WS5wdXNoKHIpLHRoaXMueE1vdmV8fG51bGwhPT10aGlzLl9jaGVja0Nhbk1vdmV8fCh0aGlzLl9jaGVja0Nhbk1vdmU9TWF0aC5hYnModC5kZXRhaWwuZHkvdC5kZXRhaWwuZHgpPDEpKSx0aGlzLl9fdG91Y2hJbmZvLmhpc3RvcnlULnNoaWZ0KCksdGhpcy5fX3RvdWNoSW5mby5oaXN0b3J5VC5wdXNoKHQuZGV0YWlsLnRpbWVTdGFtcCksIXRoaXMuX2NoZWNrQ2FuTW92ZSl7dC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBpPSJ0b3VjaCI7bjx0aGlzLm1pblg/dGhpcy5vdXRPZkJvdW5kcz8oaT0idG91Y2gtb3V0LW9mLWJvdW5kcyIsbj10aGlzLm1pblgtdGhpcy5fZGVjbGluZVgueCh0aGlzLm1pblgtbikpOm49dGhpcy5taW5YOm4+dGhpcy5tYXhYJiYodGhpcy5vdXRPZkJvdW5kcz8oaT0idG91Y2gtb3V0LW9mLWJvdW5kcyIsbj10aGlzLm1heFgrdGhpcy5fZGVjbGluZVgueChuLXRoaXMubWF4WCkpOm49dGhpcy5tYXhYKSxyPHRoaXMubWluWT90aGlzLm91dE9mQm91bmRzPyhpPSJ0b3VjaC1vdXQtb2YtYm91bmRzIixyPXRoaXMubWluWS10aGlzLl9kZWNsaW5lWS54KHRoaXMubWluWS1yKSk6cj10aGlzLm1pblk6cj50aGlzLm1heFkmJih0aGlzLm91dE9mQm91bmRzPyhpPSJ0b3VjaC1vdXQtb2YtYm91bmRzIixyPXRoaXMubWF4WSt0aGlzLl9kZWNsaW5lWS54KHItdGhpcy5tYXhZKSk6cj10aGlzLm1heFkpLHAoKGZ1bmN0aW9uKCl7ZS5fc2V0VHJhbnNmb3JtKG4scixlLl9zY2FsZSxpKX0pKX19fSxfX2hhbmRsZVRvdWNoRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighdGhpcy5faXNTY2FsaW5nJiYhdGhpcy5kaXNhYmxlZCYmdGhpcy5faXNUb3VjaGluZyYmKE9iamVjdChkWyJhIl0pKHtkaXNhYmxlOiExfSksdGhpcy4kZWwuc3R5bGUud2lsbENoYW5nZT0iYXV0byIsdGhpcy5faXNUb3VjaGluZz0hMSwhdGhpcy5fY2hlY2tDYW5Nb3ZlJiYhdGhpcy5fcmV2aXNlKCJvdXQtb2YtYm91bmRzIikmJnRoaXMuaW5lcnRpYSkpe3ZhciBlPTFlMyoodGhpcy5fX3RvdWNoSW5mby5oaXN0b3J5WFsxXS10aGlzLl9fdG91Y2hJbmZvLmhpc3RvcnlYWzBdKS8odGhpcy5fX3RvdWNoSW5mby5oaXN0b3J5VFsxXS10aGlzLl9fdG91Y2hJbmZvLmhpc3RvcnlUWzBdKSxuPTFlMyoodGhpcy5fX3RvdWNoSW5mby5oaXN0b3J5WVsxXS10aGlzLl9fdG91Y2hJbmZvLmhpc3RvcnlZWzBdKS8odGhpcy5fX3RvdWNoSW5mby5oaXN0b3J5VFsxXS10aGlzLl9fdG91Y2hJbmZvLmhpc3RvcnlUWzBdKTt0aGlzLl9mcmljdGlvbi5zZXRWKGUsbiksdGhpcy5fZnJpY3Rpb24uc2V0Uyh0aGlzLl90cmFuc2xhdGVYLHRoaXMuX3RyYW5zbGF0ZVkpO3ZhciByPXRoaXMuX2ZyaWN0aW9uLmRlbHRhKCkueCxpPXRoaXMuX2ZyaWN0aW9uLmRlbHRhKCkueSxvPXIrdGhpcy5fdHJhbnNsYXRlWCxhPWkrdGhpcy5fdHJhbnNsYXRlWTtvPHRoaXMubWluWD8obz10aGlzLm1pblgsYT10aGlzLl90cmFuc2xhdGVZKyh0aGlzLm1pblgtdGhpcy5fdHJhbnNsYXRlWCkqaS9yKTpvPnRoaXMubWF4WCYmKG89dGhpcy5tYXhYLGE9dGhpcy5fdHJhbnNsYXRlWSsodGhpcy5tYXhYLXRoaXMuX3RyYW5zbGF0ZVgpKmkvciksYTx0aGlzLm1pblk/KGE9dGhpcy5taW5ZLG89dGhpcy5fdHJhbnNsYXRlWCsodGhpcy5taW5ZLXRoaXMuX3RyYW5zbGF0ZVkpKnIvaSk6YT50aGlzLm1heFkmJihhPXRoaXMubWF4WSxvPXRoaXMuX3RyYW5zbGF0ZVgrKHRoaXMubWF4WS10aGlzLl90cmFuc2xhdGVZKSpyL2kpLHRoaXMuX2ZyaWN0aW9uLnNldEVuZChvLGEpLHRoaXMuX0ZBPWIodGhpcy5fZnJpY3Rpb24sKGZ1bmN0aW9uKCl7dmFyIGU9dC5fZnJpY3Rpb24ucygpLG49ZS54LHI9ZS55O3QuX3NldFRyYW5zZm9ybShuLHIsdC5fc2NhbGUsImZyaWN0aW9uIil9KSwoZnVuY3Rpb24oKXt0Ll9GQS5jYW5jZWwoKX0pKX19LF9vblRyYWNrOmZ1bmN0aW9uKHQpe3N3aXRjaCh0LmRldGFpbC5zdGF0ZSl7Y2FzZSJzdGFydCI6dGhpcy5fX2hhbmRsZVRvdWNoU3RhcnQoKTticmVhaztjYXNlIm1vdmUiOnRoaXMuX19oYW5kbGVUb3VjaE1vdmUodCk7YnJlYWs7Y2FzZSJlbmQiOnRoaXMuX19oYW5kbGVUb3VjaEVuZCgpfX0sX2dldExpbWl0WFk6ZnVuY3Rpb24odCxlKXt2YXIgbj0hMTtyZXR1cm4gdD50aGlzLm1heFg/KHQ9dGhpcy5tYXhYLG49ITApOnQ8dGhpcy5taW5YJiYodD10aGlzLm1pblgsbj0hMCksZT50aGlzLm1heFk/KGU9dGhpcy5tYXhZLG49ITApOmU8dGhpcy5taW5ZJiYoZT10aGlzLm1pblksbj0hMCkse3g6dCx5OmUsb3V0T2ZCb3VuZHM6bn19LHNldFBhcmVudDpmdW5jdGlvbigpe2lmKHRoaXMuJHBhcmVudC5faXNNb3VudGVkKXt0aGlzLl9GQSYmdGhpcy5fRkEuY2FuY2VsKCksdGhpcy5fU0ZBJiZ0aGlzLl9TRkEuY2FuY2VsKCk7dmFyIHQ9dGhpcy5zY2FsZT90aGlzLnNjYWxlVmFsdWVTeW5jOjE7dGhpcy5fdXBkYXRlT2Zmc2V0KCksdGhpcy5fdXBkYXRlV0godCksdGhpcy5fdXBkYXRlQm91bmRhcnkoKSx0aGlzLl90cmFuc2xhdGVYPXRoaXMueFN5bmMrdGhpcy5fc2NhbGVPZmZzZXQueCx0aGlzLl90cmFuc2xhdGVZPXRoaXMueVN5bmMrdGhpcy5fc2NhbGVPZmZzZXQueTt2YXIgZT10aGlzLl9nZXRMaW1pdFhZKHRoaXMuX3RyYW5zbGF0ZVgsdGhpcy5fdHJhbnNsYXRlWSksbj1lLngscj1lLnk7dGhpcy5fc2V0VHJhbnNmb3JtKG4scix0LCIiLCEwKSx0aGlzLl91cGRhdGVPbGRTY2FsZSh0KX19LF91cGRhdGVPZmZzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9vZmZzZXQueD12KHRoaXMuJGVsLHRoaXMuJHBhcmVudC4kZWwpLHRoaXMuX29mZnNldC55PWcodGhpcy4kZWwsdGhpcy4kcGFyZW50LiRlbCl9LF91cGRhdGVXSDpmdW5jdGlvbih0KXt0PXR8fHRoaXMuX3NjYWxlLHQ9dGhpcy5fYWRqdXN0U2NhbGUodCk7dmFyIGU9dGhpcy4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5oZWlnaHQ9ZS5oZWlnaHQvdGhpcy5fc2NhbGUsdGhpcy53aWR0aD1lLndpZHRoL3RoaXMuX3NjYWxlO3ZhciBuPXRoaXMuaGVpZ2h0KnQscj10aGlzLndpZHRoKnQ7dGhpcy5fc2NhbGVPZmZzZXQueD0oci10aGlzLndpZHRoKS8yLHRoaXMuX3NjYWxlT2Zmc2V0Lnk9KG4tdGhpcy5oZWlnaHQpLzJ9LF91cGRhdGVCb3VuZGFyeTpmdW5jdGlvbigpe3ZhciB0PTAtdGhpcy5fb2Zmc2V0LngrdGhpcy5fc2NhbGVPZmZzZXQueCxlPXRoaXMuJHBhcmVudC53aWR0aC10aGlzLndpZHRoLXRoaXMuX29mZnNldC54LXRoaXMuX3NjYWxlT2Zmc2V0Lng7dGhpcy5taW5YPU1hdGgubWluKHQsZSksdGhpcy5tYXhYPU1hdGgubWF4KHQsZSk7dmFyIG49MC10aGlzLl9vZmZzZXQueSt0aGlzLl9zY2FsZU9mZnNldC55LHI9dGhpcy4kcGFyZW50LmhlaWdodC10aGlzLmhlaWdodC10aGlzLl9vZmZzZXQueS10aGlzLl9zY2FsZU9mZnNldC55O3RoaXMubWluWT1NYXRoLm1pbihuLHIpLHRoaXMubWF4WT1NYXRoLm1heChuLHIpfSxfYmVnaW5TY2FsZTpmdW5jdGlvbigpe3RoaXMuX2lzU2NhbGluZz0hMH0sX2VuZFNjYWxlOmZ1bmN0aW9uKCl7dGhpcy5faXNTY2FsaW5nPSExLHRoaXMuX3VwZGF0ZU9sZFNjYWxlKHRoaXMuX3NjYWxlKX0sX3NldFNjYWxlOmZ1bmN0aW9uKHQpe3RoaXMuc2NhbGUmJih0PXRoaXMuX29sZFNjYWxlKnQsdGhpcy5fYmVnaW5TY2FsZSgpLHRoaXMuX3VwZGF0ZVNjYWxlKHQpKX0sX3VwZGF0ZVNjYWxlOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztpZih0aGlzLnNjYWxlKXt0PXRoaXMuX2FkanVzdFNjYWxlKHQpLHRoaXMuX3VwZGF0ZVdIKHQpLHRoaXMuX3VwZGF0ZUJvdW5kYXJ5KCk7dmFyIHI9dGhpcy5fZ2V0TGltaXRYWSh0aGlzLl90cmFuc2xhdGVYLHRoaXMuX3RyYW5zbGF0ZVkpLGk9ci54LG89ci55O2U/dGhpcy5fYW5pbWF0aW9uVG8oaSxvLHQsIiIsITAsITApOnAoKGZ1bmN0aW9uKCl7bi5fc2V0VHJhbnNmb3JtKGksbyx0LCIiLCEwLCEwKX0pKX19LF91cGRhdGVPbGRTY2FsZTpmdW5jdGlvbih0KXt0aGlzLl9vbGRTY2FsZT10fSxfYWRqdXN0U2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5tYXgoLjEsdGhpcy5zY2FsZU1pbk51bWJlcix0KSx0PU1hdGgubWluKDEwLHRoaXMuc2NhbGVNYXhOdW1iZXIsdCksdH0sX2FuaW1hdGlvblRvOmZ1bmN0aW9uKHQsZSxuLHIsaSxvKXt2YXIgYT10aGlzO3RoaXMuX0ZBJiZ0aGlzLl9GQS5jYW5jZWwoKSx0aGlzLl9TRkEmJnRoaXMuX1NGQS5jYW5jZWwoKSx0aGlzLnhNb3ZlfHwodD10aGlzLl90cmFuc2xhdGVYKSx0aGlzLnlNb3ZlfHwoZT10aGlzLl90cmFuc2xhdGVZKSx0aGlzLnNjYWxlfHwobj10aGlzLl9zY2FsZSk7dmFyIHM9dGhpcy5fZ2V0TGltaXRYWSh0LGUpO3Q9cy54LGU9cy55LHRoaXMuYW5pbWF0aW9uPyh0aGlzLl9TVEQuX3NwcmluZ1guX3NvbHV0aW9uPW51bGwsdGhpcy5fU1RELl9zcHJpbmdZLl9zb2x1dGlvbj1udWxsLHRoaXMuX1NURC5fc3ByaW5nU2NhbGUuX3NvbHV0aW9uPW51bGwsdGhpcy5fU1RELl9zcHJpbmdYLl9lbmRQb3NpdGlvbj10aGlzLl90cmFuc2xhdGVYLHRoaXMuX1NURC5fc3ByaW5nWS5fZW5kUG9zaXRpb249dGhpcy5fdHJhbnNsYXRlWSx0aGlzLl9TVEQuX3NwcmluZ1NjYWxlLl9lbmRQb3NpdGlvbj10aGlzLl9zY2FsZSx0aGlzLl9TVEQuc2V0RW5kKHQsZSxuLDEpLHRoaXMuX1NGQT1iKHRoaXMuX1NURCwoZnVuY3Rpb24oKXt2YXIgdD1hLl9TVEQueCgpLGU9dC54LG49dC55LHM9dC5zY2FsZTthLl9zZXRUcmFuc2Zvcm0oZSxuLHMscixpLG8pfSksKGZ1bmN0aW9uKCl7YS5fU0ZBLmNhbmNlbCgpfSkpKTp0aGlzLl9zZXRUcmFuc2Zvcm0odCxlLG4scixpLG8pfSxfcmV2aXNlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2dldExpbWl0WFkodGhpcy5fdHJhbnNsYXRlWCx0aGlzLl90cmFuc2xhdGVZKSxuPWUueCxyPWUueSxpPWUub3V0T2ZCb3VuZHM7cmV0dXJuIGkmJnRoaXMuX2FuaW1hdGlvblRvKG4scix0aGlzLl9zY2FsZSx0KSxpfSxfc2V0VHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106IiIsaT1hcmd1bWVudHMubGVuZ3RoPjQ/YXJndW1lbnRzWzRdOnZvaWQgMCxvPWFyZ3VtZW50cy5sZW5ndGg+NT9hcmd1bWVudHNbNV06dm9pZCAwO251bGwhPT10JiYiTmFOIiE9PXQudG9TdHJpbmcoKSYmIm51bWJlciI9PT10eXBlb2YgdHx8KHQ9dGhpcy5fdHJhbnNsYXRlWHx8MCksbnVsbCE9PWUmJiJOYU4iIT09ZS50b1N0cmluZygpJiYibnVtYmVyIj09PXR5cGVvZiBlfHwoZT10aGlzLl90cmFuc2xhdGVZfHwwKSx0PU51bWJlcih0LnRvRml4ZWQoMSkpLGU9TnVtYmVyKGUudG9GaXhlZCgxKSksbj1OdW1iZXIobi50b0ZpeGVkKDEpKSx0aGlzLl90cmFuc2xhdGVYPT09dCYmdGhpcy5fdHJhbnNsYXRlWT09PWV8fGl8fHRoaXMuJHRyaWdnZXIoImNoYW5nZSIse30se3g6bSh0LHRoaXMuX3NjYWxlT2Zmc2V0LngpLHk6bShlLHRoaXMuX3NjYWxlT2Zmc2V0LnkpLHNvdXJjZTpyfSksdGhpcy5zY2FsZXx8KG49dGhpcy5fc2NhbGUpLG49dGhpcy5fYWRqdXN0U2NhbGUobiksbj0rbi50b0ZpeGVkKDMpLG8mJm4hPT10aGlzLl9zY2FsZSYmdGhpcy4kdHJpZ2dlcigic2NhbGUiLHt9LHt4OnQseTplLHNjYWxlOm59KTt2YXIgYT0idHJhbnNsYXRlWCgiK3QrInB4KSB0cmFuc2xhdGVZKCIrZSsicHgpIHRyYW5zbGF0ZVooMHB4KSBzY2FsZSgiK24rIikiO3RoaXMuJGVsLnN0eWxlLnRyYW5zZm9ybT1hLHRoaXMuJGVsLnN0eWxlLndlYmtpdFRyYW5zZm9ybT1hLHRoaXMuX3RyYW5zbGF0ZVg9dCx0aGlzLl90cmFuc2xhdGVZPWUsdGhpcy5fc2NhbGU9bn19fSxfPXksdz0obigiNWUyNyIpLG4oIjg4NDQiKSksUz1PYmplY3Qod1siYSJdKShfLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPVMuZXhwb3J0c30sIjY1ZGIiOmZ1bmN0aW9uKHQsZSxuKXt9LDY2MjU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsImNyZWF0ZUF1ZGlvQ29udGV4dCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKGUsImNyZWF0ZVZpZGVvQ29udGV4dCIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSksbi5kKGUsImNyZWF0ZU1hcENvbnRleHQiLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZChlLCJjcmVhdGVDYW52YXNDb250ZXh0IiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKTt2YXIgcj1be25hbWU6ImlkIix0eXBlOlN0cmluZyxyZXF1aXJlZDohMH1dLGk9cixvPXIsYT1yLHM9W3tuYW1lOiJjYW52YXNJZCIsdHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LHtuYW1lOiJjb21wb25lbnRJbnN0YW5jZSIsdHlwZTpPYmplY3R9XX0sNjcyOTpmdW5jdGlvbih0LGUsbil7fSw2NzczOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQscil7bi5kKGUsImNob29zZUltYWdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gZn0pKTt2YXIgaT1uKCJiZGVlIiksbz1uKCIwMzcyIiksYT1uKCI0OTNkIikscz1uKCI5MDllIiksYz10LHU9Yy5pbnZva2VDYWxsYmFja0hhbmRsZXIsbD1udWxsO2Z1bmN0aW9uIGYodCxlKXt2YXIgbj10LmNvdW50LGM9dC5zb3VyY2VUeXBlLGY9dC5leHRlbnNpb247bCYmKGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobCksbD1udWxsKSxsPU9iamVjdChhWyJkZWZhdWx0Il0pKHtjb3VudDpuLHNvdXJjZVR5cGU6YyxleHRlbnNpb246Zix0eXBlOiJpbWFnZSJ9KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGwpLGwuYWRkRXZlbnRMaXN0ZW5lcigiY2FuY2VsIiwoZnVuY3Rpb24oKXt2YXIgdD17ZXJyTXNnOiJjaG9vc2VJbWFnZTpmYWlsIGNhbmNlbCJ9O3UoZSx0KX0pKSxsLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj1bXSxvPXQudGFyZ2V0LmZpbGVzLmxlbmd0aCxhPWZ1bmN0aW9uKGUpe3ZhciBvPXQudGFyZ2V0LmZpbGVzW2VdLGE9dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJwYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGE9YXx8T2JqZWN0KGlbImIiXSkobyksYX19KSxlPG4mJnIucHVzaChvKX0scz0wO3M8bztzKyspYShzKTt2YXIgYz17ZXJyTXNnOiJjaG9vc2VJbWFnZTpvayIsZ2V0IHRlbXBGaWxlUGF0aHMoKXtyZXR1cm4gci5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPXQucGF0aDtyZXR1cm4gZX0pKX0sdGVtcEZpbGVzOnJ9O3UoZSxjKX0pKSxsLmNsaWNrKCksc1siZCJdLmdldFN0YXR1cygpfHxyLndhcm4oIiIuY29uY2F0KE9iamVjdChvWyJnIl0pKCJ1bmkuY2hvb3NlRmlsZS5ub3RVc2VyQWN0aXZhdGlvbiIpKSl9fS5jYWxsKHRoaXMsbigiMmM5ZiIpLG4oIjQxOGIiKVsiZGVmYXVsdCJdKX0sIjY3YzMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJnZXRTdG9yYWdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKSxuLmQoZSwiZ2V0U3RvcmFnZVN5bmMiLChmdW5jdGlvbigpe3JldHVybiBpfSkpLG4uZChlLCJzZXRTdG9yYWdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKSxuLmQoZSwic2V0U3RvcmFnZVN5bmMiLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZChlLCJyZW1vdmVTdG9yYWdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKSxuLmQoZSwicmVtb3ZlU3RvcmFnZVN5bmMiLChmdW5jdGlvbigpe3JldHVybiBjfSkpO3ZhciByPXtrZXk6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfX0saT1be25hbWU6ImtleSIsdHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9XSxvPXtrZXk6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxkYXRhOntyZXF1aXJlZDohMH19LGE9W3tuYW1lOiJrZXkiLHR5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSx7bmFtZToiZGF0YSIscmVxdWlyZWQ6ITB9XSxzPXIsYz1pfSw2ODU2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJ1cHgycHgiLChmdW5jdGlvbigpe3JldHVybiByfSkpO3ZhciByPVt7bmFtZToidXB4Iix0eXBlOltOdW1iZXIsU3RyaW5nXSxyZXF1aXJlZDohMH1dfSwiNjhiNSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI5ZDE3IiksaT1uLm4ocik7aS5hfSwiNjhkMiI6ZnVuY3Rpb24odCxlLG4pe30sIjY5NWMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJ1bmktd2ViLXZpZXciLHQuX2coe3JlZjoid2Vidmlld0NvbnRhaW5lciIsY2xhc3M6eyJ1bmktd2Vidmlldy0tZnVsbHNjcmVlbiI6dC5mdWxsc2NyZWVufX0sdC4kbGlzdGVuZXJzKSxbbigidi11bmktcmVzaXplLXNlbnNvciIse3JlZjoic2Vuc29yIixvbjp7cmVzaXplOnQuX3Jlc2l6ZX19KV0sMSl9LGk9W10sbz17bmFtZToiV2ViVmlldyIscHJvcHM6e3NyYzp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sZnVsbHNjcmVlbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9fSx3YXRjaDp7c3JjOmZ1bmN0aW9uKCl7dGhpcy5pZnJhbWUmJih0aGlzLmlmcmFtZS5zcmM9dGhpcy4kZ2V0UmVhbFBhdGgodGhpcy5zcmMpKX19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuaWZyYW1lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpLE9iamVjdC5rZXlzKHRoaXMuJGF0dHJzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0LmlmcmFtZVtlXT10LiRhdHRyc1tlXX0pKSx0aGlzLmlmcmFtZS5zcmM9dGhpcy4kZ2V0UmVhbFBhdGgodGhpcy5zcmMpLHRoaXMuZnVsbHNjcmVlbj9kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuaWZyYW1lKTp0aGlzLiRyZWZzLndlYnZpZXdDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5pZnJhbWUpLHRoaXMuaWZyYW1lLm9ubG9hZD1mdW5jdGlvbihlKXt0LiR0cmlnZ2VyKCJsb2FkIixlLHtzcmM6dC5zcmN9KX0sdGhpcy5fcmVzaXplKCl9LGFjdGl2YXRlZDpmdW5jdGlvbigpe3RoaXMuZnVsbHNjcmVlbiYmKHRoaXMuaWZyYW1lLnN0eWxlLmRpc3BsYXk9ImJsb2NrIil9LGRlYWN0aXZhdGVkOmZ1bmN0aW9uKCl7dGhpcy5mdWxsc2NyZWVuJiYodGhpcy5pZnJhbWUuc3R5bGUuZGlzcGxheT0ibm9uZSIpfSxiZWZvcmVEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5mdWxsc2NyZWVuJiZkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMuaWZyYW1lKX0sbWV0aG9kczp7X3Jlc2l6ZTpmdW5jdGlvbigpe2lmKHRoaXMuZnVsbHNjcmVlbil7dmFyIHQ9dGhpcy4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZT10LnRvcCxuPXQubGVmdCxyPXQud2lkdGgsaT10LmhlaWdodDt0aGlzLmlmcmFtZS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHRoaXMuaWZyYW1lLnN0eWxlLmRpc3BsYXk9ImJsb2NrIix0aGlzLmlmcmFtZS5zdHlsZS5ib3JkZXI9MCx0aGlzLmlmcmFtZS5zdHlsZS50b3A9ZSsicHgiLHRoaXMuaWZyYW1lLnN0eWxlLmxlZnQ9bisicHgiLHRoaXMuaWZyYW1lLnN0eWxlLndpZHRoPXIrInB4Iix0aGlzLmlmcmFtZS5zdHlsZS5oZWlnaHQ9aSsicHgifWVsc2UgdGhpcy5pZnJhbWUuc3R5bGUud2lkdGg9dGhpcy4kcmVmcy53ZWJ2aWV3Q29udGFpbmVyLnN0eWxlLndpZHRofHwiMzAwcHgiLHRoaXMuaWZyYW1lLnN0eWxlLmhlaWdodD10aGlzLiRyZWZzLndlYnZpZXdDb250YWluZXIuc3R5bGUuaGVpZ2h0fHwiMTUwcHgifX19LGE9byxzPShuKCI1MjZjIiksbigiODg0NCIpKSxjPU9iamVjdChzWyJhIl0pKGEscixpLCExLG51bGwsbnVsbCxudWxsKTtlWyJkZWZhdWx0Il09Yy5leHBvcnRzfSwiNmJkNyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsInJlZGlyZWN0VG8iLChmdW5jdGlvbigpe3JldHVybiB1fSkpLG4uZChlLCJyZUxhdW5jaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSksbi5kKGUsIm5hdmlnYXRlVG8iLChmdW5jdGlvbigpe3JldHVybiBmfSkpLG4uZChlLCJzd2l0Y2hUYWIiLChmdW5jdGlvbigpe3JldHVybiBkfSkpLG4uZChlLCJuYXZpZ2F0ZUJhY2siLChmdW5jdGlvbigpe3JldHVybiBofSkpLG4uZChlLCJwcmVsb2FkUGFnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHB9KSksbi5kKGUsInVuUHJlbG9hZFBhZ2UiLChmdW5jdGlvbigpe3JldHVybiB2fSkpO3ZhciByLGk9bigiOGYyZiIpO2Z1bmN0aW9uIG8odCl7aWYoInN0cmluZyIhPT10eXBlb2YgdClyZXR1cm4gdDt2YXIgZT10LmluZGV4T2YoIj8iKTtpZigtMT09PWUpcmV0dXJuIHQ7dmFyIG49dC5zdWJzdHIoZSsxKS50cmltKCkucmVwbGFjZSgvXihcP3wjfCYpLywiIik7aWYoIW4pcmV0dXJuIHQ7dD10LnN1YnN0cigwLGUpO3ZhciByPVtdO3JldHVybiBuLnNwbGl0KCImIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5yZXBsYWNlKC9cKy9nLCIgIikuc3BsaXQoIj0iKSxuPWUuc2hpZnQoKSxpPWUubGVuZ3RoPjA/ZS5qb2luKCI9Iik6IiI7ci5wdXNoKG4rIj0iK2VuY29kZVVSSUNvbXBvbmVudChpKSl9KSksci5sZW5ndGg/dCsiPyIrci5qb2luKCImIik6dH1mdW5jdGlvbiBhKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe2U9T2JqZWN0KGlbImEiXSkoZSk7dmFyIGE9ZS5zcGxpdCgiPyIpWzBdLHM9X191bmlSb3V0ZXMuZmluZCgoZnVuY3Rpb24odCl7dmFyIGU9dC5wYXRoLG49dC5hbGlhcztyZXR1cm4gZT09PWF8fG49PT1hfSkpO2lmKCFzKXJldHVybiJwYWdlIGAiK2UrImAgaXMgbm90IGZvdW5kIjtpZigibmF2aWdhdGVUbyI9PT10fHwicmVkaXJlY3RUbyI9PT10KXtpZihzLm1ldGEuaXNUYWJCYXIpcmV0dXJuImNhbiBub3QgIi5jb25jYXQodCwiIGEgdGFiYmFyIHBhZ2UiKX1lbHNlIGlmKCJzd2l0Y2hUYWIiPT09dCYmIXMubWV0YS5pc1RhYkJhcilyZXR1cm4iY2FuIG5vdCBzd2l0Y2ggdG8gbm8tdGFiQmFyIHBhZ2UiO2lmKCJzd2l0Y2hUYWIiIT09dCYmInByZWxvYWRQYWdlIiE9PXR8fCFzLm1ldGEuaXNUYWJCYXJ8fCJhcHBMYXVuY2giPT09bi5vcGVuVHlwZXx8KGU9YSkscy5tZXRhLmlzRW50cnkmJihlPWUucmVwbGFjZShzLmFsaWFzLCIvIikpLG4udXJsPW8oZSksInVuUHJlbG9hZFBhZ2UiIT09dClpZigicHJlbG9hZFBhZ2UiIT09dCl7aWYocj09PWUmJiJhcHBMYXVuY2giIT09bi5vcGVuVHlwZSlyZXR1cm4iIi5jb25jYXQociwiIGxvY2tlZCIpO19fdW5pQ29uZmlnLnJlYWR5JiYhMSE9PV9fdW5pQ29uZmlnLmVuYWJsZU5hdmlnYXRvckxvY2smJihyPWUpfWVsc2UgaWYocy5tZXRhLmlzVGFiQmFyKXt2YXIgYz1nZXRDdXJyZW50UGFnZXMoITApLHU9KHMuYWxpYXN8fHMucGF0aCkuc3Vic3RyKDEpO2lmKGMuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucm91dGU9PT11fSkpKXJldHVybiJ0YWJCYXIgcGFnZSBgIit1KyJgIGFscmVhZHkgZXhpc3RzIn19fWZ1bmN0aW9uIHModCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3JldHVybiBPYmplY3QuYXNzaWduKHt1cmw6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwLHZhbGlkYXRvcjphKHQpfSxiZWZvcmVBbGw6ZnVuY3Rpb24oKXtyPSIifX0sZSl9ZnVuY3Rpb24gYyh0KXtyZXR1cm57YW5pbWF0aW9uVHlwZTp7dHlwZTpTdHJpbmcsdmFsaWRhdG9yOmZ1bmN0aW9uKGUpe2lmKGUmJi0xPT09dC5pbmRleE9mKGUpKXJldHVybiJgIitlKyJgIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGBhbmltYXRpb25UeXBlYCAoc3VwcG9ydGVkIHZhbHVlcyBhcmU6IGAiK3Quam9pbigiYHxgIikrImApIn19LGFuaW1hdGlvbkR1cmF0aW9uOnt0eXBlOk51bWJlcn19fXZhciB1PXMoInJlZGlyZWN0VG8iKSxsPXMoInJlTGF1bmNoIiksZj1zKCJuYXZpZ2F0ZVRvIixjKFsic2xpZGUtaW4tcmlnaHQiLCJzbGlkZS1pbi1sZWZ0Iiwic2xpZGUtaW4tdG9wIiwic2xpZGUtaW4tYm90dG9tIiwiZmFkZS1pbiIsInpvb20tb3V0Iiwiem9vbS1mYWRlLW91dCIsInBvcC1pbiIsIm5vbmUiXSkpLGQ9cygic3dpdGNoVGFiIiksaD1PYmplY3QuYXNzaWduKHtkZWx0YTp7dHlwZTpOdW1iZXIsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7dD1wYXJzZUludCh0KXx8MSxlLmRlbHRhPU1hdGgubWluKGdldEN1cnJlbnRQYWdlcygpLmxlbmd0aC0xLHQpfX19LGMoWyJzbGlkZS1vdXQtcmlnaHQiLCJzbGlkZS1vdXQtbGVmdCIsInNsaWRlLW91dC10b3AiLCJzbGlkZS1vdXQtYm90dG9tIiwiZmFkZS1vdXQiLCJ6b29tLWluIiwiem9vbS1mYWRlLWluIiwicG9wLW91dCIsIm5vbmUiXSkpLHA9e3VybDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITAsdmFsaWRhdG9yOmEoInByZWxvYWRQYWdlIil9fSx2PXt1cmw6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwLHZhbGlkYXRvcjphKCJ1blByZWxvYWRQYWdlIil9fX0sIjZjMzYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoZSxuKXt2YXIgcj10LGk9ci5pbnZva2VDYWxsYmFja0hhbmRsZXI7Z2V0QXBwKCkuJHJvdXRlci5wdXNoKHt0eXBlOiJuYXZpZ2F0ZVRvIixwYXRoOiIvY2hvb3NlLWxvY2F0aW9uIixxdWVyeTplfSwoZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbiBlKHIpe3QudW5zdWJzY3JpYmUoIm9uQ2hvb3NlTG9jYXRpb24iLGUpLGkobixyP09iamVjdC5hc3NpZ24ocix7ZXJyTXNnOiJjaG9vc2VMb2NhdGlvbjpvayJ9KTp7ZXJyTXNnOiJjaG9vc2VMb2NhdGlvbjpmYWlsIn0pfTt0LnN1YnNjcmliZSgib25DaG9vc2VMb2NhdGlvbiIsZSl9KSwoZnVuY3Rpb24oKXtpKG4se2Vyck1zZzoiY2hvb3NlTG9jYXRpb246ZmFpbCJ9KX0pKX1uLmQoZSwiY2hvb3NlTG9jYXRpb24iLChmdW5jdGlvbigpe3JldHVybiByfSkpfS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sIjZkNGIiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe24uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gY30pKTt2YXIgcixpPW4oImI0MzUiKSxvPW4oImQzNTkiKSxhPXt9LHM9Il9fbWFwX2NhbGxiYWNrX18iO2Z1bmN0aW9uIGMoZSxuKXt2YXIgYz1PYmplY3QoaVsiZSJdKSgpO2lmKGMua2V5KXt2YXIgZj1hW2MudHlwZV09YVtjLnR5cGVdfHxbXTtpZihyKW4ocik7ZWxzZSBpZih3aW5kb3dbYy50eXBlXSYmd2luZG93W2MudHlwZV0ubWFwcylyPWlbImMiXT93aW5kb3dbYy50eXBlXTp3aW5kb3dbYy50eXBlXS5tYXBzLHIuQ2FsbG91dD1yLkNhbGxvdXR8fE9iamVjdChvWyJhIl0pKHIpLG4ocik7ZWxzZSBpZihmLmxlbmd0aClmLnB1c2gobik7ZWxzZXtmLnB1c2gobik7dmFyIGQ9d2luZG93LGg9cytjLnR5cGU7ZFtoXT1mdW5jdGlvbigpe2RlbGV0ZSBkW2hdLHI9aVsiYyJdP3dpbmRvd1tjLnR5cGVdOndpbmRvd1tjLnR5cGVdLm1hcHMsci5DYWxsb3V0PU9iamVjdChvWyJhIl0pKHIpLGYuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQocil9KSksZi5sZW5ndGg9MH07dmFyIHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iiksdj11KGMudHlwZSk7Yy50eXBlPT09aVsiZCJdLlFRJiZlLnB1c2goImdlb21ldHJ5IiksZS5sZW5ndGgmJih2Kz0ibGlicmFyaWVzPSIuY29uY2F0KGUuam9pbigiJTJDIiksIiYiKSksaVsiYyJdJiZsKGMpLHAuc3JjPSIiLmNvbmNhdCh2LCJrZXk9IikuY29uY2F0KGMua2V5LCImY2FsbGJhY2s9IikuY29uY2F0KGgpLHAub25lcnJvcj1mdW5jdGlvbigpe3QuZXJyb3IoIk1hcCBsb2FkIGZhaWxlZC4iKX0sZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwKX19ZWxzZSB0LmVycm9yKCJNYXAga2V5IG5vdCBjb25maWd1cmVkLiIpfWZ1bmN0aW9uIHUodCl7dmFyIGU9e3FxOiJodHRwczovL21hcC5xcS5jb20vYXBpL2pzP3Y9Mi5leHAmIixnb29nbGU6Imh0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9qcz8iLEFNYXA6Imh0dHBzOi8vd2ViYXBpLmFtYXAuY29tL21hcHM/dj0yLjAmIn07cmV0dXJuIGVbdF19ZnVuY3Rpb24gbCh0KXt3aW5kb3cuX0FNYXBTZWN1cml0eUNvbmZpZz17c2VjdXJpdHlKc0NvZGU6dC5zZWN1cml0eUpzQ29kZXx8IiIsc2VydmljZUhvc3Q6dC5zZXJ2aWNlSG9zdHx8IiJ9fX0pLmNhbGwodGhpcyxuKCI0MThiIilbImRlZmF1bHQiXSl9LCI2ZGRkIjpmdW5jdGlvbih0LGUsbil7fSwiNmY3MyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsIm1ha2VQaG9uZUNhbGwiLChmdW5jdGlvbigpe3JldHVybiByfSkpO3ZhciByPXtwaG9uZU51bWJlcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITAsdmFsaWRhdG9yOmZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiJtYWtlUGhvbmVDYWxsOmZhaWwgcGFyYW1ldGVyIGVycm9yOiBwYXJhbWV0ZXIucGhvbmVOdW1iZXIgc2hvdWxkIG5vdCBiZSBlbXB0eSBTdHJpbmc7In19fX0sIjZmNzUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBpKHQpe3QuZGlzYWJsZX1uLmQoZSwiYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSksbi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBpfSkpfSw3MDY4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJvbktleWJvYXJkSGVpZ2h0Q2hhbmdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwib2ZmS2V5Ym9hcmRIZWlnaHRDaGFuZ2UiLChmdW5jdGlvbigpe3JldHVybiBzfSkpO3ZhciByLGk9bigiOTEzMSIpLG89bigiNzQ1YSIpO2Z1bmN0aW9uIGEodCl7T2JqZWN0KGlbImIiXSkocikscj10fWZ1bmN0aW9uIHMoKXtyPW51bGx9T2JqZWN0KG9bImQiXSkoIm9uS2V5Ym9hcmRIZWlnaHRDaGFuZ2UiLChmdW5jdGlvbih0KXtyJiZPYmplY3QoaVsiYSJdKShyLHQpfSkpfSwiNzBiYyI6ZnVuY3Rpb24odCxlLG4pe30sIjcxYTQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dHJ5e3JldHVybiBlLmFwcGx5KGUsYXJndW1lbnRzKX1jYXRjaChuKXt0LmVycm9yKG4pfX19ZnVuY3Rpb24gaShlKXtyZXR1cm4gZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGUuYXBwbHkoZSxhcmd1bWVudHMpfWNhdGNoKG4pe3QuZXJyb3Iobil9fX1uLmQoZSwiYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSksbi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBpfSkpfSkuY2FsbCh0aGlzLG4oIjQxOGIiKVsiZGVmYXVsdCJdKX0sIjcxYmUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBzfSkpO3ZhciByPW4oIjM0MGQiKSxpPW4oImNmZjkiKSxvPW4oIjk3OTgiKTtmdW5jdGlvbiBhKHQsZSl7dmFyIG49dC4kcm91dGU7dC5yb3V0ZT1uLm1ldGEucGFnZVBhdGgsdC5vcHRpb25zfHwodC5vcHRpb25zPWUpO3ZhciBpPU9iamVjdChyWyJpIl0pKG4ucGFyYW1zLCJfX2lkX18iKT9uLnBhcmFtcy5fX2lkX186bi5tZXRhLmlkLGE9bi5mdWxsUGF0aDtuLm1ldGEuaXNFbnRyeSYmLTE9PT1hLmluZGV4T2Yobi5tZXRhLnBhZ2VQYXRoKSYmKGE9Ii8iK24ubWV0YS5wYWdlUGF0aCthLnJlcGxhY2UoIi8iLCIiKSksdC5fX3BhZ2VfXz17aWQ6aSxwYXRoOm4ucGF0aCxyb3V0ZTpuLm1ldGEucGFnZVBhdGgsZnVsbFBhdGg6YSxvcHRpb25zOmUsbWV0YTpPYmplY3QuYXNzaWduKHt9LG4ubWV0YSl9O3ZhciBzPXQuJHJvdXRlci4kZXZlbnRDaGFubmVsfHxuZXcgb1siYSJdO3QuZ2V0T3BlbmVyRXZlbnRDaGFubmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHN9LHQuJHZtPXQsdC4kcm9vdD10LHQuJGhvbGRlcj10LiRwYXJlbnQuJHBhcmVudCx0LiRtcD17bXBUeXBlOiJwYWdlIixwYWdlOnQscXVlcnk6e30sc3RhdHVzOiIifX1mdW5jdGlvbiBzKCl7cmV0dXJue2NyZWF0ZWQ6ZnVuY3Rpb24oKXt2YXIgdD1PYmplY3QoclsiZSJdKSh0aGlzLiRyb3V0ZS5xdWVyeSk7YSh0aGlzLHQpLE9iamVjdChpWyJiIl0pKHRoaXMsIm9uTG9hZCIsdCksT2JqZWN0KGlbImIiXSkodGhpcywib25TaG93Iil9fX19LCI3MjRjIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjVhMmQiKSxpPW4ubihyKTtpLmF9LDczMTc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsInByZXZpZXdJbWFnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSksbi5kKGUsImNsb3NlUHJldmlld0ltYWdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKTt2YXIgcj1uKCI3NDVhIiksaT0ibG9uZ1ByZXNzQWN0aW9uc0NhbGxiYWNrIixvPXt9O2Z1bmN0aW9uIGEoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuIG89dC5sb25nUHJlc3NBY3Rpb25zfHx7fSwoby5zdWNjZXNzfHxvLmZhaWx8fG8uY29tcGxldGUpJiYoby5jYWxsYmFja0lkPWkpLE9iamVjdChyWyJjIl0pKCJwcmV2aWV3SW1hZ2VQbHVzIix0KX1mdW5jdGlvbiBzKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O3JldHVybiBPYmplY3QoclsiYyJdKSgiY2xvc2VQcmV2aWV3SW1hZ2VQbHVzIix0KX1PYmplY3QoclsiZCJdKShpLChmdW5jdGlvbih0KXt2YXIgZT10LmVyck1zZ3x8IiI7bmV3IFJlZ0V4cCgiXFw6XFxzKmZhaWwiKS50ZXN0KGUpP28uZmFpbCYmby5mYWlsKHQpOm8uc3VjY2VzcyYmby5zdWNjZXNzKHQpLG8uY29tcGxldGUmJm8uY29tcGxldGUodCl9KSl9LCI3NDVhIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXtuLmQoZSwiYyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKGUsImQiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLCJiIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSk7dmFyIHI9bigiYjE1ZSIpO2Z1bmN0aW9uIGkodCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoZT4xP2UtMTowKSxpPTE7aTxlO2krKyluW2ktMV09YXJndW1lbnRzW2ldO3JldHVybiByWyJhIl1bdF0uYXBwbHkobnVsbCxuKX1mdW5jdGlvbiBvKGUsbil7cmV0dXJuIHQub24oImFwaS4iK2Usbil9ZnVuY3Rpb24gYShlKXt2YXIgbj1nZXRDdXJyZW50UGFnZXMoKSxyPW4ubGVuZ3RoO3J8fHQuZW1pdCgib25FcnJvciIsIiIuY29uY2F0KGUsIjpmYWlsIikpO3ZhciBpPW5bci0xXTtyZXR1cm4gaS4kdm19ZnVuY3Rpb24gcygpe3ZhciB0PWdldEN1cnJlbnRQYWdlcygpLGU9dFt0Lmxlbmd0aC0xXTtyZXR1cm4gZSYmZS4kcGFnZS5pZH19KS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sNzU1MzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKTt2YXIgcj17fTtmdW5jdGlvbiBpKHQpe3ZhciBlPXJbdF07cmV0dXJuIGV8fChlPXtpZDoxLGNhbGxiYWNrczpPYmplY3QuY3JlYXRlKG51bGwpfSxyW3RdPWUpLHtnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGUuY2FsbGJhY2tzW3RdfSxwb3A6ZnVuY3Rpb24odCl7dmFyIG49ZS5jYWxsYmFja3NbdF07cmV0dXJuIG4mJmRlbGV0ZSBlLmNhbGxiYWNrc1t0XSxufSxwdXNoOmZ1bmN0aW9uKHQpe3ZhciBuPWUuaWQrKztyZXR1cm4gZS5jYWxsYmFja3Nbbl09dCxufX19fSwiNzVkZCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIGk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInVuaS1waWNrZXIiLHQuX2coe2F0dHJzOntkaXNhYmxlZDp0LmRpc2FibGVkfSxvbjp7Y2xpY2s6dC5fc2hvd319LHQuJGxpc3RlbmVycyksW24oImRpdiIse3JlZjoicGlja2VyIixzdGF0aWNDbGFzczoidW5pLXBpY2tlci1jb250YWluZXIiLGNsYXNzOiJ1bmktIit0Lm1vZGUrIi0iK3Quc2VsZWN0b3JUeXBlQ29tcHV0ZWQsb246e3doZWVsOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKX0sdG91Y2htb3ZlOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKX19fSxbbigidHJhbnNpdGlvbiIse2F0dHJzOntuYW1lOiJ1bmktZmFkZSJ9fSxbbigiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6dC52aXNpYmxlLGV4cHJlc3Npb246InZpc2libGUifV0sc3RhdGljQ2xhc3M6InVuaS1tYXNrIHVuaS1waWNrZXItbWFzayIsb246e2NsaWNrOnQuX2NhbmNlbCxtb3VzZW1vdmU6dC5fZml4SW5wdXRQb3NpdGlvbn19KV0pLHQuc3lzdGVtP3QuX2UoKTpuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXBpY2tlci1jdXN0b20iLGNsYXNzOnsidW5pLXBpY2tlci10b2dnbGUiOnQudmlzaWJsZX0sc3R5bGU6dC5wb3B1cFN0eWxlLmNvbnRlbnR9LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXBpY2tlci1oZWFkZXIiLG9uOntjbGljazpmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpfX19LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXBpY2tlci1hY3Rpb24gdW5pLXBpY2tlci1hY3Rpb24tY2FuY2VsIixvbjp7Y2xpY2s6dC5fY2FuY2VsfX0sW3QuX3YoIiAiK3QuX3ModC4kJHQoInVuaS5waWNrZXIuY2FuY2VsIikpKyIgIildKSxuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXBpY2tlci1hY3Rpb24gdW5pLXBpY2tlci1hY3Rpb24tY29uZmlybSIsb246e2NsaWNrOnQuX2NoYW5nZX19LFt0Ll92KCIgIit0Ll9zKHQuJCR0KCJ1bmkucGlja2VyLmRvbmUiKSkrIiAiKV0pXSksdC5jb250ZW50VmlzaWJsZT9uKCJ2LXVuaS1waWNrZXItdmlldyIse3N0YXRpY0NsYXNzOiJ1bmktcGlja2VyLWNvbnRlbnQiLGF0dHJzOnt2YWx1ZTp0Ll9sMTBuQ29sdW1uKHQudmFsdWVBcnJheSl9LG9uOntjaGFuZ2U6dC5fcGlja2VyVmlld0NoYW5nZX19LHQuX2wodC5fbDEwbkNvbHVtbih0LnJhbmdlQXJyYXkpLChmdW5jdGlvbihlLGkpe3JldHVybiBuKCJ2LXVuaS1waWNrZXItdmlldy1jb2x1bW4iLHtrZXk6aX0sdC5fbChlLChmdW5jdGlvbihlLG8pe3JldHVybiBuKCJkaXYiLHtrZXk6byxzdGF0aWNDbGFzczoidW5pLXBpY2tlci1pdGVtIn0sW3QuX3YoIiAiK3QuX3MoIm9iamVjdCI9PT1yKGUpP2VbdC5yYW5nZUtleV18fCIiOnQuX2wxMG5JdGVtKGUsaSkpKyIgIildKX0pKSwwKX0pKSwxKTp0Ll9lKCksbigiZGl2Iix7cmVmOiJzZWxlY3QiLHN0YXRpY0NsYXNzOiJ1bmktcGlja2VyLXNlbGVjdCIsb246e3doZWVsOmZ1bmN0aW9uKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCl9LHRvdWNobW92ZTpmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpfX19LHQuX2wodC5yYW5nZUFycmF5WzBdLChmdW5jdGlvbihlLGkpe3JldHVybiBuKCJkaXYiLHtrZXk6aSxzdGF0aWNDbGFzczoidW5pLXBpY2tlci1pdGVtIixjbGFzczp7c2VsZWN0ZWQ6dC52YWx1ZUFycmF5WzBdPT09aX0sb246e2NsaWNrOmZ1bmN0aW9uKGUpe3QudmFsdWVBcnJheVswXT1pLHQuX2NoYW5nZSgpfX19LFt0Ll92KCIgIit0Ll9zKCJvYmplY3QiPT09cihlKT9lW3QucmFuZ2VLZXldfHwiIjplKSsiICIpXSl9KSksMCksbigiZGl2Iix7c3R5bGU6dC5wb3B1cFN0eWxlLnRyaWFuZ2xlfSldLDEpXSwxKSxuKCJkaXYiLFt0Ll90KCJkZWZhdWx0IildLDIpLHQuc3lzdGVtP24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktcGlja2VyLXN5c3RlbSIsb246e21vdXNlbW92ZTp0Ll9maXhJbnB1dFBvc2l0aW9ufX0sW24oImlucHV0Iix7cmVmOiJpbnB1dCIsY2xhc3M6W3Quc3lzdGVtLHQucG9wdXBTdHlsZS5kb2NrXSxhdHRyczp7dHlwZTp0Lm1vZGUsdGFiaW5kZXg6Ii0xIixtaW46dC5zdGFydCxtYXg6dC5lbmR9LGRvbVByb3BzOnt2YWx1ZTp0LnZhbHVlU3luY30sb246e2NoYW5nZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKSx0Ll9pbnB1dChlKX19fSldKTp0Ll9lKCksbigia2V5cHJlc3MiLHthdHRyczp7ZGlzYWJsZTohdC52aXNpYmxlfSxvbjp7ZXNjOnQuX2NhbmNlbCxlbnRlcjp0Ll9jaGFuZ2V9fSldLDEpfSxvPVtdLGE9bigiOTA5ZSIpLHM9bigiMzQwZCIpLGM9bigiYTIwMiIpLHU9bigiNzY4NyIpLGw9bigiMDM3MiIpO2Z1bmN0aW9uIGYodCl7cmV0dXJuIHYodCl8fHAodCl8fGgodCl8fGQoKX1mdW5jdGlvbiBkKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9ZnVuY3Rpb24gaCh0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT09dHlwZW9mIHQpcmV0dXJuIGcodCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20obik6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9nKHQsZSk6dm9pZCAwfX1mdW5jdGlvbiBwKHQpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSlyZXR1cm4gQXJyYXkuZnJvbSh0KX1mdW5jdGlvbiB2KHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGcodCl9ZnVuY3Rpb24gZyh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIG0oKXtpZih0aGlzLm1vZGU9PT1fLlRJTUUpcmV0dXJuIjAwOjAwIjtpZih0aGlzLm1vZGU9PT1fLkRBVEUpe3ZhciB0PShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKS0xNTA7c3dpdGNoKHRoaXMuZmllbGRzKXtjYXNlIHcuWUVBUjpyZXR1cm4gdC50b1N0cmluZygpO2Nhc2Ugdy5NT05USDpyZXR1cm4gdCsiLTAxIjtkZWZhdWx0OnJldHVybiB0KyItMDEtMDEifX1yZXR1cm4iIn1mdW5jdGlvbiBiKCl7aWYodGhpcy5tb2RlPT09Xy5USU1FKXJldHVybiIyMzo1OSI7aWYodGhpcy5tb2RlPT09Xy5EQVRFKXt2YXIgdD0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCkrMTUwO3N3aXRjaCh0aGlzLmZpZWxkcyl7Y2FzZSB3LllFQVI6cmV0dXJuIHQudG9TdHJpbmcoKTtjYXNlIHcuTU9OVEg6cmV0dXJuIHQrIi0xMiI7ZGVmYXVsdDpyZXR1cm4gdCsiLTEyLTMxIn19cmV0dXJuIiJ9ZnVuY3Rpb24geSh0KXt2YXIgZT0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCksbj1lLTE1MCxyPWUrMTUwO2lmKHQuc3RhcnQpe3ZhciBpPW5ldyBEYXRlKHQuc3RhcnQpLmdldEZ1bGxZZWFyKCk7IWlzTmFOKGkpJiZpPG4mJihuPWkpfWlmKHQuZW5kKXt2YXIgbz1uZXcgRGF0ZSh0LmVuZCkuZ2V0RnVsbFllYXIoKTshaXNOYU4obykmJm8+ciYmKHI9byl9cmV0dXJue3N0YXJ0Om4sZW5kOnJ9fXZhciBfPXtTRUxFQ1RPUjoic2VsZWN0b3IiLE1VTFRJU0VMRUNUT1I6Im11bHRpU2VsZWN0b3IiLFRJTUU6InRpbWUiLERBVEU6ImRhdGUifSx3PXtZRUFSOiJ5ZWFyIixNT05USDoibW9udGgiLERBWToiZGF5In0sUz17UElDS0VSOiJwaWNrZXIiLFNFTEVDVDoic2VsZWN0In0seD17bmFtZToiUGlja2VyIixjb21wb25lbnRzOntrZXlwcmVzczp1WyJhIl19LG1peGluczpbbFsiYyJdLGFbImEiXSxjWyJkZWZhdWx0Il1dLHByb3BzOntuYW1lOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxyYW5nZTp7dHlwZTpBcnJheSxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuW119fSxyYW5nZUtleTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sdmFsdWU6e3R5cGU6W051bWJlcixTdHJpbmcsQXJyYXldLGRlZmF1bHQ6MH0sbW9kZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpfLlNFTEVDVE9SLHZhbGlkYXRvcjpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnZhbHVlcyhfKS5pbmNsdWRlcyh0KX19LGZpZWxkczp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sc3RhcnQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bX0sZW5kOnt0eXBlOlN0cmluZyxkZWZhdWx0OmJ9LGRpc2FibGVkOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sc2VsZWN0b3JUeXBlOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifX0sZGF0YTpmdW5jdGlvbigpe3JldHVybnt2YWx1ZVN5bmM6bnVsbCx2aXNpYmxlOiExLGNvbnRlbnRWaXNpYmxlOiExLHBvcG92ZXI6bnVsbCx2YWx1ZUNoYW5nZVNvdXJjZToiIix0aW1lQXJyYXk6W10sZGF0ZUFycmF5OltdLHZhbHVlQXJyYXk6W10sb2xkVmFsdWVBcnJheTpbXX19LGNvbXB1dGVkOntyYW5nZUFycmF5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yYW5nZTtzd2l0Y2godGhpcy5tb2RlKXtjYXNlIF8uU0VMRUNUT1I6cmV0dXJuW3RdO2Nhc2UgXy5NVUxUSVNFTEVDVE9SOnJldHVybiB0O2Nhc2UgXy5USU1FOnJldHVybiB0aGlzLnRpbWVBcnJheTtjYXNlIF8uREFURTp2YXIgZT10aGlzLmRhdGVBcnJheTtzd2l0Y2godGhpcy5maWVsZHMpe2Nhc2Ugdy5ZRUFSOnJldHVybltlWzBdXTtjYXNlIHcuTU9OVEg6cmV0dXJuW2VbMF0sZVsxXV07ZGVmYXVsdDpyZXR1cm5bZVswXSxlWzFdLGVbMl1dfX1yZXR1cm5bXX0sc3RhcnRBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXREYXRlVmFsdWVBcnJheSh0aGlzLnN0YXJ0LG0uYmluZCh0aGlzKSgpKX0sZW5kQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2V0RGF0ZVZhbHVlQXJyYXkodGhpcy5lbmQsYi5iaW5kKHRoaXMpKCkpfSxzZWxlY3RvclR5cGVDb21wdXRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuc2VsZWN0b3JUeXBlO3JldHVybiBPYmplY3QudmFsdWVzKFMpLmluY2x1ZGVzKHQpP3Q6MD09PVN0cmluZyhuYXZpZ2F0b3IudmVuZG9yKS5pbmRleE9mKCJBcHBsZSIpJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHM+MD9TLlBJQ0tFUjpTLlNFTEVDVH0sc3lzdGVtOmZ1bmN0aW9uKCl7aWYodGhpcy5tb2RlPT09Xy5EQVRFJiYhT2JqZWN0LnZhbHVlcyh3KS5pbmNsdWRlcyh0aGlzLmZpZWxkcykmJnRoaXMuaXNEZXNrdG9wJiYvd2lufG1hYy9pLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKSl7aWYoIkdvb2dsZSBJbmMuIj09PW5hdmlnYXRvci52ZW5kb3IpcmV0dXJuImNocm9tZSI7aWYoL0ZpcmVmb3gvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpcmV0dXJuImZpcmVmb3gifXJldHVybiIifX0sd2F0Y2g6e3Zpc2libGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0PyhjbGVhclRpbWVvdXQodGhpcy5fX2NvbnRlbnRWaXNpYmxlRGVsYXkpLHRoaXMuY29udGVudFZpc2libGU9dCx0aGlzLl9zZWxlY3QoKSk6dGhpcy5fX2NvbnRlbnRWaXNpYmxlRGVsYXk9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLmNvbnRlbnRWaXNpYmxlPXR9KSwzMDApfSx2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3NldFZhbHVlU3luYygpfSxtb2RlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0VmFsdWVTeW5jKCl9LHJhbmdlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0VmFsdWVTeW5jKCl9LHZhbHVlU3luYzpmdW5jdGlvbigpe3RoaXMuX3NldFZhbHVlQXJyYXkoKX0sdmFsdWVBcnJheTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRoaXMubW9kZT09PV8uVElNRXx8dGhpcy5tb2RlPT09Xy5EQVRFKXt2YXIgbj10aGlzLm1vZGU9PT1fLlRJTUU/dGhpcy5fZ2V0VGltZVZhbHVlOnRoaXMuX2dldERhdGVWYWx1ZSxyPXRoaXMudmFsdWVBcnJheSxpPXRoaXMuc3RhcnRBcnJheSxvPXRoaXMuZW5kQXJyYXk7aWYodGhpcy5tb2RlPT09Xy5EQVRFKXt2YXIgYT10aGlzLmRhdGVBcnJheSxzPWFbMl0ubGVuZ3RoLGM9TnVtYmVyKGFbMl1bclsyXV0pfHwxLHU9bmV3IERhdGUoIiIuY29uY2F0KGFbMF1bclswXV0sIi8iKS5jb25jYXQoYVsxXVtyWzFdXSwiLyIpLmNvbmNhdChjKSkuZ2V0RGF0ZSgpO3U8YyYmKHJbMl0tPXUrcy1jKX1uKHIpPG4oaSk/dGhpcy5fY2xvbmVBcnJheShyLGkpOm4ocik+bihvKSYmdGhpcy5fY2xvbmVBcnJheShyLG8pfXQuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXt0IT09ZS5vbGRWYWx1ZUFycmF5W25dJiYoZS5vbGRWYWx1ZUFycmF5W25dPXQsZS5tb2RlPT09Xy5NVUxUSVNFTEVDVE9SJiZlLiR0cmlnZ2VyKCJjb2x1bW5jaGFuZ2UiLHt9LHtjb2x1bW46bix2YWx1ZTp0fSkpfSkpfX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuJGRpc3BhdGNoKCJGb3JtIiwidW5pLWZvcm0tZ3JvdXAtdXBkYXRlIix7dHlwZToiYWRkIix2bTp0aGlzfSksdGhpcy5fY3JlYXRlVGltZSgpLHRoaXMuX2NyZWF0ZURhdGUoKSx0aGlzLl9zZXRWYWx1ZVN5bmMoKX0sYmVmb3JlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuJHJlZnMucGlja2VyLnJlbW92ZSgpLHRoaXMuJGRpc3BhdGNoKCJGb3JtIiwidW5pLWZvcm0tZ3JvdXAtdXBkYXRlIix7dHlwZToicmVtb3ZlIix2bTp0aGlzfSl9LG1ldGhvZHM6e19zaG93OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoIXRoaXMuZGlzYWJsZWQpe3RoaXMudmFsdWVDaGFuZ2VTb3VyY2U9IiI7dmFyIG49dGhpcy4kcmVmcy5waWNrZXI7bi5yZW1vdmUoKSwoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigidW5pLWFwcCIpfHxkb2N1bWVudC5ib2R5KS5hcHBlbmRDaGlsZChuKSxuLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjt2YXIgcj10LmN1cnJlbnRUYXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5wb3BvdmVyPXt0b3A6ci50b3AsbGVmdDpyLmxlZnQsd2lkdGg6ci53aWR0aCxoZWlnaHQ6ci5oZWlnaHR9LHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS52aXNpYmxlPSEwfSksMjApfX0sX2dldEZvcm1EYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3ZhbHVlOnRoaXMudmFsdWVTeW5jLGtleTp0aGlzLm5hbWV9fSxfcmVzZXRGb3JtRGF0YTpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLm1vZGUpe2Nhc2UgXy5TRUxFQ1RPUjp0aGlzLnZhbHVlU3luYz0wO2JyZWFrO2Nhc2UgXy5NVUxUSVNFTEVDVE9SOnRoaXMudmFsdWVTeW5jPXRoaXMudmFsdWUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gMH0pKTticmVhaztjYXNlIF8uREFURTpjYXNlIF8uVElNRTp0aGlzLnZhbHVlU3luYz0iIjticmVhaztkZWZhdWx0OmJyZWFrfX0sX2NyZWF0ZVRpbWU6ZnVuY3Rpb24oKXt2YXIgdD1bXSxlPVtdO3Quc3BsaWNlKDAsdC5sZW5ndGgpO2Zvcih2YXIgbj0wO248MjQ7bisrKXQucHVzaCgobjwxMD8iMCI6IiIpK24pO2Uuc3BsaWNlKDAsZS5sZW5ndGgpO2Zvcih2YXIgcj0wO3I8NjA7cisrKWUucHVzaCgocjwxMD8iMCI6IiIpK3IpO3RoaXMudGltZUFycmF5LnB1c2godCxlKX0sX2NyZWF0ZURhdGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT15KHRoaXMpLG49ZS5zdGFydCxyPWUuZW5kO248PXI7bisrKXQucHVzaChTdHJpbmcobikpO2Zvcih2YXIgaT1bXSxvPTE7bzw9MTI7bysrKWkucHVzaCgobzwxMD8iMCI6IiIpK28pO2Zvcih2YXIgYT1bXSxzPTE7czw9MzE7cysrKWEucHVzaCgoczwxMD8iMCI6IiIpK3MpO3RoaXMuZGF0ZUFycmF5LnB1c2godCxpLGEpfSxfZ2V0VGltZVZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiA2MCp0WzBdK3RbMV19LF9nZXREYXRlVmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9MzE7cmV0dXJuIHRbMF0qZSoxMisodFsxXXx8MCkqZSsodFsyXXx8MCl9LF9jbG9uZUFycmF5OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aCYmbjxlLmxlbmd0aDtuKyspdFtuXT1lW25dfSxfc2V0VmFsdWVTeW5jOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52YWx1ZTtzd2l0Y2godGhpcy5tb2RlKXtjYXNlIF8uTVVMVElTRUxFQ1RPUjpBcnJheS5pc0FycmF5KHQpfHwodD10aGlzLnZhbHVlQXJyYXkpLEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZVN5bmMpfHwodGhpcy52YWx1ZVN5bmM9W10pO2Zvcih2YXIgZT10aGlzLnZhbHVlU3luYy5sZW5ndGg9TWF0aC5tYXgodC5sZW5ndGgsdGhpcy5yYW5nZS5sZW5ndGgpLG49MDtuPGU7bisrKXt2YXIgcj1OdW1iZXIodFtuXSksaT1OdW1iZXIodGhpcy52YWx1ZVN5bmNbbl0pLG89aXNOYU4ocik/aXNOYU4oaSk/MDppOnIsYT10aGlzLnJhbmdlW25dP3RoaXMucmFuZ2Vbbl0ubGVuZ3RoLTE6MDt0aGlzLnZhbHVlU3luYy5zcGxpY2UobiwxLG88MHx8bz5hPzA6byl9YnJlYWs7Y2FzZSBfLlRJTUU6Y2FzZSBfLkRBVEU6dGhpcy52YWx1ZVN5bmM9U3RyaW5nKHQpO2JyZWFrO2RlZmF1bHQ6dmFyIHM9TnVtYmVyKHQpO3RoaXMudmFsdWVTeW5jPXM8MD8wOnM7YnJlYWt9fSxfc2V0VmFsdWVBcnJheTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy52YWx1ZVN5bmM7c3dpdGNoKHRoaXMubW9kZSl7Y2FzZSBfLk1VTFRJU0VMRUNUT1I6dD1mKGUpO2JyZWFrO2Nhc2UgXy5USU1FOnQ9dGhpcy5fZ2V0RGF0ZVZhbHVlQXJyYXkoZSxPYmplY3Qoc1siZyJdKSh7bW9kZTpfLlRJTUV9KSk7YnJlYWs7Y2FzZSBfLkRBVEU6dD10aGlzLl9nZXREYXRlVmFsdWVBcnJheShlLE9iamVjdChzWyJnIl0pKHttb2RlOl8uREFURX0pKTticmVhaztkZWZhdWx0OnQ9W2VdO2JyZWFrfXRoaXMub2xkVmFsdWVBcnJheT1mKHQpLHRoaXMudmFsdWVBcnJheT1mKHQpfSxfZ2V0VmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy52YWx1ZUFycmF5O3N3aXRjaCh0aGlzLm1vZGUpe2Nhc2UgXy5TRUxFQ1RPUjpyZXR1cm4gZVswXTtjYXNlIF8uTVVMVElTRUxFQ1RPUjpyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpO2Nhc2UgXy5USU1FOnJldHVybiB0aGlzLnZhbHVlQXJyYXkubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiB0LnRpbWVBcnJheVtuXVtlXX0pKS5qb2luKCI6Iik7Y2FzZSBfLkRBVEU6cmV0dXJuIHRoaXMudmFsdWVBcnJheS5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuZGF0ZUFycmF5W25dW2VdfSkpLmpvaW4oIi0iKX19LF9nZXREYXRlVmFsdWVBcnJheTpmdW5jdGlvbih0LGUpe3ZhciBuLHI9dGhpcy5tb2RlPT09Xy5EQVRFPyItIjoiOiIsaT10aGlzLm1vZGU9PT1fLkRBVEU/dGhpcy5kYXRlQXJyYXk6dGhpcy50aW1lQXJyYXk7aWYodGhpcy5tb2RlPT09Xy5USU1FKW49MjtlbHNlIHN3aXRjaCh0aGlzLmZpZWxkcyl7Y2FzZSB3LllFQVI6bj0xO2JyZWFrO2Nhc2Ugdy5NT05USDpuPTI7YnJlYWs7ZGVmYXVsdDpuPTM7YnJlYWt9Zm9yKHZhciBvPVN0cmluZyh0KS5zcGxpdChyKSxhPVtdLHM9MDtzPG47cysrKXt2YXIgYz1vW3NdO2EucHVzaChpW3NdLmluZGV4T2YoYykpfXJldHVybiBhLmluZGV4T2YoLTEpPj0wJiYoYT1lP3RoaXMuX2dldERhdGVWYWx1ZUFycmF5KGUpOmEubWFwKChmdW5jdGlvbigpe3JldHVybiAwfSkpKSxhfSxfY2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5fY2xvc2UoKSx0aGlzLnZhbHVlQ2hhbmdlU291cmNlPSJjbGljayI7dmFyIHQ9dGhpcy5fZ2V0VmFsdWUoKTt0aGlzLnZhbHVlU3luYz1BcnJheS5pc0FycmF5KHQpP3QubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKTp0LHRoaXMuJHRyaWdnZXIoImNoYW5nZSIse30se3ZhbHVlOnR9KX0sX2NhbmNlbDpmdW5jdGlvbih0KXtpZigiZmlyZWZveCI9PT10aGlzLnN5c3RlbSl7dmFyIGU9dGhpcy5wb3BvdmVyLG49ZS50b3Ascj1lLmxlZnQsaT1lLndpZHRoLG89ZS5oZWlnaHQsYT10LnBhZ2VYLHM9dC5wYWdlWTtpZihhPnImJmE8citpJiZzPm4mJnM8bitvKXJldHVybn10aGlzLl9jbG9zZSgpLHRoaXMuJHRyaWdnZXIoImNhbmNlbCIse30se30pfSxfY2xvc2U6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMudmlzaWJsZT0hMSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3ZhciBlPXQuJHJlZnMucGlja2VyO2UucmVtb3ZlKCksdC4kZWwucHJlcGVuZChlKSxlLnN0eWxlLmRpc3BsYXk9Im5vbmUifSksMjYwKX0sX3NlbGVjdDpmdW5jdGlvbigpe3RoaXMubW9kZT09PV8uU0VMRUNUT1ImJnRoaXMuc2VsZWN0b3JUeXBlQ29tcHV0ZWQ9PT1TLlNFTEVDVCYmKHRoaXMuJHJlZnMuc2VsZWN0LnNjcm9sbFRvcD0zNCp0aGlzLnZhbHVlQXJyYXlbMF0pfSxfaW5wdXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLnZhbHVlU3luYz10LnRhcmdldC52YWx1ZSx0aGlzLiRuZXh0VGljaygoZnVuY3Rpb24oKXtlLl9jaGFuZ2UoKX0pKX0sX2ZpeElucHV0UG9zaXRpb246ZnVuY3Rpb24odCl7aWYoImNocm9tZSI9PT10aGlzLnN5c3RlbSl7dmFyIGU9dGhpcy4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10aGlzLiRyZWZzLmlucHV0LnN0eWxlLHI9MzI7bi5sZWZ0PSIiLmNvbmNhdCh0LmNsaWVudFgtZS5sZWZ0LTEuNSpyLCJweCIpLG4udG9wPSIiLmNvbmNhdCh0LmNsaWVudFktZS50b3AtLjUqciwicHgiKX19LF9waWNrZXJWaWV3Q2hhbmdlOmZ1bmN0aW9uKHQpe3RoaXMudmFsdWVBcnJheT10aGlzLl9sMTBuQ29sdW1uKHQuZGV0YWlsLnZhbHVlLCEwKX0sX2wxMG5Db2x1bW46ZnVuY3Rpb24odCxlKXtpZih0aGlzLm1vZGU9PT1fLkRBVEUpe3ZhciBuPU9iamVjdChsWyJhIl0pKCk7aWYoIW4uc3RhcnRzV2l0aCgiemgiKSlzd2l0Y2godGhpcy5maWVsZHMpe2Nhc2Ugdy5ZRUFSOnJldHVybiB0O2Nhc2Ugdy5NT05USDpyZXR1cm5bdFsxXSx0WzBdXTtkZWZhdWx0OnN3aXRjaChuKXtjYXNlImVzIjpjYXNlImZyIjpyZXR1cm5bdFsyXSx0WzFdLHRbMF1dO2RlZmF1bHQ6cmV0dXJuIGU/W3RbMl0sdFswXSx0WzFdXTpbdFsxXSx0WzJdLHRbMF1dfX19cmV0dXJuIHR9LF9sMTBuSXRlbTpmdW5jdGlvbih0LGUpe2lmKHRoaXMubW9kZT09PV8uREFURSl7dmFyIG49T2JqZWN0KGxbImEiXSkoKTtpZihuLnN0YXJ0c1dpdGgoInpoIikpe3ZhciByPVsi5bm0Iiwi5pyIIiwi5pelIl07cmV0dXJuIHQrcltlXX1pZih0aGlzLmZpZWxkcyE9PXcuWUVBUiYmZT09PSh0aGlzLmZpZWxkcz09PXcuTU9OVEh8fCJlcyIhPT1uJiYiZnIiIT09bj8wOjEpKXt2YXIgaTtzd2l0Y2gobil7Y2FzZSJlcyI6aT1bImVuZXJvIiwiZmVicmVybyIsIm1hcnpvIiwiYWJyaWwiLCJtYXlvIiwianVuaW8iLCLigIvigItqdWxpbyIsImFnb3N0byIsInNlcHRpZW1icmUiLCJvY3R1YnJlIiwibm92aWVtYnJlIiwiZGljaWVtYnJlIl07YnJlYWs7Y2FzZSJmciI6aT1bImphbnZpZXIiLCJmw6l2cmllciIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsbGV0IiwiYW/Du3QiLCJzZXB0ZW1icmUiLCJvY3RvYnJlIiwibm92ZW1icmUiLCJkw6ljZW1icmUiXTticmVhaztkZWZhdWx0Omk9WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdO2JyZWFrfXJldHVybiBpW051bWJlcih0KS0xXX19cmV0dXJuIHR9fX0saz14LEM9KG4oIjY4YjUiKSxuKCI4ODQ0IikpLFQ9T2JqZWN0KENbImEiXSkoayxpLG8sITEsbnVsbCxudWxsLG51bGwpO2VbImRlZmF1bHQiXT1ULmV4cG9ydHN9LCI3NWUyIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9eyIuL2FkL2luZGV4LnZ1ZSI6IjMzZTIiLCIuL2NvdmVyLWltYWdlL2luZGV4LnZ1ZSI6ImZmNWQiLCIuL2NvdmVyLXZpZXcvaW5kZXgudnVlIjoiNGYyZSIsIi4vbWFwL2luZGV4LnZ1ZSI6ImRlNDMiLCIuL3BpY2tlci9pbmRleC52dWUiOiI3NWRkIiwiLi92aWRlby9pbmRleC52dWUiOiI0YzY4IiwiLi92aWV3L2luZGV4LnZ1ZSI6ImVmZGQiLCIuL3dlYi12aWV3L2luZGV4LnZ1ZSI6IjY5NWMifTtmdW5jdGlvbiBpKHQpe3ZhciBlPW8odCk7cmV0dXJuIG4oZSl9ZnVuY3Rpb24gbyh0KXtpZighbi5vKHIsdCkpe3ZhciBlPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK3QrIiciKTt0aHJvdyBlLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGV9cmV0dXJuIHJbdF19aS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHIpfSxpLnJlc29sdmU9byx0LmV4cG9ydHM9aSxpLmlkPSI3NWUyIn0sNzY4NzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2VbImEiXT17bmFtZToiS2V5cHJlc3MiLHByb3BzOntkaXNhYmxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9e2VzYzpbIkVzYyIsIkVzY2FwZSJdLHRhYjoiVGFiIixlbnRlcjoiRW50ZXIiLHNwYWNlOlsiICIsIlNwYWNlYmFyIl0sdXA6WyJVcCIsIkFycm93VXAiXSxsZWZ0OlsiTGVmdCIsIkFycm93TGVmdCJdLHJpZ2h0OlsiUmlnaHQiLCJBcnJvd1JpZ2h0Il0sZG93bjpbIkRvd24iLCJBcnJvd0Rvd24iXSxkZWxldGU6WyJCYWNrc3BhY2UiLCJEZWxldGUiLCJEZWwiXX0sbj1mdW5jdGlvbihuKXtpZighdC5kaXNhYmxlKXt2YXIgcj1PYmplY3Qua2V5cyhlKS5maW5kKChmdW5jdGlvbih0KXt2YXIgcj1uLmtleSxpPWVbdF07cmV0dXJuIGk9PT1yfHxBcnJheS5pc0FycmF5KGkpJiZpLmluY2x1ZGVzKHIpfSkpO3ImJnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC4kZW1pdChyLG4pfSksMCl9fTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsbiksdGhpcy4kb25jZSgiaG9vazpiZWZvcmVEZXN0cm95IiwoZnVuY3Rpb24oKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsbil9KSl9LHJlbmRlcjpmdW5jdGlvbigpe3JldHVybiBudWxsfX19LCI3NmQ3IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjM5MzQiKSxpPW4ubihyKTtpLmF9LDc4MjE6ZnVuY3Rpb24odCxlLG4pe30sIjc4YjciOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJiYXNlNjRUb0FycmF5QnVmZmVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKSxuLmQoZSwiYXJyYXlCdWZmZXJUb0Jhc2U2NCIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSk7dmFyIHI9bigiOTE1MSIpO2Z1bmN0aW9uIGkodCl7cmV0dXJuIE9iamVjdChyWyJkZWNvZGUiXSkodCl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gT2JqZWN0KHJbImVuY29kZSJdKSh0KX19LCI3OTNjIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXtmdW5jdGlvbiByKGUsbil7dmFyIHI9ZS5sYXRpdHVkZSxpPWUubG9uZ2l0dWRlLG89ZS5zY2FsZSxhPWUubmFtZSxzPWUuYWRkcmVzcyxjPXQsdT1jLmludm9rZUNhbGxiYWNrSGFuZGxlcjtnZXRBcHAoKS4kcm91dGVyLnB1c2goe3R5cGU6Im5hdmlnYXRlVG8iLHBhdGg6Ii9vcGVuLWxvY2F0aW9uIixxdWVyeTp7bGF0aXR1ZGU6cixsb25naXR1ZGU6aSxzY2FsZTpvLG5hbWU6YSxhZGRyZXNzOnN9fSwoZnVuY3Rpb24oKXt1KG4se2Vyck1zZzoib3BlbkxvY2F0aW9uOm9rIn0pfSksKGZ1bmN0aW9uKCl7dShuLHtlcnJNc2c6Im9wZW5Mb2NhdGlvbjpmYWlsIn0pfSkpfW4uZChlLCJvcGVuTG9jYXRpb24iLChmdW5jdGlvbigpe3JldHVybiByfSkpfS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sNzk1ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0LHIpe24uZChlLCJnZXRTZWxlY3RlZFRleHRSYW5nZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSk7dmFyIGk9bigiNzU1MyIpLG89bigiNzQ1YSIpLGE9bigiOTEzMSIpLHM9T2JqZWN0KGlbImEiXSkoImdldFNlbGVjdGVkVGV4dFJhbmdlRXZlbnQiKTtmdW5jdGlvbiBjKGUsbil7dmFyIHI9T2JqZWN0KG9bImEiXSkoKTt0LnB1Ymxpc2hIYW5kbGVyKCJnZXRTZWxlY3RlZFRleHRSYW5nZSIse3BhZ2VJZDpyLGNhbGxiYWNrSWQ6cy5wdXNoKChmdW5jdGlvbih0KXtPYmplY3QoYVsiYSJdKShuLHQpfSkpfSxyKX10LnN1YnNjcmliZSgib25HZXRTZWxlY3RlZFRleHRSYW5nZSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXQuY2FsbGJhY2tJZCxuPXQuZGF0YTtyLmxvZygib25HZXRTZWxlY3RlZFRleHRSYW5nZSIpO3ZhciBpPXMucG9wKGUpO2kmJmkobil9KSl9LmNhbGwodGhpcyxuKCIyYzlmIiksbigiNDE4YiIpWyJkZWZhdWx0Il0pfSwiNzk2YyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsInNldE5hdmlnYXRpb25CYXJDb2xvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKGUsInNldE5hdmlnYXRpb25CYXJUaXRsZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSk7dmFyIHI9WyIjZmZmZmZmIiwiIzAwMDAwMCJdLGk9e2Zyb250Q29sb3I6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe2lmKC0xPT09ci5pbmRleE9mKHQpKXJldHVybidpbnZhbGlkIGZyb250Q29sb3IgIicuY29uY2F0KHQsJyInKX19LGJhY2tncm91bmRDb2xvcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LGFuaW1hdGlvbjp7dHlwZTpPYmplY3QsZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybntkdXJhdGlvbjowLHRpbWluZ0Z1bmM6ImxpbmVhciJ9fSx2YWxpZGF0b3I6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sZT1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMDtlLmFuaW1hdGlvbj17ZHVyYXRpb246dC5kdXJhdGlvbnx8MCx0aW1pbmdGdW5jOnQudGltaW5nRnVuY3x8ImxpbmVhciJ9fX19LG89e3RpdGxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH19fSwiN2FhNCI6ZnVuY3Rpb24odCxlLG4pe30sIjdhYTkiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJ1bmktcmljaC10ZXh0Iix0Ll9nKHt9LHQuJGxpc3RlbmVycyksW24oImRpdiIse3JlZjoiY29udGVudCJ9LFtuKCJ2LXVuaS1yZXNpemUtc2Vuc29yIix7cmVmOiJzZW5zb3IiLG9uOntyZXNpemU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX3VwZGF0ZVZpZXcoKX19fSldLDEpXSl9LGk9W10sbz1uKCI0YjIxIiksYT1uKCIzNDBkIikscz1uKCI0NzM4IiksYz17YToiIixhYmJyOiIiLGFkZHJlc3M6IiIsYXJ0aWNsZToiIixhc2lkZToiIixiOiIiLGJkaToiIixiZG86WyJkaXIiXSxiaWc6IiIsYmxvY2txdW90ZToiIixicjoiIixjYXB0aW9uOiIiLGNlbnRlcjoiIixjaXRlOiIiLGNvZGU6IiIsY29sOlsic3BhbiIsIndpZHRoIl0sY29sZ3JvdXA6WyJzcGFuIiwid2lkdGgiXSxkZDoiIixkZWw6IiIsZGl2OiIiLGRsOiIiLGR0OiIiLGVtOiIiLGZpZWxkc2V0OiIiLGZvbnQ6IiIsZm9vdGVyOiIiLGgxOiIiLGgyOiIiLGgzOiIiLGg0OiIiLGg1OiIiLGg2OiIiLGhlYWRlcjoiIixocjoiIixpOiIiLGltZzpbImFsdCIsInNyYyIsImhlaWdodCIsIndpZHRoIl0saW5zOiIiLGxhYmVsOiIiLGxlZ2VuZDoiIixsaToiIixtYXJrOiIiLG5hdjoiIixvbDpbInN0YXJ0IiwidHlwZSJdLHA6IiIscHJlOiIiLHE6IiIscnQ6IiIscnVieToiIixzOiIiLHNlY3Rpb246IiIsc21hbGw6IiIsc3BhbjoiIixzdHJvbmc6IiIsc3ViOiIiLHN1cDoiIix0YWJsZTpbIndpZHRoIl0sdGJvZHk6IiIsdGQ6WyJjb2xzcGFuIiwiaGVpZ2h0Iiwicm93c3BhbiIsIndpZHRoIl0sdGZvb3Q6IiIsdGg6WyJjb2xzcGFuIiwiaGVpZ2h0Iiwicm93c3BhbiIsIndpZHRoIl0sdGhlYWQ6IiIsdHI6WyJjb2xzcGFuIiwiaGVpZ2h0Iiwicm93c3BhbiIsIndpZHRoIl0sdHQ6IiIsdToiIix1bDoiIn0sdT17YW1wOiImIixndDoiPiIsbHQ6IjwiLG5ic3A6IiAiLHF1b3Q6JyInLGFwb3M6IicifTtmdW5jdGlvbiBsKHQpe3JldHVybiB0LnJlcGxhY2UoLyYoKFthLXpBLVpdKyl8KCN4ezAsMX1bXGRhLXpBLVpdKykpOy9naSwoZnVuY3Rpb24odCxlKXtpZihPYmplY3QoYVsiaSJdKSh1LGUpJiZ1W2VdKXJldHVybiB1W2VdO2lmKC9eI1swLTldezEsNH0kLy50ZXN0KGUpKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUuc2xpY2UoMSkpO2lmKC9eI3hbMC05YS1mXXsxLDR9JC9pLnRlc3QoZSkpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoIjAiK2Uuc2xpY2UoMSkpO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBuLmlubmVySFRNTD10LG4uaW5uZXJUZXh0fHxuLnRleHRDb250ZW50fSkpfWZ1bmN0aW9uIGYodCxlLG4pe3JldHVybiJpbWciPT09dCYmInNyYyI9PT1lP09iamVjdChzWyJhIl0pKG4pOm59ZnVuY3Rpb24gZCh0LGUsbixyKXtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZihPYmplY3QoYVsibCJdKSh0KSlpZihPYmplY3QoYVsiaSJdKSh0LCJ0eXBlIikmJiJub2RlIiE9PXQudHlwZSkidGV4dCI9PT10LnR5cGUmJiJzdHJpbmciPT09dHlwZW9mIHQudGV4dCYmIiIhPT10LnRleHQmJmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobCh0LnRleHQpKSk7ZWxzZXtpZigic3RyaW5nIiE9PXR5cGVvZiB0Lm5hbWV8fCF0Lm5hbWUpcmV0dXJuO3ZhciBpPXQubmFtZS50b0xvd2VyQ2FzZSgpO2lmKCFPYmplY3QoYVsiaSJdKShjLGkpKXJldHVybjt2YXIgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGkpO2lmKCFvKXJldHVybjt2YXIgcz10LmF0dHJzO2lmKG4mJm8uc2V0QXR0cmlidXRlKG4sIiIpLE9iamVjdChhWyJsIl0pKHMpKXt2YXIgdT1jW2ldfHxbXTtPYmplY3Qua2V5cyhzKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1zW3RdO3N3aXRjaCh0KXtjYXNlImNsYXNzIjpBcnJheS5pc0FycmF5KGUpJiYoZT1lLmpvaW4oIiAiKSk7Y2FzZSJzdHlsZSI6by5zZXRBdHRyaWJ1dGUodCxlKTticmVhaztkZWZhdWx0Oi0xIT09dS5pbmRleE9mKHQpJiZvLnNldEF0dHJpYnV0ZSh0LGYoaSx0LGUpKX19KSl9aCh0LG8scik7dmFyIHA9dC5jaGlsZHJlbjtBcnJheS5pc0FycmF5KHApJiZwLmxlbmd0aCYmZCh0LmNoaWxkcmVuLG8sbixyKSxlLmFwcGVuZENoaWxkKG8pfX0pKSxlfWZ1bmN0aW9uIGgodCxlLG4pe1siYSIsImltZyJdLmluY2x1ZGVzKHQubmFtZSkmJm4mJihlLnNldEF0dHJpYnV0ZSgib25DbGljayIsInJldHVybiBmYWxzZTsiKSxlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoZnVuY3Rpb24oZSl7bihlLHtub2RlOnR9KSxlLnN0b3BQcm9wYWdhdGlvbigpfSksITApKX12YXIgcD17bmFtZToiUmljaFRleHQiLHByb3BzOntub2Rlczp7dHlwZTpbQXJyYXksU3RyaW5nXSxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuW119fX0sd2F0Y2g6e25vZGVzOmZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlck5vZGVzKHQpfX0sbW91bnRlZDpmdW5jdGlvbigpe3RoaXMuX3JlbmRlck5vZGVzKHRoaXMubm9kZXMpfSxtZXRob2RzOntfcmVuZGVyTm9kZXM6ZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10aGlzO3doaWxlKG4pIWUmJihlPW4uJG9wdGlvbnMuX3Njb3BlSWQpLG49bi4kcGFyZW50O3ZhciByPSEhdGhpcy4kbGlzdGVuZXJzLml0ZW1jbGljaztpZih0aGlzLl9pc01vdW50ZWQpeyJzdHJpbmciPT09dHlwZW9mIHQmJih0PU9iamVjdChvWyJhIl0pKHQpKTt2YXIgaT1kKHQsZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGUsciYmdGhpcy50cmlnZ2VySXRlbUNsaWNrKTtpLmFwcGVuZENoaWxkKHRoaXMuJHJlZnMuc2Vuc29yLiRlbCk7dmFyIGE9dGhpcy4kcmVmcy5jb250ZW50O2EuaW5uZXJIVE1MPSIiLGEuYXBwZW5kQ2hpbGQoaSl9fSxfdXBkYXRlVmlldzpmdW5jdGlvbigpe3dpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidXBkYXRldmlldyIpKX0sdHJpZ2dlckl0ZW1DbGljazpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307dGhpcy4kdHJpZ2dlcigiaXRlbWNsaWNrIix0LGUpfX19LHY9cCxnPW4oIjg4NDQiKSxtPU9iamVjdChnWyJhIl0pKHYscixpLCExLG51bGwsbnVsbCxudWxsKTtlWyJkZWZhdWx0Il09bS5leHBvcnRzfSwiN2NjZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKGUsImIiLChmdW5jdGlvbigpe3JldHVybiBjfSkpO3ZhciByPW4oIjM0MGQiKSxpPWZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7dC5oZWlnaHQ9dC53aWR0aD0wO3ZhciBlPXQuZ2V0Q29udGV4dCgiMmQiKSxuPWUuYmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8ZS53ZWJraXRCYWNraW5nU3RvcmVQaXhlbFJhdGlvfHxlLm1vekJhY2tpbmdTdG9yZVBpeGVsUmF0aW98fGUubXNCYWNraW5nU3RvcmVQaXhlbFJhdGlvfHxlLm9CYWNraW5nU3RvcmVQaXhlbFJhdGlvfHxlLmJhY2tpbmdTdG9yZVBpeGVsUmF0aW98fDE7cmV0dXJuKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwxKS9ufSgpLG89ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gdClPYmplY3QoclsiaSJdKSh0LG4pJiZlKHRbbl0sbil9LGE9e2ZpbGxSZWN0OiJhbGwiLGNsZWFyUmVjdDoiYWxsIixzdHJva2VSZWN0OiJhbGwiLG1vdmVUbzoiYWxsIixsaW5lVG86ImFsbCIsYXJjOlswLDEsMl0sYXJjVG86ImFsbCIsYmV6aWVyQ3VydmVUbzoiYWxsIixpc1BvaW50aW5QYXRoOiJhbGwiLGlzUG9pbnRpblN0cm9rZToiYWxsIixxdWFkcmF0aWNDdXJ2ZVRvOiJhbGwiLHJlY3Q6ImFsbCIsdHJhbnNsYXRlOiJhbGwiLGNyZWF0ZVJhZGlhbEdyYWRpZW50OiJhbGwiLGNyZWF0ZUxpbmVhckdyYWRpZW50OiJhbGwiLHRyYW5zZm9ybTpbNCw1XSxzZXRUcmFuc2Zvcm06WzQsNV19LHM9Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnByb3RvdHlwZTtmdW5jdGlvbiBjKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV07dC53aWR0aD10Lm9mZnNldFdpZHRoKihlP2k6MSksdC5oZWlnaHQ9dC5vZmZzZXRIZWlnaHQqKGU/aToxKSx0Ll9faGlkcGlfXz1lLHQuX19jb250ZXh0MmRfXz10LmdldENvbnRleHQoIjJkIiksdC5fX2NvbnRleHQyZF9fLl9faGlkcGlfXz1lfXMuZHJhd0ltYWdlQnlDYW52YXM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixyLG8sYSxzLGMsdSxsLGYpe2lmKCF0aGlzLl9faGlkcGlfXylyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bio9aSxyKj1pLG8qPWksYSo9aSxzKj1pLGMqPWksdT1mP3UqaTp1LGw9Zj9sKmk6bCx0LmNhbGwodGhpcyxlLG4scixvLGEscyxjLHUsbCl9fShzLmRyYXdJbWFnZSksMSE9PWkmJihvKGEsKGZ1bmN0aW9uKHQsZSl7c1tlXT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtpZighdGhpcy5fX2hpZHBpX18pcmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7aWYoImFsbCI9PT10KW49bi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Kml9KSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKW5bdFtyXV0qPWk7cmV0dXJuIGUuYXBwbHkodGhpcyxuKX19KHNbZV0pfSkpLHMuc3Ryb2tlPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe2lmKCF0aGlzLl9faGlkcGlfXylyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5saW5lV2lkdGgqPWksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5saW5lV2lkdGgvPWl9fShzLnN0cm9rZSkscy5maWxsVGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtpZighdGhpcy5fX2hpZHBpX18pcmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7ZVsxXSo9aSxlWzJdKj1pLGVbM10qPWksaXNOYU4oZVszXSkmJihlLmxlbmd0aD0zKTt2YXIgbj10aGlzLl9fZm9udF9ffHx0aGlzLmZvbnQ7dGhpcy5mb250PW4ucmVwbGFjZSgvKFxkK1wuP1xkKikocHh8ZW18cmVtfHB0KS9nLChmdW5jdGlvbih0LGUsbil7cmV0dXJuIGUqaStufSkpLHQuYXBwbHkodGhpcyxlKSx0aGlzLmZvbnQ9bn19KHMuZmlsbFRleHQpLHMuc3Ryb2tlVGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtpZighdGhpcy5fX2hpZHBpX18pcmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7ZVsxXSo9aSxlWzJdKj1pLGVbM10qPWksaXNOYU4oZVszXSkmJihlLmxlbmd0aD0zKTt2YXIgbj10aGlzLl9fZm9udF9ffHx0aGlzLmZvbnQ7dGhpcy5mb250PW4ucmVwbGFjZSgvKFxkK1wuP1xkKikocHh8ZW18cmVtfHB0KS9nLChmdW5jdGlvbih0LGUsbil7cmV0dXJuIGUqaStufSkpLHQuYXBwbHkodGhpcyxlKSx0aGlzLmZvbnQ9bn19KHMuc3Ryb2tlVGV4dCkscy5kcmF3SW1hZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIXRoaXMuX19oaWRwaV9fKXJldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnNjYWxlKGksaSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5zY2FsZSgxL2ksMS9pKX19KHMuZHJhd0ltYWdlKSl9LCI3ZDk2IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0LHIpe3ZhciBpPW4oIjM0MGQiKSxvPW4oImM4MGMiKSxhPW4oIjVkYjkiKSxzPW4oIjQ5ZGYiKSxjPW4oIjRlNDYiKTtmdW5jdGlvbiB1KCl7dmFyIGU9bnVsbDt0cnl7ZT13aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIpfWNhdGNoKHIpe31pZihlKXt2YXIgbj1mdW5jdGlvbihlKXt0LmVtaXQoImFwaS4iK29bImIiXSx7dGhlbWU6ZS5tYXRjaGVzPyJkYXJrIjoibGlnaHQifSl9O2UuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsbik6ZS5hZGRMaXN0ZW5lcihuKX19ZVsiYSJdPXtuYW1lOiJBcHAiLGNvbXBvbmVudHM6YVsiYSJdLG1peGluczpzWyJkZWZhdWx0Il0scHJvcHM6e2tlZXBBbGl2ZUluY2x1ZGU6e3R5cGU6QXJyYXksZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybltdfX19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57dHJhbnNpdGlvbk5hbWU6ImZhZGUiLGhpZGVUYWJCYXI6ITEsc3lzQ29tcG9uZW50czp0aGlzLiRzeXNDb21wb25lbnRzLHNob3dMYXlvdXQ6ITEsc2hvd01heFdpZHRoOiExLHRhYkJhck1lZGlhUXVlcnk6ITF9fSxjb21wdXRlZDp7a2V5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHJvdXRlLm1ldGEubmFtZSsiLSIrdGhpcy4kcm91dGUucGFyYW1zLl9faWRfXysiLSIrKF9fdW5pQ29uZmlnLnJlTGF1bmNofHwxKX0sdGFiQmFyT3B0aW9uczpmdW5jdGlvbigpe3JldHVybiBjWyJhIl19LGhhc1RhYkJhcjpmdW5jdGlvbigpe3JldHVybiBjWyJhIl0ubGlzdCYmY1siYSJdLmxpc3QubGVuZ3RofSxzaG93VGFiQmFyOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaGlkZVRhYkJhciYmKHRoaXMuJHJvdXRlLm1ldGEuaXNUYWJCYXJ8fHRoaXMudGFiQmFyTWVkaWFRdWVyeSl9fSx3YXRjaDp7JHJvdXRlOmZ1bmN0aW9uKGUsbil7dC5lbWl0KCJvbkhpZGVQb3B1cCIpfSxoaWRlVGFiQmFyOmZ1bmN0aW9uKHQsZSl7aWYodW5pLmNhbklVc2UoImNzcy52YXIiKSl7dmFyIG49dD8wOm9bImQiXSxpPXVuaS5jYW5JVXNlKCJjc3MuZW52Iik/ImVudiI6dW5pLmNhbklVc2UoImNzcy5jb25zdGFudCIpPyJjb25zdGFudCI6IiIsYT1uJiZpPyJjYWxjKCIuY29uY2F0KG4sInB4ICsgIikuY29uY2F0KGksIihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSkiKToiIi5jb25jYXQobiwicHgiKTtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0td2luZG93LWJvdHRvbSIsYSksci5kZWJ1ZygidW5pLiIuY29uY2F0KGE/InNob3dUYWJCYXIiOiJoaWRlVGFiQmFyIiwi77yaLS13aW5kb3ctYm90dG9tPSIpLmNvbmNhdChhKSl9d2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyZXNpemUiKSl9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dW5pLmNhbklVc2UoImNzcy52YXIiKSYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCItLXN0YXR1cy1iYXItaGVpZ2h0IiwiMHB4IiksdGhpcy5pbml0TWVkaWFRdWVyeSgpfSxtb3VudGVkOmZ1bmN0aW9uKCl7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbihlKXtPYmplY3QoaVsibCJdKShlLmRhdGEpJiYiV0VCX0lOVk9LRV9BUFBTRVJWSUNFIj09PWUuZGF0YS50eXBlJiZ0LmVtaXQoIm9uV2ViSW52b2tlQXBwU2VydmljZSIsZS5kYXRhLmRhdGEsZS5kYXRhLnBhZ2VJZCl9KSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsKGZ1bmN0aW9uKCl7InZpc2libGUiPT09ZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlP3QuZW1pdCgib25BcHBFbnRlckZvcmVncm91bmQiLHt9KTp0LmVtaXQoIm9uQXBwRW50ZXJCYWNrZ3JvdW5kIil9KSksdSgpfSxtZXRob2RzOntvbkxheW91dDpmdW5jdGlvbih0KXt0aGlzLnNob3dMYXlvdXQ9dH0sb25NYXhXaWR0aDpmdW5jdGlvbih0KXt0aGlzLnNob3dNYXhXaWR0aD10fSxpbml0TWVkaWFRdWVyeTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYod2luZG93Lm1hdGNoTWVkaWEmJmNbImEiXS5tYXRjaE1lZGlhJiZPYmplY3QoaVsiaSJdKShjWyJhIl0ubWF0Y2hNZWRpYSwibWluV2lkdGgiKSl7dmFyIGU9d2luZG93Lm1hdGNoTWVkaWEoIihtaW4td2lkdGg6ICIrY1siYSJdLm1hdGNoTWVkaWEubWluV2lkdGgrInB4KSIpO2UuYWRkTGlzdGVuZXIoKGZ1bmN0aW9uKGUpe3QudGFiQmFyTWVkaWFRdWVyeT1lLm1hdGNoZXN9KSksdGhpcy50YWJCYXJNZWRpYVF1ZXJ5PWUubWF0Y2hlc319fX19KS5jYWxsKHRoaXMsbigiMmM5ZiIpLG4oIjQxOGIiKVsiZGVmYXVsdCJdKX0sIjdlZmEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciBpPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJ1bmktaW1hZ2UiLHQuX2coe30sdC4kbGlzdGVuZXJzKSxbbigiZGl2Iix7cmVmOiJjb250ZW50IixzdHlsZTp0LnN0eWxlfSksIndpZHRoRml4Ij09PXQubW9kZXx8ImhlaWdodEZpeCI9PT10Lm1vZGU/bigidi11bmktcmVzaXplLXNlbnNvciIse3JlZjoic2Vuc29yIixvbjp7cmVzaXplOmZ1bmN0aW9uKGUpe3JldHVybiB0Ll9maXhTaXplKCl9fX0pOnQuX2UoKV0sMSl9LG89W107ZnVuY3Rpb24gYSh0KXtyZXR1cm4gYT0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT1yKFN5bWJvbC5pdGVyYXRvcik/ZnVuY3Rpb24odCl7cmV0dXJuIHIodCl9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6cih0KX0sYSh0KX1mdW5jdGlvbiBzKHQpe3JldHVybigidW5kZWZpbmVkIj09PXR5cGVvZiBuYXZpZ2F0b3J8fGEobmF2aWdhdG9yKSkmJiJHb29nbGUgSW5jLiI9PT1uYXZpZ2F0b3IudmVuZG9yJiZ0PjEwJiYodD0yKk1hdGgucm91bmQodC8yKSksdH12YXIgYz17bmFtZToiSW1hZ2UiLHByb3BzOntzcmM6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LG1vZGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6InNjYWxlVG9GaWxsIn0sbGF6eUxvYWQ6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxkcmFnZ2FibGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntvcmlnaW5hbFdpZHRoOjAsb3JpZ2luYWxIZWlnaHQ6MCxvcmlnaW5hbFN0eWxlOnt3aWR0aDoiIixoZWlnaHQ6IiJ9LGNvbnRlbnRQYXRoOiIifX0sY29tcHV0ZWQ6e3JhdGlvOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3JpZ2luYWxXaWR0aCYmdGhpcy5vcmlnaW5hbEhlaWdodD90aGlzLm9yaWdpbmFsV2lkdGgvdGhpcy5vcmlnaW5hbEhlaWdodDowfSxzdHlsZTpmdW5jdGlvbigpe3ZhciB0PSJhdXRvIixlPSIiLG49Im5vLXJlcGVhdCI7c3dpdGNoKHRoaXMubW9kZSl7Y2FzZSJhc3BlY3RGaXQiOnQ9ImNvbnRhaW4iLGU9ImNlbnRlciBjZW50ZXIiO2JyZWFrO2Nhc2UiYXNwZWN0RmlsbCI6dD0iY292ZXIiLGU9ImNlbnRlciBjZW50ZXIiO2JyZWFrO2Nhc2Uid2lkdGhGaXgiOmNhc2UiaGVpZ2h0Rml4Ijp0PSIxMDAlIDEwMCUiO2JyZWFrO2Nhc2UidG9wIjplPSJjZW50ZXIgdG9wIjticmVhaztjYXNlImJvdHRvbSI6ZT0iY2VudGVyIGJvdHRvbSI7YnJlYWs7Y2FzZSJjZW50ZXIiOmU9ImNlbnRlciBjZW50ZXIiO2JyZWFrO2Nhc2UibGVmdCI6ZT0ibGVmdCBjZW50ZXIiO2JyZWFrO2Nhc2UicmlnaHQiOmU9InJpZ2h0IGNlbnRlciI7YnJlYWs7Y2FzZSJ0b3AgbGVmdCI6ZT0ibGVmdCB0b3AiO2JyZWFrO2Nhc2UidG9wIHJpZ2h0IjplPSJyaWdodCB0b3AiO2JyZWFrO2Nhc2UiYm90dG9tIGxlZnQiOmU9ImxlZnQgYm90dG9tIjticmVhaztjYXNlImJvdHRvbSByaWdodCI6ZT0icmlnaHQgYm90dG9tIjticmVhaztkZWZhdWx0OnQ9IjEwMCUgMTAwJSIsZT0iMCUgMCUiO2JyZWFrfXJldHVybnsiYmFja2dyb3VuZC1pbWFnZSI6dGhpcy5jb250ZW50UGF0aD8ndXJsKCInLmNvbmNhdCh0aGlzLmNvbnRlbnRQYXRoLCciKScpOiJub25lIiwiYmFja2dyb3VuZC1wb3NpdGlvbiI6ZSwiYmFja2dyb3VuZC1zaXplIjp0LCJiYWNrZ3JvdW5kLXJlcGVhdCI6bn19fSx3YXRjaDp7c3JjOmZ1bmN0aW9uKHQsZSl7dGhpcy5fbG9hZEltYWdlKCl9LG1vZGU6ZnVuY3Rpb24odCxlKXsid2lkdGhGaXgiIT09ZSYmImhlaWdodEZpeCIhPT1lfHx0aGlzLl9yZXNldFNpemUoKSwid2lkdGhGaXgiIT09dCYmImhlaWdodEZpeCIhPT10fHx0aGlzLl9maXhTaXplKCl9LGNvbnRlbnRQYXRoOmZ1bmN0aW9uKHQpeyF0JiZ0aGlzLl9faW1nJiYodGhpcy5fX2ltZy5yZW1vdmUoKSxkZWxldGUgdGhpcy5fX2ltZyl9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dGhpcy5vcmlnaW5hbFN0eWxlLndpZHRoPXRoaXMuJGVsLnN0eWxlLndpZHRofHwiIix0aGlzLm9yaWdpbmFsU3R5bGUuaGVpZ2h0PXRoaXMuJGVsLnN0eWxlLmhlaWdodHx8IiIsdGhpcy5fbG9hZEltYWdlKCl9LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9jbGVhckltYWdlKCl9LG1ldGhvZHM6e19maXhTaXplOmZ1bmN0aW9uKCl7aWYodGhpcy5yYXRpbyl7dmFyIHQ9dGhpcy4kZWw7aWYoIndpZHRoRml4Ij09PXRoaXMubW9kZSl7dmFyIGU9dC5vZmZzZXRXaWR0aDtlJiYodC5zdHlsZS5oZWlnaHQ9cyhlL3RoaXMucmF0aW8pKyJweCIpfWVsc2UgaWYoImhlaWdodEZpeCI9PT10aGlzLm1vZGUpe3ZhciBuPXQub2Zmc2V0SGVpZ2h0O24mJih0LnN0eWxlLndpZHRoPXMobip0aGlzLnJhdGlvKSsicHgiKX19d2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJ1cGRhdGV2aWV3IikpfSxfcmVzZXRTaXplOmZ1bmN0aW9uKCl7dGhpcy4kZWwuc3R5bGUud2lkdGg9dGhpcy5vcmlnaW5hbFN0eWxlLndpZHRoLHRoaXMuJGVsLnN0eWxlLmhlaWdodD10aGlzLm9yaWdpbmFsU3R5bGUuaGVpZ2h0fSxfcmVzZXREYXRhOmZ1bmN0aW9uKCl7dGhpcy5vcmlnaW5hbFdpZHRoPTAsdGhpcy5vcmlnaW5hbEhlaWdodD0wLHRoaXMuY29udGVudFBhdGg9IiJ9LF9sb2FkSW1hZ2U6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy4kZ2V0UmVhbFBhdGgodGhpcy5zcmMpO2lmKGUpe3ZhciBuPXRoaXMuX2ltZz10aGlzLl9pbWd8fG5ldyBJbWFnZTtuLm9ubG9hZD1mdW5jdGlvbihyKXt0Ll9pbWc9bnVsbDt2YXIgaT10Lm9yaWdpbmFsV2lkdGg9bi53aWR0aCxvPXQub3JpZ2luYWxIZWlnaHQ9bi5oZWlnaHQ7dC5fZml4U2l6ZSgpLHQuY29udGVudFBhdGg9ZSxuLmRyYWdnYWJsZT10LmRyYWdnYWJsZSx0Ll9faW1nJiZ0Ll9faW1nLnJlbW92ZSgpLHQuX19pbWc9bix0LiRlbC5hcHBlbmRDaGlsZChuKSx0LiR0cmlnZ2VyKCJsb2FkIixyLHt3aWR0aDppLGhlaWdodDpvfSl9LG4ub25lcnJvcj1mdW5jdGlvbihlKXt0Ll9pbWc9bnVsbCx0Ll9yZXNldERhdGEoKSx0LiR0cmlnZ2VyKCJlcnJvciIsZSx7ZXJyTXNnOiJHRVQgIi5jb25jYXQodC5zcmMsIiA0MDQgKE5vdCBGb3VuZCkiKX0pfSxuLnNyYz1lfWVsc2UgdGhpcy5fY2xlYXJJbWFnZSgpLHRoaXMuX3Jlc2V0RGF0YSgpfSxfY2xlYXJJbWFnZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ltZzt0JiYodC5vbmxvYWQ9bnVsbCx0Lm9uZXJyb3I9bnVsbCx0aGlzLl9pbWc9bnVsbCl9fX0sdT1jLGw9KG4oIjRkYzYiKSxuKCI4ODQ0IikpLGY9T2JqZWN0KGxbImEiXSkodSxpLG8sITEsbnVsbCxudWxsLG51bGwpO2VbImRlZmF1bHQiXT1mLmV4cG9ydHN9LCI3ZmQyIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0LHIpe24uZChlLCJjaG9vc2VGaWxlIiwoZnVuY3Rpb24oKXtyZXR1cm4gZn0pKTt2YXIgaT1uKCJiZGVlIiksbz1uKCIwMzcyIiksYT1uKCI0OTNkIikscz1uKCI5MDllIiksYz10LHU9Yy5pbnZva2VDYWxsYmFja0hhbmRsZXIsbD1udWxsO2Z1bmN0aW9uIGYodCxlKXt2YXIgbj10LmNvdW50LGM9dC5zb3VyY2VUeXBlLGY9dC50eXBlLGQ9dC5leHRlbnNpb247bCYmKGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobCksbD1udWxsKSxsPU9iamVjdChhWyJkZWZhdWx0Il0pKHtjb3VudDpuLHNvdXJjZVR5cGU6Yyx0eXBlOmYsZXh0ZW5zaW9uOmR9KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGwpLGwuYWRkRXZlbnRMaXN0ZW5lcigiY2FuY2VsIiwoZnVuY3Rpb24oKXt2YXIgdD17ZXJyTXNnOiJjaG9vc2VGaWxlOmZhaWwgY2FuY2VsIn07dShlLHQpfSkpLGwuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoZnVuY3Rpb24odCl7Zm9yKHZhciByPVtdLG89dC50YXJnZXQuZmlsZXMubGVuZ3RoLGE9ZnVuY3Rpb24oZSl7dmFyIG89dC50YXJnZXQuZmlsZXNbZV0sYT12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sInBhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYT1hfHxPYmplY3QoaVsiYiJdKShvKSxhfX0pLGU8biYmci5wdXNoKG8pfSxzPTA7czxvO3MrKylhKHMpO3ZhciBjPXtlcnJNc2c6ImNob29zZUZpbGU6b2siLGdldCB0ZW1wRmlsZVBhdGhzKCl7cmV0dXJuIHIubWFwKChmdW5jdGlvbih0KXt2YXIgZT10LnBhdGg7cmV0dXJuIGV9KSl9LHRlbXBGaWxlczpyfTt1KGUsYyl9KSksbC5jbGljaygpLHNbImQiXS5nZXRTdGF0dXMoKXx8ci53YXJuKCIiLmNvbmNhdChPYmplY3Qob1siZyJdKSgidW5pLmNob29zZUZpbGUubm90VXNlckFjdGl2YXRpb24iKSkpfX0uY2FsbCh0aGlzLG4oIjJjOWYiKSxuKCI0MThiIilbImRlZmF1bHQiXSl9LCI4MDFiIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbigidW5pLXByb2dyZXNzIix0Ll9nKHtzdGF0aWNDbGFzczoidW5pLXByb2dyZXNzIn0sdC4kbGlzdGVuZXJzKSxbbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1wcm9ncmVzcy1iYXIiLHN0eWxlOnQub3V0ZXJCYXJTdHlsZX0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktcHJvZ3Jlc3MtaW5uZXItYmFyIixzdHlsZTp0LmlubmVyQmFyU3R5bGV9KV0pLHQuc2hvd0luZm8/W24oInAiLHtzdGF0aWNDbGFzczoidW5pLXByb2dyZXNzLWluZm8ifSxbdC5fdigiICIrdC5fcyh0LmN1cnJlbnRQZXJjZW50KSsiJSAiKV0pXTp0Ll9lKCldLDIpfSxpPVtdLG89e2FjdGl2ZUNvbG9yOiIjMDA3QUZGIixiYWNrZ3JvdW5kQ29sb3I6IiNFQkVCRUIiLGFjdGl2ZU1vZGU6ImJhY2t3YXJkcyJ9LGE9e25hbWU6IlByb2dyZXNzIixwcm9wczp7cGVyY2VudDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDowLHZhbGlkYXRvcjpmdW5jdGlvbih0KXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdCh0LDEwKSl9fSxzaG93SW5mbzp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LHN0cm9rZVdpZHRoOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjYsdmFsaWRhdG9yOmZ1bmN0aW9uKHQpe3JldHVybiFpc05hTihwYXJzZUZsb2F0KHQsMTApKX19LGNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0Om8uYWN0aXZlQ29sb3J9LGFjdGl2ZUNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0Om8uYWN0aXZlQ29sb3J9LGJhY2tncm91bmRDb2xvcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDpvLmJhY2tncm91bmRDb2xvcn0sYWN0aXZlOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sYWN0aXZlTW9kZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpvLmFjdGl2ZU1vZGV9LGR1cmF0aW9uOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjMwLHZhbGlkYXRvcjpmdW5jdGlvbih0KXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdCh0LDEwKSl9fX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntjdXJyZW50UGVyY2VudDowLHN0cm9rZVRpbWVyOjAsbGFzdFBlcmNlbnQ6MH19LGNvbXB1dGVkOntvdXRlckJhclN0eWxlOmZ1bmN0aW9uKCl7cmV0dXJuImJhY2tncm91bmQtY29sb3I6ICIuY29uY2F0KHRoaXMuYmFja2dyb3VuZENvbG9yLCI7IGhlaWdodDogIikuY29uY2F0KHRoaXMuc3Ryb2tlV2lkdGgsInB4OyIpfSxpbm5lckJhclN0eWxlOmZ1bmN0aW9uKCl7dmFyIHQ9IiI7cmV0dXJuIHQ9dGhpcy5jb2xvciE9PW8uYWN0aXZlQ29sb3ImJnRoaXMuYWN0aXZlQ29sb3I9PT1vLmFjdGl2ZUNvbG9yP3RoaXMuY29sb3I6dGhpcy5hY3RpdmVDb2xvciwid2lkdGg6ICIuY29uY2F0KHRoaXMuY3VycmVudFBlcmNlbnQsIiU7YmFja2dyb3VuZC1jb2xvcjogIikuY29uY2F0KHQpfSxyZWFsUGVyY2VudDpmdW5jdGlvbigpe3ZhciB0PXBhcnNlRmxvYXQodGhpcy5wZXJjZW50LDEwKTtyZXR1cm4gdDwwJiYodD0wKSx0PjEwMCYmKHQ9MTAwKSx0fX0sd2F0Y2g6e3JlYWxQZXJjZW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5zdHJva2VUaW1lciYmY2xlYXJJbnRlcnZhbCh0aGlzLnN0cm9rZVRpbWVyKSx0aGlzLmxhc3RQZXJjZW50PWV8fDAsdGhpcy5fYWN0aXZlQW5pbWF0aW9uKCl9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fYWN0aXZlQW5pbWF0aW9uKCl9LG1ldGhvZHM6e19hY3RpdmVBbmltYXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuYWN0aXZlPyh0aGlzLmN1cnJlbnRQZXJjZW50PXRoaXMuYWN0aXZlTW9kZT09PW8uYWN0aXZlTW9kZT8wOnRoaXMubGFzdFBlcmNlbnQsdGhpcy5zdHJva2VUaW1lcj1zZXRJbnRlcnZhbCgoZnVuY3Rpb24oKXt0LmN1cnJlbnRQZXJjZW50KzE+dC5yZWFsUGVyY2VudD8odC5jdXJyZW50UGVyY2VudD10LnJlYWxQZXJjZW50LHQuc3Ryb2tlVGltZXImJmNsZWFySW50ZXJ2YWwodC5zdHJva2VUaW1lcikpOnQuY3VycmVudFBlcmNlbnQrPTF9KSxwYXJzZUZsb2F0KHRoaXMuZHVyYXRpb24pKSk6dGhpcy5jdXJyZW50UGVyY2VudD10aGlzLnJlYWxQZXJjZW50fX19LHM9YSxjPShuKCJhMThkIiksbigiODg0NCIpKSx1PU9iamVjdChjWyJhIl0pKHMscixpLCExLG51bGwsbnVsbCxudWxsKTtlWyJkZWZhdWx0Il09dS5leHBvcnRzfSw4MDc2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe24uZChlLCJwcmV2aWV3SW1hZ2UiLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZChlLCJjbG9zZVByZXZpZXdJbWFnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSk7dmFyIHI9dCxpPXIuZW1pdCxvPXIuaW52b2tlQ2FsbGJhY2tIYW5kbGVyO2Z1bmN0aW9uIGEodCxlKXtpKCJvblNob3dQcmV2aWV3SW1hZ2UiLHQsKGZ1bmN0aW9uKHQpe28oZSx7ZXJyTXNnOiJwcmV2aWV3SW1hZ2U6b2sifSl9KSl9ZnVuY3Rpb24gcyh0LGUpe2koIm9uQ2xvc2VQcmV2aWV3SW1hZ2UiLChmdW5jdGlvbigpe28oZSx7ZXJyTXNnOiJjbG9zZVByZXZpZXdJbWFnZTpvayJ9KX0pKX19LmNhbGwodGhpcyxuKCIyYzlmIikpfSwiODFmZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsInZpYnJhdGVMb25nIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKSxuLmQoZSwidmlicmF0ZVNob3J0IiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKTt2YXIgcj0hIXdpbmRvdy5uYXZpZ2F0b3IudmlicmF0ZTtmdW5jdGlvbiBpKCl7cmV0dXJuIHImJndpbmRvdy5uYXZpZ2F0b3IudmlicmF0ZSg0MDApP3tlcnJNc2c6InZpYnJhdGVMb25nOm9rIn06e2Vyck1zZzoidmlicmF0ZUxvbmc6ZmFpbCJ9fWZ1bmN0aW9uIG8oKXtyZXR1cm4gciYmd2luZG93Lm5hdmlnYXRvci52aWJyYXRlKDE1KT97ZXJyTXNnOiJ2aWJyYXRlU2hvcnQ6b2sifTp7ZXJyTXNnOiJ2aWJyYXRlU2hvcnQ6ZmFpbCJ9fX0sIjgyZjEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe24uZChlLCJnZXRWaWRlb0luZm8iLChmdW5jdGlvbigpe3JldHVybiBpfSkpO3ZhciByPW4oImJkZWUiKTtmdW5jdGlvbiBpKGUsbil7dmFyIGk9ZS5zcmMsbz10LGE9by5pbnZva2VDYWxsYmFja0hhbmRsZXI7T2JqZWN0KHJbImYiXSkoaSwhMCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7cmV0dXJue319KSkudGhlbigoZnVuY3Rpb24odCl7dmFyIGU9dC5zaXplP3tzaXplOnQuc2l6ZSxlcnJNc2c6ImdldFZpZGVvSW5mbzpvayJ9OntlcnJNc2c6ImdldFZpZGVvSW5mbzpmYWlsIn0scj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpO2lmKHZvaWQgMCE9PXIub25sb2FkZWRtZXRhZGF0YSl7dmFyIG89c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyLm9ubG9hZGVkbWV0YWRhdGE9bnVsbCxyLm9uZXJyb3I9bnVsbCxhKG4sZSl9KSxpLnN0YXJ0c1dpdGgoImRhdGE6Iil8fGkuc3RhcnRzV2l0aCgiYmxvYjoiKT8zMDA6M2UzKTtyLm9ubG9hZGVkbWV0YWRhdGE9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQobyksci5vbmVycm9yPW51bGwsYShuLE9iamVjdC5hc3NpZ24oZSx7c2l6ZTpNYXRoLmNlaWwoKHQ/dC5zaXplOjApLzEwMjQpLGR1cmF0aW9uOnIuZHVyYXRpb258fDAsd2lkdGg6ci52aWRlb1dpZHRofHwwLGhlaWdodDpyLnZpZGVvSGVpZ2h0fHwwLGVyck1zZzoiZ2V0VmlkZW9JbmZvOm9rIn0pKX0sci5vbmVycm9yPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KG8pLHIub25sb2FkZWRtZXRhZGF0YT1udWxsLGEobixlKX0sci5zcmM9aX1lbHNlIGEobixlKX0pKX19LmNhbGwodGhpcyxuKCIyYzlmIikpfSw4Mzc5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJjcmVhdGVTZWxlY3RvclF1ZXJ5IiwoZnVuY3Rpb24oKXtyZXR1cm4gZ30pKTt2YXIgcj1uKCIzNDBkIiksaT1uKCI3NDVhIiksbz1uKCI2MzUyIiksYT1uKCJlZDJjIikscz1uKCJlNjhhIiksYz1uKCI1ODgzIik7ZnVuY3Rpb24gdSh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGwodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX1mdW5jdGlvbiBmKHQsZSxuKXtyZXR1cm4gZSYmbCh0LnByb3RvdHlwZSxlKSxuJiZsKHQsbiksdH12YXIgZD17Y2FudmFzOm9bIkNhbnZhc0NvbnRleHQiXSxtYXA6YVsiTWFwQ29udGV4dCJdLHZpZGVvOnNbIlZpZGVvQ29udGV4dCJdLGVkaXRvcjpjWyJFZGl0b3JDb250ZXh0Il19O2Z1bmN0aW9uIGgodCl7aWYodCYmdC5jb250ZXh0KXt2YXIgZT10LmNvbnRleHQsbj1lLmlkLHI9ZS5uYW1lLGk9ZS5wYWdlLG89ZFtyXTt0LmNvbnRleHQ9byYmbmV3IG8obixpKX19dmFyIHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbixyLGkpe3UodGhpcyx0KSx0aGlzLl9zZWxlY3RvclF1ZXJ5PWUsdGhpcy5fY29tcG9uZW50PW4sdGhpcy5fc2VsZWN0b3I9cix0aGlzLl9zaW5nbGU9aX1yZXR1cm4gZih0LFt7a2V5OiJib3VuZGluZ0NsaWVudFJlY3QiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zZWxlY3RvclF1ZXJ5Ll9wdXNoKHRoaXMuX3NlbGVjdG9yLHRoaXMuX2NvbXBvbmVudCx0aGlzLl9zaW5nbGUse2lkOiEwLGRhdGFzZXQ6ITAscmVjdDohMCxzaXplOiEwfSx0KSx0aGlzLl9zZWxlY3RvclF1ZXJ5fX0se2tleToiZmllbGRzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9zZWxlY3RvclF1ZXJ5Ll9wdXNoKHRoaXMuX3NlbGVjdG9yLHRoaXMuX2NvbXBvbmVudCx0aGlzLl9zaW5nbGUsdCxlKSx0aGlzLl9zZWxlY3RvclF1ZXJ5fX0se2tleToic2Nyb2xsT2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fc2VsZWN0b3JRdWVyeS5fcHVzaCh0aGlzLl9zZWxlY3Rvcix0aGlzLl9jb21wb25lbnQsdGhpcy5fc2luZ2xlLHtpZDohMCxkYXRhc2V0OiEwLHNjcm9sbE9mZnNldDohMH0sdCksdGhpcy5fc2VsZWN0b3JRdWVyeX19LHtrZXk6ImNvbnRleHQiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zZWxlY3RvclF1ZXJ5Ll9wdXNoKHRoaXMuX3NlbGVjdG9yLHRoaXMuX2NvbXBvbmVudCx0aGlzLl9zaW5nbGUse2NvbnRleHQ6ITB9LHQpLHRoaXMuX3NlbGVjdG9yUXVlcnl9fV0pLHR9KCksdj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dSh0aGlzLHQpLHRoaXMuX3BhZ2U9ZSx0aGlzLl9xdWV1ZT1bXSx0aGlzLl9xdWV1ZUNiPVtdLHRoaXMuX25vZGVzUmVmPW51bGx9cmV0dXJuIGYodCxbe2tleToiZXhlYyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gT2JqZWN0KGlbImMiXSkoInJlcXVlc3RDb21wb25lbnRJbmZvIix0aGlzLl9wYWdlLHRoaXMuX3F1ZXVlLChmdW5jdGlvbihuKXt2YXIgaT1lLl9xdWV1ZUNiO24uZm9yRWFjaCgoZnVuY3Rpb24odCxuKXtBcnJheS5pc0FycmF5KHQpP3QuZm9yRWFjaChoKTpoKHQpO3ZhciBvPWlbbl07T2JqZWN0KHJbImsiXSkobykmJm8uY2FsbChlLHQpfSkpLE9iamVjdChyWyJrIl0pKHQpJiZ0LmNhbGwoZSxuKX0pKSx0aGlzLl9ub2Rlc1JlZn19LHtrZXk6ImluIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY29tcG9uZW50PXQuXyRpZHx8dCx0aGlzfX0se2tleToic2VsZWN0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbm9kZXNSZWY9bmV3IHAodGhpcyx0aGlzLl9jb21wb25lbnQsdCwhMCl9fSx7a2V5OiJzZWxlY3RBbGwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ub2Rlc1JlZj1uZXcgcCh0aGlzLHRoaXMuX2NvbXBvbmVudCx0LCExKX19LHtrZXk6InNlbGVjdFZpZXdwb3J0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub2Rlc1JlZj1uZXcgcCh0aGlzLDAsIiIsITApfX0se2tleToiX3B1c2giLHZhbHVlOmZ1bmN0aW9uKHQsZSxuLHIsaSl7dGhpcy5fcXVldWUucHVzaCh7Y29tcG9uZW50OmUsc2VsZWN0b3I6dCxzaW5nbGU6bixmaWVsZHM6cn0pLHRoaXMuX3F1ZXVlQ2IucHVzaChpKX19XSksdH0oKTtmdW5jdGlvbiBnKHQpe3JldHVybiBuZXcgdih0fHxPYmplY3QoaVsiYiJdKSgiY3JlYXRlU2VsZWN0b3JRdWVyeSIpKX19LCI4M2MyIjpmdW5jdGlvbih0LGUsbil7fSwiODNlZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiB1fSkpO3ZhciByPW4oIjM0MGQiKSxpPW4oIjM4Y2UiKSxvPW4oImM4MGMiKSxhPW4oIjQ5M2YiKSxzPSEhclsidCJdJiZ7cGFzc2l2ZTohMX07ZnVuY3Rpb24gYyhlKXtpZih1bmkuY2FuSVVzZSgiY3NzLnZhciIpKXt2YXIgbj1wYXJzZUZsb2F0KF9fdW5pQ29uZmlnLnRhYkJhci5oZWlnaHQpLHI9ZS4kcGFyZW50LiRwYXJlbnQsaT1yLm5hdmlnYXRpb25CYXIudHlwZSxhPSJkZWZhdWx0Ij09PWl8fCJmbG9hdCI9PT1pP29bImEiXTowLHM9Z2V0QXBwKCkuJGNoaWxkcmVuWzBdLnNob3dUYWJCYXI/aXNOYU4obik/b1siZCJdOm46MCxjPXVuaS5jYW5JVXNlKCJjc3MuZW52Iik/ImVudiI6dW5pLmNhbklVc2UoImNzcy5jb25zdGFudCIpPyJjb25zdGFudCI6IiIsdT1hJiZjPyJjYWxjKCIuY29uY2F0KGEsInB4ICsgIikuY29uY2F0KGMsIihzYWZlLWFyZWEtaW5zZXQtdG9wKSkiKToiIi5jb25jYXQoYSwicHgiKSxsPXMmJmM/ImNhbGMoIi5jb25jYXQocywicHggKyAiKS5jb25jYXQoYywiKHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKSIpOiIiLmNvbmNhdChzLCJweCIpLGY9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlO2Yuc2V0UHJvcGVydHkoIi0td2luZG93LXRvcCIsImNhbGModmFyKC0tdG9wLXdpbmRvdy1oZWlnaHQpICsgIi5jb25jYXQodSwiKSIpKSxmLnNldFByb3BlcnR5KCItLXdpbmRvdy1ib3R0b20iLGwpLHQuZGVidWcoIiIuY29uY2F0KGUuJHBhZ2Uucm91dGUsIlsiKS5jb25jYXQoZS4kcGFnZS5pZCwiXe+8mi0td2luZG93LXRvcD0iKS5jb25jYXQodSkpLHQuZGVidWcoIiIuY29uY2F0KGUuJHBhZ2Uucm91dGUsIlsiKS5jb25jYXQoZS4kcGFnZS5pZCwiXe+8mi0td2luZG93LWJvdHRvbT0iKS5jb25jYXQobCkpfX1mdW5jdGlvbiB1KHQpe3ZhciBlPSExLG49ITE7dCgib25QYWdlTG9hZCIsKGZ1bmN0aW9uKHQpe2ModCl9KSksdCgib25QYWdlU2hvdyIsKGZ1bmN0aW9uKHQpe3ZhciBvPXQuJHBhcmVudC4kcGFyZW50O3QuX2lzTW91bnRlZCYmYyh0KSxuJiZkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLG4scyksby5kaXNhYmxlU2Nyb2xsJiYobj1hWyJiIl0sZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixuLHMpKTt2YXIgdT1PYmplY3QoaVsiYyJdKSh0LiRvcHRpb25zLCJvblBhZ2VTY3JvbGwiKSxsPU9iamVjdChpWyJjIl0pKHQuJG9wdGlvbnMsIm9uUmVhY2hCb3R0b20iKSxmPW8ub25SZWFjaEJvdHRvbURpc3RhbmNlLGQ9T2JqZWN0KHJbImwiXSkoby50aXRsZU5WaWV3KSYmInRyYW5zcGFyZW50Ij09PW8udGl0bGVOVmlldy50eXBlfHxPYmplY3QoclsibCJdKShvLm5hdmlnYXRpb25CYXIpJiYidHJhbnNwYXJlbnQiPT09by5uYXZpZ2F0aW9uQmFyLnR5cGU7ZSYmZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixlKSwoZHx8dXx8bCkmJihlPU9iamVjdChhWyJhIl0pKHQuJHBhZ2UuaWQse2VuYWJsZVBhZ2VTY3JvbGw6dSxlbmFibGVQYWdlUmVhY2hCb3R0b206bCxvblJlYWNoQm90dG9tRGlzdGFuY2U6ZixlbmFibGVUcmFuc3BhcmVudFRpdGxlTlZpZXc6ZH0pLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLGUpfSkpKX0pKX19KS5jYWxsKHRoaXMsbigiNDE4YiIpWyJkZWZhdWx0Il0pfSwiODQ2ZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZVsiZGVmYXVsdCJdPXtpbWFnZTp7anBnOiJqcGVnIixqcGU6ImpwZWciLHBibToieC1wb3J0YWJsZS1iaXRtYXAiLHBnbToieC1wb3J0YWJsZS1ncmF5bWFwIixwbm06IngtcG9ydGFibGUtYW55bWFwIixwcG06IngtcG9ydGFibGUtcGl4bWFwIixwc2Q6InZuZC5hZG9iZS5waG90b3Nob3AiLHBpYzoieC1waWN0IixyZ2I6IngtcmdiIixzdmc6InN2Zyt4bWwiLHN2Z3o6InN2Zyt4bWwiLHRpZjoidGlmZiIseGlmOiJ2bmQueGlmZiIsd2JtcDoidm5kLndhcC53Ym1wIix3ZHA6InZuZC5tcy1waG90byIseGJtOiJ4LXhiaXRtYXAiLGljbzoieC1pY29uIn0sdmlkZW86eyIzZzIiOiIzZ3BwMiIsIjNncCI6IjNncHAiLGF2aToieC1tc3ZpZGVvIixmNHY6IngtZjR2IixmbHY6IngtZmx2IixqcGdtOiJqcG0iLGpwZ3Y6ImpwZWciLG0xdjoibXBlZyIsbTJ2OiJtcGVnIixtcGU6Im1wZWciLG1wZzoibXBlZyIsbXBnNDoibXBlZyIsbTR2OiJ4LW00diIsbWt2OiJ4LW1hdHJvc2thIixtb3Y6InF1aWNrdGltZSIscXQ6InF1aWNrdGltZSIsbW92aWU6Ingtc2dpLW1vdmllIixtcDR2OiJtcDQiLG9ndjoib2dnIixzbXY6Ingtc212Iix3bToieC1tcy13bSIsd212OiJ4LW1zLXdtdiIsd214OiJ4LW1zLXdteCIsd3Z4OiJ4LW1zLXd2eCJ9fX0sIjg0ZWQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0scj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKTtyJiZuJiYoci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpLHI9bnVsbCkscnx8KHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSxyLnR5cGU9InRleHQvY3NzIixlJiYoci5pZD1lKSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKHIpKSxyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpKX1uLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSl9LCI4NmQzIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwiZ2V0QmFja2dyb3VuZEF1ZGlvTWFuYWdlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGh9KSk7dmFyIHI9bigiNzQ1YSIpO2Z1bmN0aW9uIGkodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gYSh0LGUsbil7cmV0dXJuIGUmJm8odC5wcm90b3R5cGUsZSksbiYmbyh0LG4pLHR9dmFyIHM9WyJjYW5wbGF5IiwicGxheSIsInBhdXNlIiwic3RvcCIsImVuZGVkIiwidGltZVVwZGF0ZSIsInByZXYiLCJuZXh0IiwiZXJyb3IiLCJ3YWl0aW5nIl0sYz17fTtzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2NbdF09W119KSk7dmFyIHUsbD1be25hbWU6ImR1cmF0aW9uIixyZWFkb25seTohMH0se25hbWU6ImN1cnJlbnRUaW1lIixyZWFkb25seTohMH0se25hbWU6InBhdXNlZCIscmVhZG9ubHk6ITB9LHtuYW1lOiJzcmMiLGNhY2hlOiEwfSx7bmFtZToic3RhcnRUaW1lIixkZWZhdWx0OjAsY2FjaGU6ITB9LHtuYW1lOiJidWZmZXJlZCIscmVhZG9ubHk6ITB9LHtuYW1lOiJ0aXRsZSIsY2FjaGU6ITB9LHtuYW1lOiJlcG5hbWUiLGNhY2hlOiEwfSx7bmFtZToic2luZ2VyIixjYWNoZTohMH0se25hbWU6ImNvdmVySW1nVXJsIixjYWNoZTohMH0se25hbWU6IndlYlVybCIsY2FjaGU6ITB9LHtuYW1lOiJwcm90b2NvbCIscmVhZG9ubHk6ITAsZGVmYXVsdDoiaHR0cCJ9LHtuYW1lOiJwbGF5YmFja1JhdGUiLGRlZmF1bHQ6MSxjYWNoZTohMH1dLGY9WyJwcmV2IiwibmV4dCJdLGQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIGU9dGhpcztpKHRoaXMsdCksdGhpcy5fb3B0aW9ucz17fSxPYmplY3QoclsiZCJdKSgib25CYWNrZ3JvdW5kQXVkaW9TdGF0ZUNoYW5nZSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXQuc3RhdGUsbj10LmVyck1zZyxyPXQuZXJyQ29kZTtjW2VdLmZvckVhY2goKGZ1bmN0aW9uKHQpeyJmdW5jdGlvbiI9PT10eXBlb2YgdCYmdCgiZXJyb3IiPT09ZT97ZXJyTXNnOm4sZXJyQ29kZTpyfTp7fSl9KSl9KSksZi5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QoclsiZCJdKSgib25CYWNrZ3JvdW5kQXVkaW8iLmNvbmNhdCh0WzBdLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHIoMSkpLChmdW5jdGlvbigpe2NbdF0uZm9yRWFjaCgoZnVuY3Rpb24odCl7ImZ1bmN0aW9uIj09PXR5cGVvZiB0JiZ0KHt9KX0pKX0pKX0pKSxsLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXQubmFtZSxpPXtnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10LmNhY2hlP3RoaXMuX29wdGlvbnM6T2JqZWN0KHJbImMiXSkoImdldEJhY2tncm91bmRBdWRpb1N0YXRlIik7cmV0dXJuIG4gaW4gZT9lW25dOnQuZGVmYXVsdH19O3QucmVhZG9ubHl8fChpLnNldD1mdW5jdGlvbih0KXt0aGlzLl9vcHRpb25zW25dPXQsT2JqZWN0KHJbImMiXSkoInNldEJhY2tncm91bmRBdWRpb1N0YXRlIixPYmplY3QuYXNzaWduKHt9LHRoaXMuX29wdGlvbnMse2F1ZGlvSWQ6dGhpcy5pZH0pLG4pfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixpKX0pKX1yZXR1cm4gYSh0LFt7a2V5OiJwbGF5Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX29wZXJhdGUoInBsYXkiKX19LHtrZXk6InBhdXNlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX29wZXJhdGUoInBhdXNlIil9fSx7a2V5OiJzdG9wIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX29wZXJhdGUoInN0b3AiKX19LHtrZXk6InNlZWsiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX29wZXJhdGUoInNlZWsiLHtjdXJyZW50VGltZTp0fSl9fSx7a2V5OiJfb3BlcmF0ZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtPYmplY3QoclsiYyJdKSgib3BlcmF0ZUJhY2tncm91bmRBdWRpbyIsT2JqZWN0LmFzc2lnbih7fSxlLHtvcGVyYXRpb25UeXBlOnR9KSl9fV0pLHR9KCk7ZnVuY3Rpb24gaCgpe3JldHVybiB1fHwodT1uZXcgZCl9cy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10WzBdLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHIoMSk7ZC5wcm90b3R5cGVbIm9uIi5jb25jYXQoZSldPWZ1bmN0aW9uKGUpe2NbdF0ucHVzaChlKX19KSl9LDg4NDQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSxuLHIsaSxvLGEscyl7dmFyIGMsdT0iZnVuY3Rpb24iPT09dHlwZW9mIHQ/dC5vcHRpb25zOnQ7aWYoZSYmKHUucmVuZGVyPWUsdS5zdGF0aWNSZW5kZXJGbnM9bix1Ll9jb21waWxlZD0hMCksciYmKHUuZnVuY3Rpb25hbD0hMCksbyYmKHUuX3Njb3BlSWQ9ImRhdGEtdi0iK28pLGE/KGM9ZnVuY3Rpb24odCl7dD10fHx0aGlzLiR2bm9kZSYmdGhpcy4kdm5vZGUuc3NyQ29udGV4dHx8dGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LiR2bm9kZSYmdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQsdHx8InVuZGVmaW5lZCI9PT10eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfX3x8KHQ9X19WVUVfU1NSX0NPTlRFWFRfXyksaSYmaS5jYWxsKHRoaXMsdCksdCYmdC5fcmVnaXN0ZXJlZENvbXBvbmVudHMmJnQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChhKX0sdS5fc3NyUmVnaXN0ZXI9Yyk6aSYmKGM9cz9mdW5jdGlvbigpe2kuY2FsbCh0aGlzLHRoaXMuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdCl9OmkpLGMpaWYodS5mdW5jdGlvbmFsKXt1Ll9pbmplY3RTdHlsZXM9Yzt2YXIgbD11LnJlbmRlcjt1LnJlbmRlcj1mdW5jdGlvbih0LGUpe3JldHVybiBjLmNhbGwoZSksbCh0LGUpfX1lbHNle3ZhciBmPXUuYmVmb3JlQ3JlYXRlO3UuYmVmb3JlQ3JlYXRlPWY/W10uY29uY2F0KGYsYyk6W2NdfXJldHVybntleHBvcnRzOnQsb3B0aW9uczp1fX1uLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSl9LCI4OGE4IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByLGk9bigiMzQwZCIpLG89IWlbInQiXXx8e3Bhc3NpdmU6ITAsY2FwdHVyZTohMH0sYT1bXSxzPTA7ZnVuY3Rpb24gYyh0KXthLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnVzZXJJbnRlcmFjdD10fSkpfWZ1bmN0aW9uIHUoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307aWYoIXIpe3ZhciBlPVsidG91Y2hzdGFydCIsInRvdWNobW92ZSIsInRvdWNoZW5kIiwibW91c2Vkb3duIiwibW91c2V1cCJdO2UuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0LChmdW5jdGlvbigpeyFzJiZjKCEwKSxzKyssc2V0VGltZW91dCgoZnVuY3Rpb24oKXshLS1zJiZjKCExKX0pLDApfSksbyl9KSkscj0hMH1hLnB1c2godCl9ZnVuY3Rpb24gbCh0KXt2YXIgZT1hLmluZGV4T2YodCk7ZT49MCYmYS5zcGxpY2UoZSwxKX1lWyJhIl09e2RhdGE6ZnVuY3Rpb24oKXtyZXR1cm57dXNlckludGVyYWN0OiExfX0sbW91bnRlZDpmdW5jdGlvbigpe3UodGhpcyl9LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXtsKHRoaXMpfSxhZGRJbnRlcmFjdExpc3RlbmVyOnUsZ2V0U3RhdHVzOmZ1bmN0aW9uKCl7cmV0dXJuISFzfX19LCI4OWNlIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXtuLmQoZSwicmVxdWVzdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSk7dmFyIHI9bigiMzQwZCIpO2Z1bmN0aW9uIGkodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gYSh0LGUsbil7cmV0dXJuIGUmJm8odC5wcm90b3R5cGUsZSksbiYmbyh0LG4pLHR9ZnVuY3Rpb24gcyh0LGUsbil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1uLHR9dmFyIGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2kodGhpcyx0KSxzKHRoaXMsIl94aHIiLHZvaWQgMCksdGhpcy5feGhyPWV9cmV0dXJuIGEodCxbe2tleToiYWJvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5feGhyJiYodGhpcy5feGhyLmFib3J0KCksZGVsZXRlIHRoaXMuX3hocil9fV0pLHR9KCk7ZnVuY3Rpb24gdSh0KXt2YXIgZT17fSxuPXQuc3BsaXQoIlxuIik7cmV0dXJuIG4uZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49dC5tYXRjaCgvKFxTK1xzKik6XHMqKC4qKS8pO2lmKG4mJjM9PT1uLmxlbmd0aCl7dmFyIHI9blsxXSxpPW5bMl07ZVtyXT1pfX0pKSxlfWZ1bmN0aW9uIGwoZSxuKXt2YXIgaSxvPWUudXJsLGE9ZS5kYXRhLHM9ZS5oZWFkZXIsbD1lLm1ldGhvZCxmPWUuZGF0YVR5cGUsZD1lLnJlc3BvbnNlVHlwZSxoPWUud2l0aENyZWRlbnRpYWxzLHA9ZS50aW1lb3V0LHY9dm9pZCAwPT09cD9fX3VuaUNvbmZpZy5uZXR3b3JrVGltZW91dCYmX191bmlDb25maWcubmV0d29ya1RpbWVvdXQucmVxdWVzdHx8NmU0OnAsZz10LG09Zy5pbnZva2VDYWxsYmFja0hhbmRsZXIsYj1udWxsO2Zvcih2YXIgeSBpbiBzKWlmKE9iamVjdChyWyJpIl0pKHMseSkmJiJjb250ZW50LXR5cGUiPT09eS50b0xvd2VyQ2FzZSgpKXtpPXNbeV0saT0wPT09aS5pbmRleE9mKCJhcHBsaWNhdGlvbi9qc29uIik/Impzb24iOjA9PT1pLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpPyJ1cmxlbmNvZGVkIjoic3RyaW5nIjticmVha31pZigiR0VUIiE9PWwpaWYoInN0cmluZyI9PT10eXBlb2YgYXx8YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKWI9YTtlbHNlIGlmKCJqc29uIj09PWkpdHJ5e2I9SlNPTi5zdHJpbmdpZnkoYSl9Y2F0Y2goVCl7Yj1hLnRvU3RyaW5nKCl9ZWxzZSBpZigidXJsZW5jb2RlZCI9PT1pKXt2YXIgXz1bXTtmb3IodmFyIHcgaW4gYSlPYmplY3QoclsiaSJdKShhLHcpJiZfLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KHcpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYVt3XSkpO2I9Xy5qb2luKCImIil9ZWxzZSBiPWEudG9TdHJpbmcoKTt2YXIgUz1uZXcgWE1MSHR0cFJlcXVlc3QseD1uZXcgYyhTKTtmb3IodmFyIGsgaW4gUy5vcGVuKGwsbykscylPYmplY3QoclsiaSJdKShzLGspJiZTLnNldFJlcXVlc3RIZWFkZXIoayxzW2tdKTt2YXIgQz1zZXRUaW1lb3V0KChmdW5jdGlvbigpe1Mub25sb2FkPVMub25hYm9ydD1TLm9uZXJyb3I9bnVsbCx4LmFib3J0KCksbShuLHtlcnJNc2c6InJlcXVlc3Q6ZmFpbCB0aW1lb3V0In0pfSksdik7cmV0dXJuIFMucmVzcG9uc2VUeXBlPWQsUy5vbmxvYWQ9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoQyk7dmFyIHQ9Uy5zdGF0dXMsZT0idGV4dCI9PT1kP1MucmVzcG9uc2VUZXh0OlMucmVzcG9uc2U7aWYoInRleHQiPT09ZCYmImpzb24iPT09Zil0cnl7ZT1KU09OLnBhcnNlKGUpfWNhdGNoKFQpe31tKG4se2RhdGE6ZSxzdGF0dXNDb2RlOnQsaGVhZGVyOnUoUy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSksZXJyTXNnOiJyZXF1ZXN0Om9rIn0pfSxTLm9uYWJvcnQ9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoQyksbShuLHtlcnJNc2c6InJlcXVlc3Q6ZmFpbCBhYm9ydCJ9KX0sUy5vbmVycm9yPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KEMpLG0obix7ZXJyTXNnOiJyZXF1ZXN0OmZhaWwifSl9LFMud2l0aENyZWRlbnRpYWxzPWgsUy5zZW5kKGIpLHh9fS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sIjg5ZWMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gaShlLG4pe3JldHVybiB0LmVtaXQoImFwaS4iK2Usbil9ZnVuY3Rpb24gbyh0LGUsbil7ci5VbmlWaWV3SlNCcmlkZ2Uuc3Vic2NyaWJlSGFuZGxlcih0LGUsbil9bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBpfSkpLG4uZChlLCJiIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKX0pLmNhbGwodGhpcyxuKCIyYzlmIiksbigiMGVlNCIpKX0sIjhhMjQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMGNhYyIpLGk9bi5uKHIpO2kuYX0sIjhhOTIiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInVuaS1wYWdlLWhlYWQiLHthdHRyczp7InVuaS1wYWdlLWhlYWQtdHlwZSI6dC50eXBlfX0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktcGFnZS1oZWFkIixjbGFzczp0LmhlYWRDbGFzcyxzdHlsZTp7dHJhbnNpdGlvbkR1cmF0aW9uOnQuZHVyYXRpb24sdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOnQudGltaW5nRnVuYyxiYWNrZ3JvdW5kQ29sb3I6dC5iZ0NvbG9yLGNvbG9yOnQudGV4dENvbG9yfX0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktcGFnZS1oZWFkLWhkIn0sW24oImRpdiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOnQuYmFja0J1dHRvbixleHByZXNzaW9uOiJiYWNrQnV0dG9uIn1dLHN0YXRpY0NsYXNzOiJ1bmktcGFnZS1oZWFkLWJ0biIsb246e2NsaWNrOnQuX2JhY2t9fSxbbigiaSIse3N0YXRpY0NsYXNzOiJ1bmktYnRuLWljb24iLHN0eWxlOntjb2xvcjp0LmNvbG9yLGZvbnRTaXplOiIyN3B4In19LFt0Ll92KCLumIEiKV0pXSksbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1wYWdlLWhlYWQtZnQifSxbdC5fbCh0LmJ0bnMsKGZ1bmN0aW9uKGUscil7cmV0dXJuWyJsZWZ0Ij09PWUuZmxvYXQ/bigiZGl2Iix7a2V5OnIsc3RhdGljQ2xhc3M6InVuaS1wYWdlLWhlYWQtYnRuIixjbGFzczp7InVuaS1wYWdlLWhlYWQtYnRuLXJlZC1kb3QiOmUucmVkRG90fHxlLmJhZGdlVGV4dCwidW5pLXBhZ2UtaGVhZC1idG4tc2VsZWN0IjplLnNlbGVjdH0sc3R5bGU6e2JhY2tncm91bmRDb2xvcjoidHJhbnNwYXJlbnQiPT09dC50eXBlP2UuYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLHdpZHRoOmUud2lkdGh9LGF0dHJzOnsiYmFkZ2UtdGV4dCI6ZS5iYWRnZVRleHR9fSxbbigiaSIse3N0YXRpY0NsYXNzOiJ1bmktYnRuLWljb24iLHN0eWxlOnQuX2Zvcm1hdEJ0blN0eWxlKGUpLGRvbVByb3BzOntpbm5lckhUTUw6dC5fcyh0Ll9mb3JtYXRCdG5Gb250VGV4dChlKSl9LG9uOntjbGljazpmdW5jdGlvbihlKXtyZXR1cm4gdC5fb25CdG5DbGljayhyKX19fSldKTp0Ll9lKCldfSkpXSwyKV0pLHQuc2VhcmNoSW5wdXQ/dC5fZSgpOm4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktcGFnZS1oZWFkLWJkIn0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktcGFnZS1oZWFkX190aXRsZSIsc3R5bGU6e2ZvbnRTaXplOnQudGl0bGVTaXplLG9wYWNpdHk6InRyYW5zcGFyZW50Ij09PXQudHlwZT8wOjF9fSxbdC5sb2FkaW5nP24oImkiLHtzdGF0aWNDbGFzczoidW5pLWxvYWRpbmcifSk6dC5fZSgpLCIiIT09dC50aXRsZUltYWdlP24oImltZyIse3N0YXRpY0NsYXNzOiJ1bmktcGFnZS1oZWFkX190aXRsZV9pbWFnZSIsYXR0cnM6e3NyYzp0LnRpdGxlSW1hZ2V9fSk6W3QuX3YoIiAiK3QuX3ModC50aXRsZVRleHQpKyIgIildXSwyKV0pLHQuc2VhcmNoSW5wdXQ/bigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1wYWdlLWhlYWQtc2VhcmNoIixzdHlsZTp7ImJvcmRlci1yYWRpdXMiOnQuc2VhcmNoSW5wdXQuYm9yZGVyUmFkaXVzLCJiYWNrZ3JvdW5kLWNvbG9yIjp0LnNlYXJjaElucHV0LmJhY2tncm91bmRDb2xvcn19LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXBhZ2UtaGVhZC1zZWFyY2gtcGxhY2Vob2xkZXIiLGNsYXNzOlsidW5pLXBhZ2UtaGVhZC1zZWFyY2gtcGxhY2Vob2xkZXItIisodC5mb2N1c3x8dC5zaG93UGxhY2Vob2xkZXI/ImxlZnQiOnQuc2VhcmNoSW5wdXQuYWxpZ24pXSxzdHlsZTp7Y29sb3I6dC5zZWFyY2hJbnB1dC5wbGFjZWhvbGRlckNvbG9yfSxkb21Qcm9wczp7dGV4dENvbnRlbnQ6dC5fcyh0LnNob3dQbGFjZWhvbGRlcnx8dC5jb21wb3Npbmc/IiI6dC5zZWFyY2hJbnB1dC5wbGFjZWhvbGRlcil9fSksbigidi11bmktaW5wdXQiLHtyZWY6ImlucHV0IixzdGF0aWNDbGFzczoidW5pLXBhZ2UtaGVhZC1zZWFyY2gtaW5wdXQiLHN0eWxlOntjb2xvcjp0LnNlYXJjaElucHV0LmNvbG9yfSxhdHRyczp7Zm9jdXM6dC5zZWFyY2hJbnB1dC5hdXRvRm9jdXMsZGlzYWJsZWQ6dC5zZWFyY2hJbnB1dC5kaXNhYmxlZCwicGxhY2Vob2xkZXItc3R5bGUiOiJjb2xvcjoiK3Quc2VhcmNoSW5wdXQucGxhY2Vob2xkZXJDb2xvciwiY29uZmlybS10eXBlIjoic2VhcmNoIn0sb246e2ZvY3VzOnQuX2ZvY3VzLGJsdXI6dC5fYmx1ciwidXBkYXRlOnZhbHVlIjp0Ll9pbnB1dH0sbW9kZWw6e3ZhbHVlOnQudGV4dCxjYWxsYmFjazpmdW5jdGlvbihlKXt0LnRleHQ9ZX0sZXhwcmVzc2lvbjoidGV4dCJ9fSksdC50ZXh0P24oImkiLHtzdGF0aWNDbGFzczoidW5pLWljb24tY2xlYXIiLG9uOntjbGljazp0Ll9jbGVhcklucHV0fX0pOnQuX2UoKV0sMSk6dC5fZSgpLG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktcGFnZS1oZWFkLWZ0In0sW3QuX2wodC5idG5zLChmdW5jdGlvbihlLHIpe3JldHVyblsibGVmdCIhPT1lLmZsb2F0P24oImRpdiIse2tleTpyLHN0YXRpY0NsYXNzOiJ1bmktcGFnZS1oZWFkLWJ0biIsY2xhc3M6eyJ1bmktcGFnZS1oZWFkLWJ0bi1yZWQtZG90IjplLnJlZERvdHx8ZS5iYWRnZVRleHQsInVuaS1wYWdlLWhlYWQtYnRuLXNlbGVjdCI6ZS5zZWxlY3R9LHN0eWxlOntiYWNrZ3JvdW5kQ29sb3I6InRyYW5zcGFyZW50Ij09PXQudHlwZT9lLmJhY2tncm91bmQ6InRyYW5zcGFyZW50Iix3aWR0aDplLndpZHRofSxhdHRyczp7ImJhZGdlLXRleHQiOmUuYmFkZ2VUZXh0fX0sW24oImkiLHtzdGF0aWNDbGFzczoidW5pLWJ0bi1pY29uIixzdHlsZTp0Ll9mb3JtYXRCdG5TdHlsZShlKSxkb21Qcm9wczp7aW5uZXJIVE1MOnQuX3ModC5fZm9ybWF0QnRuRm9udFRleHQoZSkpfSxvbjp7Y2xpY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX29uQnRuQ2xpY2socil9fX0pXSk6dC5fZSgpXX0pKV0sMildKSwidHJhbnNwYXJlbnQiIT09dC50eXBlJiYiZmxvYXQiIT09dC50eXBlP24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktcGxhY2Vob2xkZXIiLGNsYXNzOnsidW5pLXBsYWNlaG9sZGVyLXRpdGxlUGVuZXRyYXRlIjp0LnRpdGxlUGVuZXRyYXRlfX0pOnQuX2UoKV0pfSxpPVtdLG89bigiOTIzZCIpLGE9b1siYSJdLHM9KG4oIjI4M2QiKSxuKCI4ODQ0IikpLGM9T2JqZWN0KHNbImEiXSkoYSxyLGksITEsbnVsbCxudWxsLG51bGwpO2VbImEiXT1jLmV4cG9ydHN9LCI4Yjc3IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgcj1uKCI0NzM4IiksaT1uKCI0ZTQ2Iik7ZVsiYSJdPXtuYW1lOiJDdXN0b21UYWJCYXIiLHByb3BzOntzZWxlY3RlZDp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSxzaG93SWNvbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGRpcmVjdGlvbjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiaG9yaXpvbnRhbCJ9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3NlbGVjdGVkSW5kZXg6dGhpcy5zZWxlY3RlZH19LGNvbXB1dGVkOnt0YWJCYXJPcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIGlbImEiXX0saGFzVGFiQmFyOmZ1bmN0aW9uKCl7cmV0dXJuIGlbImEiXS5saXN0JiZpWyJhIl0ubGlzdC5sZW5ndGh9LHNob3dUYWJCYXI6ZnVuY3Rpb24oKXt2YXIgdD1nZXRBcHAoKTtyZXR1cm4hdHx8IXQuJGNoaWxkcmVuWzBdLmhpZGVUYWJCYXJ9fSx3YXRjaDp7c2VsZWN0ZWQ6ZnVuY3Rpb24odCl7dGhpcy5zZWxlY3RlZEluZGV4PXQ7dmFyIGU9Z2V0QXBwKCkuJGNoaWxkcmVuWzBdLiRyZWZzLnRhYkJhcjtlJiYoZS5zZWxlY3RlZEluZGV4PXQpfSwkcm91dGU6ZnVuY3Rpb24odCxlKXtpZih0Lm1ldGEuaXNUYWJCYXIpe3ZhciBuPWlbImEiXS5saXN0LmZpbmRJbmRleCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQubWV0YS5wYWdlUGF0aD09PWUucGFnZVBhdGh9KSk7bj4tMSYmKHRoaXMuc2VsZWN0ZWRJbmRleD1uKX19fSxtZXRob2RzOntfZ2V0UmVhbFBhdGg6ZnVuY3Rpb24odCl7dmFyIGU9L14oW2Etei1dKzopP1wvXC8vaSxuPS9eZGF0YTouKiwuKi87cmV0dXJuIGUudGVzdCh0KXx8bi50ZXN0KHQpfHwwPT09dC5pbmRleE9mKCIvIil8fCh0PSIvIit0KSxPYmplY3QoclsiYSJdKSh0KX0sX3N3aXRjaFRhYjpmdW5jdGlvbihlLG4pe3ZhciByPWUudGV4dCxpPWUucGFnZVBhdGg7dGhpcy5zZWxlY3RlZEluZGV4PW47dmFyIG89Ii8iK2k7bz09PV9fdW5pUm91dGVzWzBdLmFsaWFzJiYobz0iLyIpO3ZhciBhPXtpbmRleDpuLHRleHQ6cixwYWdlUGF0aDppfTt0aGlzLiRlbWl0KCJvblRhYkl0ZW1UYXAiLGEpLHRoaXMuJHJvdXRlLnBhdGg9PT1vJiZ0LmVtaXQoIm9uVGFiSXRlbVRhcCIsYSl9fX19KS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sIjhiODIiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsKSxpPW4oIjRiN2UiKTtpLmtleXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuYXNzaWduKHIsaSh0KSl9KSksZVsiYSJdPXJ9LCI4YzdjIjpmdW5jdGlvbihlLG4pe2UuZXhwb3J0cz10fSwiOGNiYiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyN2QyIiksaT1uLm4ocik7aS5hfSwiOGQ3ZCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSk7dmFyIHI9bigiYzgwYyIpLGk9bigiZjYyMSIpLG89bi5uKGkpO2Z1bmN0aW9uIGEoKXtpZih1bmkuY2FuSVVzZSgiY3NzLnZhciIpKXt2YXIgdD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUsZT1wYXJzZUludCgodC5nZXRQcm9wZXJ0eVZhbHVlKCItLXdpbmRvdy10b3AiKS5tYXRjaCgvXGQrLyl8fFsiMCJdKVswXSksbj1wYXJzZUludCgodC5nZXRQcm9wZXJ0eVZhbHVlKCItLXdpbmRvdy1ib3R0b20iKS5tYXRjaCgvXGQrLyl8fFsiMCJdKVswXSksaT1wYXJzZUludCgodC5nZXRQcm9wZXJ0eVZhbHVlKCItLXdpbmRvdy1sZWZ0IikubWF0Y2goL1xkKy8pfHxbIjAiXSlbMF0pLGE9cGFyc2VJbnQoKHQuZ2V0UHJvcGVydHlWYWx1ZSgiLS13aW5kb3ctcmlnaHQiKS5tYXRjaCgvXGQrLyl8fFsiMCJdKVswXSkscz1wYXJzZUludCgodC5nZXRQcm9wZXJ0eVZhbHVlKCItLXRvcC13aW5kb3ctaGVpZ2h0IikubWF0Y2goL1xkKy8pfHxbIjAiXSlbMF0pO3JldHVybnt0b3A6KGU/ZStvLmEudG9wOjApKyhzfHwwKSxib3R0b206bj9uK28uYS5ib3R0b206MCxsZWZ0Omk/aStvLmEubGVmdDowLHJpZ2h0OmE/YStvLmEucmlnaHQ6MH19dmFyIGM9MCx1PTAsbD1nZXRDdXJyZW50UGFnZXMoKTtpZihsLmxlbmd0aCl7dmFyIGY9bFtsLmxlbmd0aC0xXS4kcGFyZW50LiRwYXJlbnQsZD1mLm5hdmlnYXRpb25CYXIudHlwZTtjPSJkZWZhdWx0Ij09PWR8fCJmbG9hdCI9PT1kP3JbImEiXTowfXZhciBoPWdldEFwcCgpO3JldHVybiBoJiYodT1oLiRjaGlsZHJlblswXSYmaC4kY2hpbGRyZW5bMF0uc2hvd1RhYkJhcj9yWyJkIl06MCkse3RvcDpjLGJvdHRvbTp1LGxlZnQ6MCxyaWdodDowfX19LCI4ZGVmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjcwYmMiKSxpPW4ubihyKTtpLmF9LCI4ZjJmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlKXtpZihlKXtpZigwPT09ZS5pbmRleE9mKCIvIikpcmV0dXJuIGV9ZWxzZXtpZihlPXQsMD09PWUuaW5kZXhPZigiLyIpKXJldHVybiBlO3ZhciBuPWdldEN1cnJlbnRQYWdlcygpO3Q9bi5sZW5ndGg/bltuLmxlbmd0aC0xXS4kcGFnZS5yb3V0ZToiIn1pZigwPT09ZS5pbmRleE9mKCIuLyIpKXJldHVybiByKHQsZS5zdWJzdHIoMikpO2Zvcih2YXIgaT1lLnNwbGl0KCIvIiksbz1pLmxlbmd0aCxhPTA7YTxvJiYiLi4iPT09aVthXTthKyspO2kuc3BsaWNlKDAsYSksZT1pLmpvaW4oIi8iKTt2YXIgcz10Lmxlbmd0aD4wP3Quc3BsaXQoIi8iKTpbXTtyZXR1cm4gcy5zcGxpY2Uocy5sZW5ndGgtYS0xLGErMSksIi8iK3MuY29uY2F0KGkpLmpvaW4oIi8iKX1uLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSl9LCI4ZjgwIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbigidW5pLXNjcm9sbC12aWV3Iix0Ll9nKHt9LHQuJGxpc3RlbmVycyksW24oImRpdiIse3JlZjoid3JhcCIsc3RhdGljQ2xhc3M6InVuaS1zY3JvbGwtdmlldyJ9LFtuKCJkaXYiLHtyZWY6Im1haW4iLHN0YXRpY0NsYXNzOiJ1bmktc2Nyb2xsLXZpZXciLHN0eWxlOnsib3ZlcmZsb3cteCI6dC5zY3JvbGxYPyJhdXRvIjoiaGlkZGVuIiwib3ZlcmZsb3cteSI6dC5zY3JvbGxZPyJhdXRvIjoiaGlkZGVuIn19LFtuKCJkaXYiLHtyZWY6ImNvbnRlbnQiLHN0YXRpY0NsYXNzOiJ1bmktc2Nyb2xsLXZpZXctY29udGVudCJ9LFt0LnJlZnJlc2hlckVuYWJsZWQ/bigiZGl2Iix7cmVmOiJyZWZyZXNoZXJpbm5lciIsc3RhdGljQ2xhc3M6InVuaS1zY3JvbGwtdmlldy1yZWZyZXNoZXIiLHN0eWxlOnsiYmFja2dyb3VuZC1jb2xvciI6dC5yZWZyZXNoZXJCYWNrZ3JvdW5kLGhlaWdodDp0LnJlZnJlc2hlckhlaWdodCsicHgifX0sWyJub25lIiE9PXQucmVmcmVzaGVyRGVmYXVsdFN0eWxlP24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktc2Nyb2xsLXZpZXctcmVmcmVzaCJ9LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXNjcm9sbC12aWV3LXJlZnJlc2gtaW5uZXIifSxbInB1bGxpbmciPT10LnJlZnJlc2hTdGF0ZT9uKCJzdmciLHtrZXk6InJlZnJlc2hfX2ljb24iLHN0YXRpY0NsYXNzOiJ1bmktc2Nyb2xsLXZpZXctcmVmcmVzaF9faWNvbiIsc3R5bGU6e3RyYW5zZm9ybToicm90YXRlKCIrdC5yZWZyZXNoUm90YXRlKyJkZWcpIn0sYXR0cnM6e2ZpbGw6IiMyQkQwMDkiLHdpZHRoOiIyNCIsaGVpZ2h0OiIyNCIsdmlld0JveDoiMCAwIDI0IDI0In19LFtuKCJwYXRoIix7YXR0cnM6e2Q6Ik0xNy42NSA2LjM1QzE2LjIgNC45IDE0LjIxIDQgMTIgNGMtNC40MiAwLTcuOTkgMy41OC03Ljk5IDhzMy41NyA4IDcuOTkgOGMzLjczIDAgNi44NC0yLjU1IDcuNzMtNmgtMi4wOGMtLjgyIDIuMzMtMy4wNCA0LTUuNjUgNC0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXoifX0pLG4oInBhdGgiLHthdHRyczp7ZDoiTTAgMGgyNHYyNEgweiIsZmlsbDoibm9uZSJ9fSldKTp0Ll9lKCksInJlZnJlc2hpbmciPT10LnJlZnJlc2hTdGF0ZT9uKCJzdmciLHtrZXk6InJlZnJlc2hfX3NwaW5uZXIiLHN0YXRpY0NsYXNzOiJ1bmktc2Nyb2xsLXZpZXctcmVmcmVzaF9fc3Bpbm5lciIsYXR0cnM6e3dpZHRoOiIyNCIsaGVpZ2h0OiIyNCIsdmlld0JveDoiMjUgMjUgNTAgNTAifX0sW24oImNpcmNsZSIse3N0YXRpY1N0eWxlOntjb2xvcjoiIzJiZDAwOSJ9LGF0dHJzOntjeDoiNTAiLGN5OiI1MCIscjoiMjAiLGZpbGw6Im5vbmUiLCJzdHJva2Utd2lkdGgiOiIzIn19KV0pOnQuX2UoKV0pXSk6dC5fZSgpLCJub25lIj09dC5yZWZyZXNoZXJEZWZhdWx0U3R5bGU/dC5fdCgicmVmcmVzaGVyIik6dC5fZSgpXSwyKTp0Ll9lKCksdC5fdCgiZGVmYXVsdCIpXSwyKV0pXSldKX0saT1bXSxvPW4oImZhNTQiKSxhPW9bImEiXSxzPShuKCJmMDhlIiksbigiODg0NCIpKSxjPU9iamVjdChzWyJhIl0pKGEscixpLCExLG51bGwsbnVsbCxudWxsKTtlWyJkZWZhdWx0Il09Yy5leHBvcnRzfSwiOGZjNiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSk7dmFyIHI9bigiNzU1MyIpLGk9bigiY2ZmOSIpO2Z1bmN0aW9uIG8odCxlKXtlLmdldEFwcDt2YXIgbj1lLmdldEN1cnJlbnRQYWdlcztmdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbihlLHIpe3I9cGFyc2VJbnQocik7dmFyIG89bigpLGE9by5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC4kcGFnZS5pZD09PXJ9KSk7YSYmT2JqZWN0KGlbImIiXSkoYSx0LGUpfX12YXIgYT1PYmplY3QoclsiYSJdKSgicmVxdWVzdENvbXBvbmVudEluZm8iKTtmdW5jdGlvbiBzKHQpe3ZhciBlPXQucmVxSWQsbj10LnJlcyxyPWEucG9wKGUpO3ImJnIobil9dmFyIGM9T2JqZWN0KHJbImEiXSkoInJlcXVlc3RDb21wb25lbnRPYnNlcnZlciIpO2Z1bmN0aW9uIHUodCl7dmFyIGU9dC5yZXFJZCxuPXQucmVxRW5kLHI9dC5yZXMsaT1jLmdldChlKTtpZihpKXtpZihuKXJldHVybiB2b2lkIGMucG9wKGUpO2kocil9fXZhciBsPU9iamVjdChyWyJhIl0pKCJyZXF1ZXN0TWVkaWFRdWVyeU9ic2VydmVyIik7ZnVuY3Rpb24gZih0KXt2YXIgZT10LnJlcUlkLG49dC5yZXFFbmQscj10LnJlcyxpPWwuZ2V0KGUpO2lmKGkpe2lmKG4pcmV0dXJuIHZvaWQgbC5wb3AoZSk7aShyKX19dCgib25QYWdlUmVhZHkiLG8oIm9uUmVhZHkiKSksdCgib25QYWdlU2Nyb2xsIixvKCJvblBhZ2VTY3JvbGwiKSksdCgib25SZWFjaEJvdHRvbSIsbygib25SZWFjaEJvdHRvbSIpKSx0KCJvblJlcXVlc3RDb21wb25lbnRJbmZvIixzKSx0KCJvblJlcXVlc3RDb21wb25lbnRPYnNlcnZlciIsdSksdCgib25SZXF1ZXN0TWVkaWFRdWVyeU9ic2VydmVyIixmKX19LCI5MDllIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjBkYjgiKTtuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJbImEiXX0pKTt2YXIgaT1uKCIyYWNlIik7bi5kKGUsImYiLChmdW5jdGlvbigpe3JldHVybiBpWyJhIl19KSk7dmFyIG89bigiNDMzNSIpO24uZChlLCJjIiwoZnVuY3Rpb24oKXtyZXR1cm4gb1siYSJdfSkpO3ZhciBhPW4oIjIzYTEiKTtuLmQoZSwiZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGFbImEiXX0pKTt2YXIgcz1uKCIwZTRhIik7bi5kKGUsImUiLChmdW5jdGlvbigpe3JldHVybiBzWyJhIl19KSk7dmFyIGM9bigiMGM0MCIpO24uZChlLCJiIiwoZnVuY3Rpb24oKXtyZXR1cm4gY1siYSJdfSkpO3ZhciB1PW4oIjg4YTgiKTtuLmQoZSwiZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHVbImEiXX0pKX0sIjkwZjAiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJnZXRQcm92aWRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSk7dmFyIHI9e09BVVRIOiJPQVVUSCIsU0hBUkU6IlNIQVJFIixQQVlNRU5UOiJQQVlNRU5UIixQVVNIOiJQVVNIIn0saT17c2VydmljZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITAsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7aWYodD0odHx8IiIpLnRvVXBwZXJDYXNlKCksdCYmT2JqZWN0LnZhbHVlcyhyKS5pbmRleE9mKHQpPDApcmV0dXJuInNlcnZpY2UgZXJyb3IifX19fSw5MTMxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4oZT10KS5pbnZva2VDYWxsYmFja0hhbmRsZXIuYXBwbHkoZSxhcmd1bWVudHMpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIHQucmVtb3ZlQ2FsbGJhY2tIYW5kbGVyKGUpfW4uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKSxuLmQoZSwiYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSl9KS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sOTE1MTpmdW5jdGlvbih0LGUpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijtmb3IodmFyIHQ9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLG49bmV3IFVpbnQ4QXJyYXkoMjU2KSxyPTA7cjx0Lmxlbmd0aDtyKyspblt0LmNoYXJDb2RlQXQocildPXI7ZS5lbmNvZGU9ZnVuY3Rpb24oZSl7dmFyIG4scj1uZXcgVWludDhBcnJheShlKSxpPXIubGVuZ3RoLG89IiI7Zm9yKG49MDtuPGk7bis9MylvKz10W3Jbbl0+PjJdLG8rPXRbKDMmcltuXSk8PDR8cltuKzFdPj40XSxvKz10WygxNSZyW24rMV0pPDwyfHJbbisyXT4+Nl0sbys9dFs2MyZyW24rMl1dO3JldHVybiBpJTM9PT0yP289by5zdWJzdHJpbmcoMCxvLmxlbmd0aC0xKSsiPSI6aSUzPT09MSYmKG89by5zdWJzdHJpbmcoMCxvLmxlbmd0aC0yKSsiPT0iKSxvfSxlLmRlY29kZT1mdW5jdGlvbih0KXt2YXIgZSxyLGksbyxhLHM9Ljc1KnQubGVuZ3RoLGM9dC5sZW5ndGgsdT0wOyI9Ij09PXRbdC5sZW5ndGgtMV0mJihzLS0sIj0iPT09dFt0Lmxlbmd0aC0yXSYmcy0tKTt2YXIgbD1uZXcgQXJyYXlCdWZmZXIocyksZj1uZXcgVWludDhBcnJheShsKTtmb3IoZT0wO2U8YztlKz00KXI9blt0LmNoYXJDb2RlQXQoZSldLGk9blt0LmNoYXJDb2RlQXQoZSsxKV0sbz1uW3QuY2hhckNvZGVBdChlKzIpXSxhPW5bdC5jaGFyQ29kZUF0KGUrMyldLGZbdSsrXT1yPDwyfGk+PjQsZlt1KytdPSgxNSZpKTw8NHxvPj4yLGZbdSsrXT0oMyZvKTw8Nnw2MyZhO3JldHVybiBsfX0pKCl9LCI5MjNkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgcj1uKCI4NGVkIiksaT1uKCI0NzM4Iiksbz1uKCIwODU0IiksYT17Zm9yd2FyZDoiJiN4ZTYwMDsiLGJhY2s6IiYjeGU2MDE7IixzaGFyZToiJiN4ZTYwMjsiLGZhdm9yaXRlOiImI3hlNjA0OyIsaG9tZToiJiN4ZTYwNTsiLG1lbnU6IiYjeGU2MDY7IixjbG9zZToiJiN4ZTY1MDsifTtlWyJhIl09e25hbWU6IlBhZ2VIZWFkIixtaXhpbnM6W29bImEiXV0scHJvcHM6e2JhY2tCdXR0b246e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxiYWNrZ3JvdW5kQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNwYXJlbnQiPT09dGhpcy50eXBlPyIjMDAwIjoiI0Y4RjhGOCJ9fSx0ZXh0Q29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiNmZmYifSx0aXRsZVRleHQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LGR1cmF0aW9uOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIwIn0sdGltaW5nRnVuYzp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sbG9hZGluZzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHRpdGxlU2l6ZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiMTZweCJ9LHR5cGU6e2RlZmF1bHQ6ImRlZmF1bHQiLHZhbGlkYXRvcjpmdW5jdGlvbih0KXtyZXR1cm4tMSE9PVsiZGVmYXVsdCIsInRyYW5zcGFyZW50IiwiZmxvYXQiXS5pbmRleE9mKHQpfX0sY292ZXJhZ2U6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IjEzMnB4In0sYnV0dG9uczp7dHlwZTpBcnJheSxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuW119fSxzZWFyY2hJbnB1dDp7dHlwZTpbT2JqZWN0LEJvb2xlYW5dLGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX19LHRpdGxlSW1hZ2U6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LHRpdGxlUGVuZXRyYXRlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc2hhZG93Ont0eXBlOk9iamVjdCxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJue319fX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntmb2N1czohMSx0ZXh0OiIiLGNvbXBvc2luZzohMSxzaG93UGxhY2Vob2xkZXI6ITF9fSxjb21wdXRlZDp7YnRuczpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1bXSxuPXt9O3JldHVybiB0aGlzLmJ1dHRvbnMubGVuZ3RoJiZ0aGlzLmJ1dHRvbnMuZm9yRWFjaCgoZnVuY3Rpb24obyl7dmFyIGE9T2JqZWN0LmFzc2lnbih7fSxvKTtpZihhLmZvbnRTcmMmJiFhLmZvbnRGYW1pbHkpe3ZhciBzLGM9YS5mb250U3JjPU9iamVjdChpWyJhIl0pKGEuZm9udFNyYyk7aWYoYyBpbiBuKXM9bltjXTtlbHNle3M9ImZvbnQiLmNvbmNhdChEYXRlLm5vdygpKSxuW2NdPXM7dmFyIHU9J0Bmb250LWZhY2V7Zm9udC1mYW1pbHk6ICInLmNvbmNhdChzLCciO3NyYzogdXJsKCInKS5jb25jYXQoYywnIikgZm9ybWF0KCJ0cnVldHlwZSIpfScpO09iamVjdChyWyJhIl0pKHUsInVuaS1idG4tZm9udC0iK3MpfWEuZm9udEZhbWlseT1zfWEuY29sb3I9InRyYW5zcGFyZW50Ij09PXQudHlwZT8iI2ZmZiI6YS5jb2xvcnx8dC50ZXh0Q29sb3I7dmFyIGw9YS5mb250U2l6ZXx8KCJ0cmFuc3BhcmVudCI9PT10LnR5cGV8fC9cXHUvLnRlc3QoYS50ZXh0KT8iMjJweCI6IjI3cHgiKTsvXGQkLy50ZXN0KGwpJiYobCs9InB4IiksYS5mb250U2l6ZT1sLGEuZm9udFdlaWdodD1hLmZvbnRXZWlnaHR8fCJub3JtYWwiLGUucHVzaChhKX0pKSxlfSxoZWFkQ2xhc3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNoYWRvdy5jb2xvclR5cGUsZT17InVuaS1wYWdlLWhlYWQtdHJhbnNwYXJlbnQiOiJ0cmFuc3BhcmVudCI9PT10aGlzLnR5cGUsInVuaS1wYWdlLWhlYWQtdGl0bGVQZW5ldHJhdGUiOnRoaXMudGl0bGVQZW5ldHJhdGUsInVuaS1wYWdlLWhlYWQtc2hhZG93Ijp0fTtyZXR1cm4gdCYmKGVbInVuaS1wYWdlLWhlYWQtc2hhZG93LSIuY29uY2F0KHQpXT10KSxlfX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYodGhpcy5zZWFyY2hJbnB1dCl7dmFyIG49dGhpcy4kcmVmcy5pbnB1dDtuLiR3YXRjaCgiY29tcG9zaW5nIiwoZnVuY3Rpb24odCl7ZS5jb21wb3Npbmc9dH0pKSxuLiR3YXRjaCgidmFsdWVTeW5jIiwoZnVuY3Rpb24odCl7ZS5zaG93UGxhY2Vob2xkZXI9ISF0fSkpLHRoaXMuc2VhcmNoSW5wdXQuZGlzYWJsZWQ/bi4kZWwuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbigpe3QuZW1pdCgib25OYXZpZ2F0aW9uQmFyU2VhcmNoSW5wdXRDbGlja2VkIiwiIil9KSk6KG4uJHJlZnMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLChmdW5jdGlvbihuKXsiRU5URVIiPT09bi5rZXkudG9VcHBlckNhc2UoKSYmdC5lbWl0KCJvbk5hdmlnYXRpb25CYXJTZWFyY2hJbnB1dENvbmZpcm1lZCIse3RleHQ6ZS50ZXh0fSl9KSksbi4kcmVmcy5pbnB1dC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsKGZ1bmN0aW9uKCl7dC5lbWl0KCJvbk5hdmlnYXRpb25CYXJTZWFyY2hJbnB1dEZvY3VzQ2hhbmdlZCIse2ZvY3VzOiEwfSl9KSksbi4kcmVmcy5pbnB1dC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoZnVuY3Rpb24oKXt0LmVtaXQoIm9uTmF2aWdhdGlvbkJhclNlYXJjaElucHV0Rm9jdXNDaGFuZ2VkIix7Zm9jdXM6ITF9KX0pKSl9fSxtZXRob2RzOntfYmFjazpmdW5jdGlvbigpezE9PT1nZXRDdXJyZW50UGFnZXMoKS5sZW5ndGg/dW5pLnJlTGF1bmNoKHt1cmw6Ii8ifSk6dW5pLm5hdmlnYXRlQmFjayh7ZnJvbToiYmFja2J1dHRvbiJ9KX0sX29uQnRuQ2xpY2s6ZnVuY3Rpb24oZSl7dC5lbWl0KCJvbk5hdmlnYXRpb25CYXJCdXR0b25UYXAiLE9iamVjdC5hc3NpZ24oe30sdGhpcy5idG5zW2VdLHtpbmRleDplfSkpfSxfZm9ybWF0QnRuRm9udFRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZm9udFNyYyYmdC5mb250RmFtaWx5P3QudGV4dC5yZXBsYWNlKCJcXHUiLCImI3giKTphW3QudHlwZV0/YVt0LnR5cGVdOnQudGV4dHx8IiJ9LF9mb3JtYXRCdG5TdHlsZTpmdW5jdGlvbih0KXt2YXIgZT17Y29sb3I6dC5jb2xvcixmb250U2l6ZTp0LmZvbnRTaXplLGZvbnRXZWlnaHQ6dC5mb250V2VpZ2h0fTtyZXR1cm4gdC5mb250RmFtaWx5JiYoZS5mb250RmFtaWx5PXQuZm9udEZhbWlseSksZX0sX2ZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5mb2N1cz0hMH0sX2JsdXI6ZnVuY3Rpb24oKXt0aGlzLmZvY3VzPSExfSxfaW5wdXQ6ZnVuY3Rpb24oZSl7dC5lbWl0KCJvbk5hdmlnYXRpb25CYXJTZWFyY2hJbnB1dENoYW5nZWQiLHt0ZXh0OmV9KX0sX2NsZWFySW5wdXQ6ZnVuY3Rpb24oKXt0aGlzLnRleHQ9IiIsdGhpcy5faW5wdXQodGhpcy50ZXh0KX19fX0pLmNhbGwodGhpcyxuKCIyYzlmIikpfSwiOTI1ZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsImNob29zZUZpbGUiLChmdW5jdGlvbigpe3JldHVybiBvfSkpO3ZhciByPVsiYWxsIiwiaW1hZ2UiLCJ2aWRlbyJdLGk9WyJhbGJ1bSIsImNhbWVyYSJdLG89e2NvdW50Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwMCx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXt0PD0wJiYoZS5jb3VudD0xMDApfX0sc291cmNlVHlwZTp7dHlwZTpBcnJheSxyZXF1aXJlZDohMSxkZWZhdWx0OmksdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7dD10LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIGkuaW5jbHVkZXModCl9KSksZS5zb3VyY2VUeXBlPXQubGVuZ3RoP3Q6aX19LHR5cGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImFsbCIsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7ci5pbmNsdWRlcyh0KXx8KGUudHlwZT1yWzBdKSxlLnR5cGU9ImFsbCI9PT1lLnR5cGU/ZS50eXBlPSIqIjplLnR5cGV9fSxleHRlbnNpb246e3R5cGU6QXJyYXksdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoMD09PXQubGVuZ3RoKXJldHVybiJwYXJhbSBleHRlbnNpb24gc2hvdWxkIG5vdCBiZSBlbXB0eS4ifWVsc2UiYWxsIiE9PWUudHlwZSYmIioiIT09ZS50eXBlJiZlLnR5cGU/ZS5leHRlbnNpb249WyIqIl06ZS5leHRlbnNpb249WyIiXX19fX0sIjk1MWMiOmZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWV9LDk1OTM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI4M2MyIiksaT1uLm4ocik7aS5hfSwiOTViZCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIxZmRmIiksaT1uLm4ocik7aS5hfSw5NjAyOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe3ZhciByPW4oIjM4Y2UiKSxpPW4oImNjZTIiKSxvPW4oIjJiZTAiKSxhPW4oImY5OGMiKTtmdW5jdGlvbiBzKCl7dC5wdWJsaXNoSGFuZGxlcigib25QYWdlUmVhZHkiLHt9LHRoaXMuJHBhZ2UuaWQpfWVbImRlZmF1bHQiXT17aW5zdGFsbDpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307ZS5yb3V0ZXMsT2JqZWN0KGlbImEiXSkoKTt2YXIgbj1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LnRhcmdldDtuJiZuIT09ZTtuPW4ucGFyZW50Tm9kZSlpZihuLnRhZ05hbWUmJjA9PT1uLnRhZ05hbWUuaW5kZXhPZigiVU5JLSIpKWJyZWFrO3JldHVybiBufTt0LnByb3RvdHlwZS4kaGFuZGxlRXZlbnQ9ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIEV2ZW50KXt2YXIgZT1uKHQsdGhpcy4kZWwpO3Q9aVsiYiJdLmNhbGwodGhpcyx0LnR5cGUsdCx7fSxlfHx0LnRhcmdldCx0LmN1cnJlbnRUYXJnZXQpfXJldHVybiB0fSx0LnByb3RvdHlwZS4kZ2V0Q29tcG9uZW50RGVzY3JpcHRvcj1mdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3QoYVsiYSJdKSh0fHx0aGlzLGUpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIiRvd25lckluc3RhbmNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGdldENvbXBvbmVudERlc2NyaXB0b3IodGhpcyl9fSksdC5wcm90b3R5cGUuJGhhbmRsZVd4c0V2ZW50PWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBFdmVudCl7dmFyIGU9dC5jdXJyZW50VGFyZ2V0LHI9ZSYmKGUuX192dWVfX3x8ZSksbz1lJiZyLiRnZXRDb21wb25lbnREZXNjcmlwdG9yJiZyLiRnZXRDb21wb25lbnREZXNjcmlwdG9yKHIsITEpLGE9dDt0PWlbImIiXS5jYWxsKHRoaXMsYS50eXBlLGEse30sbihhLHRoaXMuJGVsKXx8YS50YXJnZXQsYS5jdXJyZW50VGFyZ2V0KSx0Lmluc3RhbmNlPW8sdC5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiBhLnByZXZlbnREZWZhdWx0KCl9LHQuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGEuc3RvcFByb3BhZ2F0aW9uKCl9fXJldHVybiB0fSx0Lm1peGluKHtiZWZvcmVDcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy4kb3B0aW9ucyxuPWUud3hzO24mJk9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbZV09bltlXX0pKSxlLmJlaGF2aW9ycyYmZS5iZWhhdmlvcnMubGVuZ3RoJiZPYmplY3Qob1siYSJdKShlLHRoaXMpLE9iamVjdChyWyJkIl0pKHRoaXMpJiYoZS5tb3VudGVkPWUubW91bnRlZD9bXS5jb25jYXQocyxlLm1vdW50ZWQpOltzXSl9fSl9fX0uY2FsbCh0aGlzLG4oIjMxZDIiKSl9LCI5NmI5IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImMxOTQiKSxpPW4ubihyKTtpLmF9LDk3OTg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaSh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fWZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiBlJiZpKHQucHJvdG90eXBlLGUpLG4mJmkodCxuKSx0fW4uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKTt2YXIgYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuKXt2YXIgaT10aGlzO3IodGhpcyx0KSx0aGlzLmlkPWUsdGhpcy5saXN0ZW5lcj17fSx0aGlzLmVtaXRDYWNoZT17fSxuJiZPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbih0KXtpLm9uKHQsblt0XSl9KSl9cmV0dXJuIG8odCxbe2tleToiZW1pdCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoZT4xP2UtMTowKSxyPTE7cjxlO3IrKyluW3ItMV09YXJndW1lbnRzW3JdO3ZhciBpPXRoaXMubGlzdGVuZXJbdF07aWYoIWkpcmV0dXJuKHRoaXMuZW1pdENhY2hlW3RdfHwodGhpcy5lbWl0Q2FjaGVbdF09W10pKS5wdXNoKG4pO2kuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5mbi5hcHBseSh0LmZuLG4pfSkpLHRoaXMubGlzdGVuZXJbdF09aS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiJvbmNlIiE9PXQudHlwZX0pKX19LHtrZXk6Im9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuX2FkZExpc3RlbmVyKHQsIm9uIixlKSx0aGlzLl9jbGVhckNhY2hlKHQpfX0se2tleToib25jZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLl9hZGRMaXN0ZW5lcih0LCJvbmNlIixlKSx0aGlzLl9jbGVhckNhY2hlKHQpfX0se2tleToib2ZmIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMubGlzdGVuZXJbdF07aWYobilpZihlKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7KW5bcl0uZm49PT1lJiYobi5zcGxpY2UociwxKSxyLS0pLHIrKztlbHNlIGRlbGV0ZSB0aGlzLmxpc3RlbmVyW3RdfX0se2tleToiX2NsZWFyQ2FjaGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZW1pdENhY2hlW3RdO2lmKGUpZm9yKDtlLmxlbmd0aD4wOyl0aGlzLmVtaXQuYXBwbHkodGhpcyxbdF0uY29uY2F0KGUuc2hpZnQoKSkpfX0se2tleToiX2FkZExpc3RlbmVyIix2YWx1ZTpmdW5jdGlvbih0LGUsbil7KHRoaXMubGlzdGVuZXJbdF18fCh0aGlzLmxpc3RlbmVyW3RdPVtdKSkucHVzaCh7Zm46bix0eXBlOmV9KX19XSksdH0oKX0sIjk3YWYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe24uZChlLCJiIiwoZnVuY3Rpb24oKXtyZXR1cm4gY30pKSxuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSk7dmFyIHI9bigiY2ZmOSIpO2Z1bmN0aW9uIGkodCl7LTE9PT10aGlzLmtlZXBBbGl2ZUluY2x1ZGUuaW5kZXhPZih0KSYmdGhpcy5rZWVwQWxpdmVJbmNsdWRlLnB1c2godCl9dmFyIG89W107ZnVuY3Rpb24gYSh0KXtpZigibnVtYmVyIj09PXR5cGVvZiB0KW89dGhpcy5rZWVwQWxpdmVJbmNsdWRlLnNwbGljZSgtKHQtMSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHQuc3BsaXQoIi0iKS5wb3AoKSl9KSk7ZWxzZXt2YXIgZT10aGlzLmtlZXBBbGl2ZUluY2x1ZGUuaW5kZXhPZih0KTstMSE9PWUmJnRoaXMua2VlcEFsaXZlSW5jbHVkZS5zcGxpY2UoZSwxKX19dmFyIHM9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBjKHQpe3JldHVybiBzW3RdfWZ1bmN0aW9uIHUodCl7c1t0XT17eDp3aW5kb3cucGFnZVhPZmZzZXQseTp3aW5kb3cucGFnZVlPZmZzZXR9fWZ1bmN0aW9uIGwodCxlLG4pe2UmJm4mJmUubWV0YS5pc1RhYkJhciYmbi5tZXRhLmlzVGFiQmFyJiZ1KG4ucGFyYW1zLl9faWRfXyk7Zm9yKHZhciBpPWdldEN1cnJlbnRQYWdlcygpLG89aS5sZW5ndGgtMTtvPj0wO28tLSl7dmFyIHM9aVtvXSxjPXMuJHBhZ2UubWV0YTtjLmlzVGFiQmFyfHwoYS5jYWxsKHRoaXMsYy5uYW1lKyItIitzLiRwYWdlLmlkKSxPYmplY3QoclsiYiJdKShzLCJvblVubG9hZCIpKX19ZnVuY3Rpb24gZih0KXtfX3VuaUNvbmZpZy5yZUxhdW5jaD0oX191bmlDb25maWcucmVMYXVuY2h8fDEpKzE7Zm9yKHZhciBlPWdldEN1cnJlbnRQYWdlcyghMCksbj1lLmxlbmd0aC0xO24+PTA7bi0tKU9iamVjdChyWyJiIl0pKGVbbl0sIm9uVW5sb2FkIiksZVtuXS4kZGVzdHJveSgpO3RoaXMua2VlcEFsaXZlSW5jbHVkZT1bXSxzPU9iamVjdC5jcmVhdGUobnVsbCl9dmFyIGQ9W107ZnVuY3Rpb24gaCh0LGUsbixyKXtkPWdldEN1cnJlbnRQYWdlcyghMCk7dmFyIG89ZS5wYXJhbXMuX19pZF9fLHM9dC5wYXJhbXMuX19pZF9fLGM9dC5tZXRhLm5hbWUrIi0iK3M7aWYocz09PW8mJiJyZUxhdW5jaCIhPT10LnR5cGUpdC5mdWxsUGF0aCE9PWUuZnVsbFBhdGg/KGkuY2FsbCh0aGlzLGMpLG4oKSk6bighMSk7ZWxzZSBpZih0Lm1ldGEuaWQmJnQubWV0YS5pZCE9PXMpbih7cGF0aDp0LnBhdGgscmVwbGFjZTohMH0pO2Vsc2V7dmFyIHU9ZS5tZXRhLm5hbWUrIi0iK287c3dpdGNoKHQudHlwZSl7Y2FzZSJuYXZpZ2F0ZVRvIjpicmVhaztjYXNlInJlZGlyZWN0VG8iOmEuY2FsbCh0aGlzLHUpLGUubWV0YSYmZS5tZXRhLmlzUXVpdCYmKHQubWV0YS5pc1F1aXQ9ITAsdC5tZXRhLmlzRW50cnk9ISFlLm1ldGEuaXNFbnRyeSk7YnJlYWs7Y2FzZSJzd2l0Y2hUYWIiOmwuY2FsbCh0aGlzLHIsdCxlKTticmVhaztjYXNlInJlTGF1bmNoIjpmLmNhbGwodGhpcyxjKSx0Lm1ldGEuaXNRdWl0PSEwO2JyZWFrO2RlZmF1bHQ6byYmbz5zJiYoYS5jYWxsKHRoaXMsdSksdGhpcy4kcm91dGVyLl8kZGVsdGE+MSYmYS5jYWxsKHRoaXMsdGhpcy4kcm91dGVyLl8kZGVsdGEpKTticmVha31pZigicmVMYXVuY2giIT09dC50eXBlJiYicmVkaXJlY3RUbyIhPT10LnR5cGUmJmUubWV0YS5pZCYmaS5jYWxsKHRoaXMsdSksaS5jYWxsKHRoaXMsYyksdC5tZXRhJiZ0Lm1ldGEubmFtZSl7ZG9jdW1lbnQuYm9keS5jbGFzc05hbWU9InVuaS1ib2R5ICIrdC5tZXRhLm5hbWU7dmFyIGg9Im52dWUtZGlyLSIrX191bmlDb25maWcubnZ1ZVsiZmxleC1kaXJlY3Rpb24iXTt0Lm1ldGEuaXNOVnVlPyhkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgibnZ1ZSIsIiIpLGRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKGgsIiIpKTooZG9jdW1lbnQuYm9keS5yZW1vdmVBdHRyaWJ1dGUoIm52dWUiKSxkb2N1bWVudC5ib2R5LnJlbW92ZUF0dHJpYnV0ZShoKSl9bigpfX1mdW5jdGlvbiBwKGUsbil7dmFyIGksYT1uLnBhcmFtcy5fX2lkX18scz1lLnBhcmFtcy5fX2lkX187ZnVuY3Rpb24gYyh0KXtpZih0KXtPYmplY3QoclsiYiJdKSh0LCJvblVubG9hZCIpO3ZhciBlPWQuaW5kZXhPZih0KTtlPj0wJiZkLnNwbGljZShlLDEpfX1zd2l0Y2goaT1uLm1ldGEuaXNTZXQ/ZC5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC4kcGFnZS5tZXRhLnBhZ2VQYXRoPT09bi5tZXRhLnBhZ2VQYXRofSkpOmQuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuJHBhZ2UuaWQ9PT1hfSkpLGUudHlwZSl7Y2FzZSJuYXZpZ2F0ZVRvIjppJiZPYmplY3QoclsiYiJdKShpLCJvbkhpZGUiKTticmVhaztjYXNlInJlZGlyZWN0VG8iOmMoaSk7YnJlYWs7Y2FzZSJzd2l0Y2hUYWIiOm4ubWV0YS5pc1RhYkJhciYmaSYmT2JqZWN0KHJbImIiXSkoaSwib25IaWRlIik7YnJlYWs7Y2FzZSJyZUxhdW5jaCI6YnJlYWs7ZGVmYXVsdDphJiZhPnMmJihjKGkpLHRoaXMuJHJvdXRlci5fJGRlbHRhPjEmJm8ucmV2ZXJzZSgpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPWQuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuJHBhZ2UuaWQ9PT10fSkpO2MoZSl9KSkpO2JyZWFrfWlmKGRlbGV0ZSB0aGlzLiRyb3V0ZXIuXyRkZWx0YSxvLmxlbmd0aD0wLCJyZUxhdW5jaCIhPT1lLnR5cGUpe3ZhciB1LGw9Z2V0Q3VycmVudFBhZ2VzKCEwKTt1PWUubWV0YS5pc1NldD9sLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LiRwYWdlLm1ldGEucGFnZVBhdGg9PT1lLm1ldGEucGFnZVBhdGh9KSk6bC5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC4kcGFnZS5pZD09PXN9KSksdSYmKHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5lbWl0KCJvbk5hdmlnYXRpb25CYXJDaGFuZ2UiLHUuJHBhcmVudC4kcGFyZW50Lm5hdmlnYXRpb25CYXIpLE9iamVjdChyWyJiIl0pKHUsIm9uU2hvdyIpfSksMCksZG9jdW1lbnQudGl0bGU9dS4kcGFyZW50LiRwYXJlbnQubmF2aWdhdGlvbkJhci50aXRsZVRleHQpfX1mdW5jdGlvbiB2KHQsZSl7dC4kcm91dGVyLmJlZm9yZUVhY2goKGZ1bmN0aW9uKG4scixpKXtoLmNhbGwodCxuLHIsaSxlKX0pKSx0LiRyb3V0ZXIuYWZ0ZXJFYWNoKChmdW5jdGlvbihlLG4pe3AuY2FsbCh0LGUsbil9KSl9fSkuY2FsbCh0aGlzLG4oIjJjOWYiKSl9LCI5N2MzIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7aWYoMD09PXQuaW5kZXhPZigiIyIpKXt2YXIgZT10LnN1YnN0cigxKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuISghdC5jb21wb25lbnRJbnN0YW5jZXx8dC5jb21wb25lbnRJbnN0YW5jZS5pZCE9PWUpfHwhKCF0LmRhdGF8fCF0LmRhdGEuYXR0cnN8fHQuZGF0YS5hdHRycy5pZCE9PWUpfX1pZigwPT09dC5pbmRleE9mKCIuIikpe3ZhciBuPXQuc3Vic3RyKDEpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhJiZvKG4sdC5kYXRhLnN0YXRpY0NsYXNzLHQuZGF0YS5jbGFzcyl9fX1uLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSk7dmFyIGk9L1xzKy87ZnVuY3Rpb24gbyh0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IiIsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06IiI7cmV0dXJuIGU/LTEhPT1lLnNwbGl0KGkpLmluZGV4T2YodCk6biYmInN0cmluZyI9PT10eXBlb2Ygbj8tMSE9PW4uc3BsaXQoaSkuaW5kZXhPZih0KTp2b2lkIDB9ZnVuY3Rpb24gYSh0LGUpe2lmKGUodC4kdm5vZGV8fHQuX3Zub2RlKSlyZXR1cm4gdDtmb3IodmFyIG49dC4kY2hpbGRyZW4scj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgaT1hKG5bcl0sZSk7aWYoaSlyZXR1cm4gaX19ZnVuY3Rpb24gcyh0LGUsbil7ZSh0LiR2bm9kZXx8dC5fdm5vZGUpJiZuLnB1c2godCk7Zm9yKHZhciByPXQuJGNoaWxkcmVuLGk9MDtpPHIubGVuZ3RoO2krKylzKHJbaV0sZSxuKTtyZXR1cm4gbn1mdW5jdGlvbiBjKHQpe3QucHJvdG90eXBlLmNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyPWZ1bmN0aW9uKHQpe3JldHVybiB1bmkuY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIodGhpcyx0KX0sdC5wcm90b3R5cGUuY3JlYXRlTWVkaWFRdWVyeU9ic2VydmVyPWZ1bmN0aW9uKHQpe3JldHVybiB1bmkuY3JlYXRlTWVkaWFRdWVyeU9ic2VydmVyKHRoaXMsdCl9LHQucHJvdG90eXBlLnNlbGVjdENvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gYSh0aGlzLHIodCkpfSx0LnByb3RvdHlwZS5zZWxlY3RBbGxDb21wb25lbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBzKHRoaXMscih0KSxbXSl9fX0sOTg0ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjY1ZGIiKSxpPW4ubihyKTtpLmF9LDk4NTQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJmNjY5IiksaT1uLm4ocik7aS5hfSw5ODc5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJhZGRJbnRlcmNlcHRvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSksbi5kKGUsInJlbW92ZUludGVyY2VwdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKTt2YXIgcj1be25hbWU6Im1ldGhvZCIsdHlwZTpbU3RyaW5nLE9iamVjdF0scmVxdWlyZWQ6ITB9XSxpPXJ9LCI5ODhlIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9eyIuL2Jhc2UvZXZlbnQtYnVzLmpzIjoiM2IyZCIsIi4vYmFzZS9nZXQtYnJvd3Nlci1pbmZvLmpzIjoiMDFmZCIsIi4vY29uc3RhbnRzLmpzIjoiMmY1YyIsIi4vY29udGV4dC9pbm5lci1hdWRpby5qcyI6IjEyZTIiLCIuL2NvbnRleHQvb3BlcmF0ZS1tYXAtcGxheWVyLmpzIjoiNTQxYyIsIi4vY29udGV4dC9vcGVyYXRlLXZpZGVvLXBsYXllci5qcyI6ImJjYWMiLCIuL2RldmljZS9hY2NlbGVyb21ldGVyLmpzIjoiZTQ0NCIsIi4vZGV2aWNlL2NsaXBib2FyZC5qcyI6IjQ0OTgiLCIuL2RldmljZS9jb21wYXNzLmpzIjoiMzlhMiIsIi4vZGV2aWNlL2dldC1zeXN0ZW0taW5mby5qcyI6ImVmNGUiLCIuL2RldmljZS9nZXQtd2luZG93LWluZm8uanMiOiIxZWZkIiwiLi9kZXZpY2UvbWFrZS1waG9uZS1jYWxsLmpzIjoiNjM4MyIsIi4vZGV2aWNlL25ldHdvcmstaW5mby5qcyI6ImMyMzMiLCIuL2RldmljZS92aWJyYXRlLmpzIjoiODFmZiIsIi4vZmlsZS9maWxlLmpzIjoiMjg2ZSIsIi4vZmlsZS9vcGVuLWRvY3VtZW50LmpzIjoiNGEzZiIsIi4vaW5kZXguanMiOiIwMmZhIiwiLi9rZXlib2FyZC9rZXlib2FyZC5qcyI6ImMxOWQiLCIuL2xvY2F0aW9uL2Nob29zZS1sb2NhdGlvbi5qcyI6IjZjMzYiLCIuL2xvY2F0aW9uL2dldC1sb2NhdGlvbi5qcyI6ImFmOTUiLCIuL2xvY2F0aW9uL2xvY2F0aW9uLWNoYW5nZS5qcyI6IjlmNjkiLCIuL2xvY2F0aW9uL29wZW4tbG9jYXRpb24uanMiOiI3OTNjIiwiLi9tZWRpYS9NSU1FVHlwZS5qcyI6Ijg0NmUiLCIuL21lZGlhL2Nob29zZS1maWxlLmpzIjoiN2ZkMiIsIi4vbWVkaWEvY2hvb3NlLWltYWdlLmpzIjoiNjc3MyIsIi4vbWVkaWEvY2hvb3NlLXZpZGVvLmpzIjoiMzlhMCIsIi4vbWVkaWEvY3JlYXRlX2lucHV0LmpzIjoiNDkzZCIsIi4vbWVkaWEvZ2V0LWltYWdlLWluZm8uanMiOiIyZGFmIiwiLi9tZWRpYS9nZXQtdmlkZW8taW5mby5qcyI6IjgyZjEiLCIuL21lZGlhL3ByZXZpZXctaW1hZ2UuanMiOiI4MDc2IiwiLi9uZXR3b3JrL2Rvd25sb2FkLWZpbGUuanMiOiI0Y2ExMyIsIi4vbmV0d29yay9yZXF1ZXN0LmpzIjoiODljZSIsIi4vbmV0d29yay9zb2NrZXQuanMiOiJjODU2IiwiLi9uZXR3b3JrL3VwbG9hZC1maWxlLmpzIjoiMjExZiIsIi4vcGx1Z2luL2dldC1sYXVuY2gtb3B0aW9ucy1zeW5jLmpzIjoiMDEyNiIsIi4vcGx1Z2luL2dldC1wcm92aWRlci5qcyI6IjMzYjIiLCIuL3JvdXRlL3JvdXRlLmpzIjoiNGQ1YSIsIi4vc3RvcmFnZS9zdG9yYWdlLmpzIjoiNTZhZSIsIi4vdWkvbmF2aWdhdGlvbi1iYXIuanMiOiI0MThjIiwiLi91aS9wb3B1cC5qcyI6IjY1Y2QiLCIuL3VpL3B1bGwtZG93bi1yZWZyZXNoLmpzIjoiNjU2NCIsIi4vdWkvcmVxdWVzdC1jb21wb25lbnQtaW5mby5qcyI6ImUxYjAiLCIuL3VpL3RhYi1iYXIuanMiOiJhOGQ5IiwiLi91aS93aW5kb3cuanMiOiJjMWFhIiwiLi91aS93aW5kb3dzLmpzIjoiZjE5MiIsIi4vdXRpbC5qcyI6ImQ0ZWUifTtmdW5jdGlvbiBpKHQpe3ZhciBlPW8odCk7cmV0dXJuIG4oZSl9ZnVuY3Rpb24gbyh0KXtpZighbi5vKHIsdCkpe3ZhciBlPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK3QrIiciKTt0aHJvdyBlLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGV9cmV0dXJuIHJbdF19aS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHIpfSxpLnJlc29sdmU9byx0LmV4cG9ydHM9aSxpLmlkPSI5ODhlIn0sIjlhNzgiOmZ1bmN0aW9uKHQsZSxuKXt9LCI5YjZkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLW1hcC1jb250cm9sIn0sW24oImltZyIse3N0YXRpY0NsYXNzOiJ1bmktbWFwLWNvbnRyb2wtaWNvbiIsc3R5bGU6dC5wb3NpdGlvblN0eWxlLGF0dHJzOntzcmM6dC5pbWdQYXRofSxvbjp7Y2xpY2s6dC5oYW5kbGVDbGlja319KV0pfSxpPVtdLG89bigiNDczOCIpLGE9e3Byb3BzOntpZDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDoiIn0scG9zaXRpb246e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiEwfSxpY29uUGF0aDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LGNsaWNrYWJsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxjb21wdXRlZDp7aW1nUGF0aDpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qob1siYSJdKSh0aGlzLmljb25QYXRoKX0scG9zaXRpb25TdHlsZTpmdW5jdGlvbigpe3ZhciB0PSJ0b3A6Ii5jb25jYXQodGhpcy5wb3NpdGlvbi50b3B8fDAsInB4O2xlZnQ6IikuY29uY2F0KHRoaXMucG9zaXRpb24ubGVmdHx8MCwicHg7Iik7cmV0dXJuIHRoaXMucG9zaXRpb24ud2lkdGgmJih0Kz0id2lkdGg6Ii5jb25jYXQodGhpcy5wb3NpdGlvbi53aWR0aCwicHg7IikpLHRoaXMucG9zaXRpb24uaGVpZ2h0JiYodCs9ImhlaWdodDoiLmNvbmNhdCh0aGlzLnBvc2l0aW9uLmhlaWdodCwicHg7IikpLHR9fSxtZXRob2RzOntoYW5kbGVDbGljazpmdW5jdGlvbih0KXt0aGlzLmNsaWNrYWJsZSYmdGhpcy4kcGFyZW50LiR0cmlnZ2VyKCJjb250cm9sdGFwIix0LHtjb250cm9sSWQ6dGhpcy5pZH0pLHQuc3RvcFByb3BhZ2F0aW9uKCl9fX0scz1hLGM9KG4oIjExZGYiKSxuKCI4ODQ0IikpLHU9T2JqZWN0KGNbImEiXSkocyxyLGksITEsbnVsbCxudWxsLG51bGwpO2VbImEiXT11LmV4cG9ydHN9LCI5YmJiIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjM1OTYiKSxpPW4ubihyKTtpLmF9LCI5YmQ5IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwiY2FuSVVzZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSk7dmFyIHI9bigiMzQwZCIpO2Z1bmN0aW9uIGkodCl7cmV0dXJuIHdpbmRvdy5DU1MmJkNTUy5zdXBwb3J0cyYmKENTUy5zdXBwb3J0cyh0KXx8Q1NTLnN1cHBvcnRzLmFwcGx5KENTUyx0LnNwbGl0KCI6IikpKX12YXIgbz17ImNzcy52YXIiOmkoIi0tYTowIiksImNzcy5lbnYiOmkoInRvcDplbnYoYSkiKSwiY3NzLmNvbnN0YW50IjppKCJ0b3A6Y29uc3RhbnQoYSkiKX0sYT1uKCIwNTBmIik7ZnVuY3Rpb24gcyh0KXtyZXR1cm4gT2JqZWN0KHJbImkiXSkobyx0KT9vW3RdOiEhT2JqZWN0KHJbImkiXSkoYVsiYSJdLHQpfX0sIjliZmUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJnZXRWaWRlb0luZm8iLChmdW5jdGlvbigpe3JldHVybiBpfSkpO3ZhciByPW4oIjQ3MzgiKSxpPXtzcmM6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe2Uuc3JjPU9iamVjdChyWyJhIl0pKHQpfX19fSwiOWQxNyI6ZnVuY3Rpb24odCxlLG4pe30sIjllMzAiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe3ZhciByPW4oIjM0MGQiKTtlWyJkZWZhdWx0Il09e2RhdGE6ZnVuY3Rpb24oKXtyZXR1cm57c2hvd0FjdGlvblNoZWV0Ont2aXNpYmxlOiExfX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3Qub24oIm9uU2hvd0FjdGlvblNoZWV0IiwoZnVuY3Rpb24odCxuKXtlLnNob3dBY3Rpb25TaGVldD10LGUub25BY3Rpb25TaGVldENsb3NlQ2FsbGJhY2s9bn0pKSx0Lm9uKCJvbkhpZGVQb3B1cCIsKGZ1bmN0aW9uKHQpe2Uuc2hvd0FjdGlvblNoZWV0LnZpc2libGU9ITF9KSl9LG1ldGhvZHM6e19vbkFjdGlvblNoZWV0Q2xvc2U6ZnVuY3Rpb24odCl7dGhpcy5zaG93QWN0aW9uU2hlZXQudmlzaWJsZT0hMSxPYmplY3QoclsiayJdKSh0aGlzLm9uQWN0aW9uU2hlZXRDbG9zZUNhbGxiYWNrKSYmdGhpcy5vbkFjdGlvblNoZWV0Q2xvc2VDYWxsYmFjayh0KX19fX0uY2FsbCh0aGlzLG4oIjJjOWYiKSl9LCI5ZWJhIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKTt2YXIgcj1uKCIzNDBkIik7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gYyh0KXx8cyh0KXx8YSh0KXx8bygpfWZ1bmN0aW9uIG8oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX1mdW5jdGlvbiBhKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PT10eXBlb2YgdClyZXR1cm4gdSh0LGUpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbShuKToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP3UodCxlKTp2b2lkIDB9fWZ1bmN0aW9uIHModCl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KHQpKXJldHVybiBBcnJheS5mcm9tKHQpfWZ1bmN0aW9uIGModCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdSh0KX1mdW5jdGlvbiB1KHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9dmFyIGwsZixkPXtuYW1lOiJQaWNrZXJWaWV3Iixwcm9wczp7dmFsdWU6e3R5cGU6QXJyYXksZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybltdfSx2YWxpZGF0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJnQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4ibnVtYmVyIj09PXR5cGVvZiB0fSkpLmxlbmd0aD09PXQubGVuZ3RofX0saW5kaWNhdG9yU3R5bGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LGluZGljYXRvckNsYXNzOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxtYXNrU3R5bGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LG1hc2tDbGFzczp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57dmFsdWVTeW5jOmkodGhpcy52YWx1ZSksaGVpZ2h0OjM0LGl0ZW1zOltdLGNoYW5nZVNvdXJjZToiIn19LHdhdGNoOnt2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dGhpcy52YWx1ZVN5bmMubGVuZ3RoPXQubGVuZ3RoLHQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0IT09bi52YWx1ZVN5bmNbZV0mJm4uJHNldChuLnZhbHVlU3luYyxlLHQpfSkpfSx2YWx1ZVN5bmM6e2RlZXA6ITAsaGFuZGxlcjpmdW5jdGlvbih0LGUpe2lmKCIiPT09dGhpcy5jaGFuZ2VTb3VyY2UpdGhpcy5fdmFsdWVDaGFuZ2VkKHQpO2Vsc2V7dGhpcy5jaGFuZ2VTb3VyY2U9IiI7dmFyIG49dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpO3RoaXMuJGVtaXQoInVwZGF0ZTp2YWx1ZSIsbiksdGhpcy4kdHJpZ2dlcigiY2hhbmdlIix7fSx7dmFsdWU6bn0pfX19fSxtZXRob2RzOntnZXRJdGVtSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaXRlbXMuaW5kZXhPZih0KX0sZ2V0SXRlbVZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnZhbHVlU3luY1t0aGlzLmdldEl0ZW1JbmRleCh0LiR2bm9kZSldfHwwfSxzZXRJdGVtVmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmdldEl0ZW1JbmRleCh0LiR2bm9kZSkscj10aGlzLnZhbHVlU3luY1tuXTtyIT09ZSYmKHRoaXMuY2hhbmdlU291cmNlPSJ0b3VjaCIsdGhpcy4kc2V0KHRoaXMudmFsdWVTeW5jLG4sZSkpfSxfdmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuaXRlbXMuZm9yRWFjaCgoZnVuY3Rpb24oZSxuKXtlLmNvbXBvbmVudEluc3RhbmNlLnNldEN1cnJlbnQodFtuXXx8MCl9KSl9LF9yZXNpemU6ZnVuY3Rpb24odCl7dmFyIGU9dC5oZWlnaHQ7dGhpcy5oZWlnaHQ9ZX19LHJlbmRlcjpmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gdGhpcy4kc2xvdHMuZGVmYXVsdCYmT2JqZWN0KHJbImYiXSkodGhpcy4kc2xvdHMuZGVmYXVsdCx0KS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmNvbXBvbmVudE9wdGlvbnMmJiJ2LXVuaS1waWNrZXItdmlldy1jb2x1bW4iPT09dC5jb21wb25lbnRPcHRpb25zLnRhZyYmZS5wdXNoKHQpfSkpLHRoaXMuaXRlbXM9ZSx0KCJ1bmktcGlja2VyLXZpZXciLHtvbjp0aGlzLiRsaXN0ZW5lcnN9LFt0KCJ2LXVuaS1yZXNpemUtc2Vuc29yIix7YXR0cnM6e2luaXRpYWw6ITB9LG9uOntyZXNpemU6dGhpcy5fcmVzaXplfX0pLHQoImRpdiIse3JlZjoid3JhcHBlciIsY2xhc3M6InVuaS1waWNrZXItdmlldy13cmFwcGVyIn0sZSldKX19LGg9ZCxwPShuKCIxNzIwIiksbigiODg0NCIpKSx2PU9iamVjdChwWyJhIl0pKGgsbCxmLCExLG51bGwsbnVsbCxudWxsKTtlWyJkZWZhdWx0Il09di5leHBvcnRzfSwiOWY1NiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsImludm9rZVB1c2hDYWxsYmFjayIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSksbi5kKGUsImdldFB1c2hDbGllbnRJZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSksbi5kKGUsIm9uUHVzaE1lc3NhZ2UiLChmdW5jdGlvbigpe3JldHVybiBwfSkpLG4uZChlLCJvZmZQdXNoTWVzc2FnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSk7dmFyIHIsaSxvLGE9bigiMzQwZCIpLHM9bigiMDA3MSIpO2Z1bmN0aW9uIGModCl7dHJ5e3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKGUpe31yZXR1cm4gdH1mdW5jdGlvbiB1KHQpe2lmKCJlbmFibGVkIj09PXQudHlwZSlvPSEwO2Vsc2UgaWYoImNsaWVudElkIj09PXQudHlwZSlyPXQuY2lkLGk9dC5lcnJNc2csZihyLHQuZXJyTXNnKTtlbHNlIGlmKCJwdXNoTXNnIj09PXQudHlwZSlmb3IodmFyIGU9e3R5cGU6InJlY2VpdmUiLGRhdGE6Yyh0Lm1lc3NhZ2UpfSxuPTA7bjxoLmxlbmd0aDtuKyspe3ZhciBhPWhbbl07aWYoYShlKSxlLnN0b3BwZWQpYnJlYWt9ZWxzZSJjbGljayI9PT10LnR5cGUmJmguZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZSh7dHlwZToiY2xpY2siLGRhdGE6Yyh0Lm1lc3NhZ2UpfSl9KSl9dmFyIGw9W107ZnVuY3Rpb24gZih0LGUpe2wuZm9yRWFjaCgoZnVuY3Rpb24obil7bih0LGUpfSkpLGwubGVuZ3RoPTB9ZnVuY3Rpb24gZCh0KXtPYmplY3QoYVsibCJdKSh0KXx8KHQ9e30pO3ZhciBlPU9iamVjdChzWyJhIl0pKHQpLG49ZS5zdWNjZXNzLGM9ZS5mYWlsLHU9ZS5jb21wbGV0ZSxkPU9iamVjdChhWyJrIl0pKG4pLGg9T2JqZWN0KGFbImsiXSkoYykscD1PYmplY3QoYVsiayJdKSh1KTtQcm9taXNlLnJlc29sdmUoKS50aGVuKChmdW5jdGlvbigpeyJ1bmRlZmluZWQiPT09dHlwZW9mIG8mJihvPSExLHI9IiIsaT0idW5pUHVzaCBpcyBub3QgZW5hYmxlZCIpLGwucHVzaCgoZnVuY3Rpb24odCxlKXt2YXIgcjt0PyhyPXtlcnJNc2c6ImdldFB1c2hDbGllbnRJZDpvayIsY2lkOnR9LGQmJm4ocikpOihyPXtlcnJNc2c6ImdldFB1c2hDbGllbnRJZDpmYWlsIisoZT8iICIrZToiIil9LGgmJmMocikpLHAmJnUocil9KSksInVuZGVmaW5lZCIhPT10eXBlb2YgciYmZihyLGkpfSkpfXZhciBoPVtdLHA9ZnVuY3Rpb24odCl7LTE9PT1oLmluZGV4T2YodCkmJmgucHVzaCh0KX0sdj1mdW5jdGlvbih0KXtpZih0KXt2YXIgZT1oLmluZGV4T2YodCk7ZT4tMSYmaC5zcGxpY2UoZSwxKX1lbHNlIGgubGVuZ3RoPTB9fSwiOWY2MiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7dmFyIHI9bigiOTA5ZSIpO2VbImEiXT17bmFtZToiTGFiZWwiLG1peGluczpbclsiYSJdXSxwcm9wczp7Zm9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifX0sY29tcHV0ZWQ6e3BvaW50ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mb3J8fHRoaXMuJHNsb3RzLmRlZmF1bHQmJnRoaXMuJHNsb3RzLmRlZmF1bHQubGVuZ3RofX0sbWV0aG9kczp7X29uQ2xpY2s6ZnVuY3Rpb24oZSl7dmFyIG49L151bmktKGNoZWNrYm94fHJhZGlvfHN3aXRjaCktLy50ZXN0KGUudGFyZ2V0LmNsYXNzTmFtZSk7bnx8KG49L151bmktKGNoZWNrYm94fHJhZGlvfHN3aXRjaHxidXR0b24pJC9pLnRlc3QoZS50YXJnZXQudGFnTmFtZSkpLG58fCh0aGlzLmZvcj90LmVtaXQoInVuaS1sYWJlbC1jbGljay0iK3RoaXMuJHBhZ2UuaWQrIi0iK3RoaXMuZm9yLGUsITApOnRoaXMuJGJyb2FkY2FzdChbIkNoZWNrYm94IiwiUmFkaW8iLCJTd2l0Y2giLCJCdXR0b24iXSwidW5pLWxhYmVsLWNsaWNrIixlLCEwKSl9fX19KS5jYWxsKHRoaXMsbigiMzFkMiIpKX0sIjlmNjkiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe24uZChlLCJzdGFydExvY2F0aW9uVXBkYXRlIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKSxuLmQoZSwic3RvcExvY2F0aW9uVXBkYXRlIiwoZnVuY3Rpb24oKXtyZXR1cm4gZn0pKSxuLmQoZSwib25Mb2NhdGlvbkNoYW5nZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSksbi5kKGUsIm9mZkxvY2F0aW9uQ2hhbmdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gaH0pKSxuLmQoZSwib25Mb2NhdGlvbkNoYW5nZUVycm9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gcH0pKSxuLmQoZSwib2ZmTG9jYXRpb25DaGFuZ2VFcnJvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSk7dmFyIHI9bigiYjQzNSIpLGk9dCxvPWkuaW52b2tlQ2FsbGJhY2tIYW5kbGVyLGE9W10scz1bXSxjPSExLHU9MDtmdW5jdGlvbiBsKHQsZSl7dmFyIG49dC50eXBlLGk9dm9pZCAwPT09bj8iZ2NqMDIiOm47aWYoIW5hdmlnYXRvci5nZW9sb2NhdGlvbilyZXR1cm57ZXJyTXNnOiJzdGFydExvY2F0aW9uVXBkYXRlOmZhaWwifTt1PXV8fG5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKChmdW5jdGlvbih0KXtjPSEwLE9iamVjdChyWyJmIl0pKGksdC5jb29yZHMpLnRoZW4oKGZ1bmN0aW9uKHQpe2EuZm9yRWFjaCgoZnVuY3Rpb24oZSl7byhlLHQpfSkpfSkpLmNhdGNoKChmdW5jdGlvbih0KXtzLmZvckVhY2goKGZ1bmN0aW9uKGUpe28oZSx7ZXJyTXNnOiJvbkxvY2F0aW9uQ2hhbmdlOmZhaWwgIi5jb25jYXQodC5tZXNzYWdlKX0pfSkpfSkpfSksKGZ1bmN0aW9uKHQpe2N8fChvKGUse2Vyck1zZzoic3RhcnRMb2NhdGlvblVwZGF0ZTpmYWlsICIuY29uY2F0KHQubWVzc2FnZSl9KSxjPSEwKSxzLmZvckVhY2goKGZ1bmN0aW9uKGUpe28oZSx7ZXJyTXNnOiJvbkxvY2F0aW9uQ2hhbmdlOmZhaWwgIi5jb25jYXQodC5tZXNzYWdlKX0pfSkpfSkpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7byhlLHtlcnJNc2c6InN0YXJ0TG9jYXRpb25VcGRhdGU6b2sifSl9KSwxMDApfWZ1bmN0aW9uIGYoKXtyZXR1cm4gMCE9PXUmJihuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCh1KSxjPSExLHU9MCkse319ZnVuY3Rpb24gZCh0KXthLnB1c2godCl9ZnVuY3Rpb24gaCh0KXtpZih0KXt2YXIgZT1hLmluZGV4T2YodCk7ZT49MCYmYS5zcGxpY2UoZSwxKX1lbHNlIGE9W119ZnVuY3Rpb24gcCh0KXtzLnB1c2godCl9ZnVuY3Rpb24gdih0KXtpZih0KXt2YXIgZT1zLmluZGV4T2YodCk7ZT49MCYmcy5zcGxpY2UoZSwxKX1lbHNlIHM9W119fS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sYTAwNDpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1bInVuaS1hcHAiLCJ1bmktbGF5b3V0IiwidW5pLWNvbnRlbnQiLCJ1bmktbWFpbiIsInVuaS10b3Atd2luZG93IiwidW5pLWxlZnQtd2luZG93IiwidW5pLXJpZ2h0LXdpbmRvdyIsInVuaS10YWJiYXIiLCJ1bmktcGFnZSIsInVuaS1wYWdlLWhlYWQiLCJ1bmktcGFnZS13cmFwcGVyIiwidW5pLXBhZ2UtYm9keSIsInVuaS1wYWdlLXJlZnJlc2giLCJ1bmktYWN0aW9uc2hlZXQiLCJ1bmktbW9kYWwiLCJ1bmktdG9hc3QiLCJ1bmktcmVzaXplLXNlbnNvciIsInVuaS1zaGFkb3ctcm9vdCIsInVuaS1hZCIsInVuaS1hdWRpbyIsInVuaS1idXR0b24iLCJ1bmktY2FtZXJhIiwidW5pLWNhbnZhcyIsInVuaS1jaGVja2JveCIsInVuaS1jaGVja2JveC1ncm91cCIsInVuaS1jb3Zlci1pbWFnZSIsInVuaS1jb3Zlci12aWV3IiwidW5pLWVkaXRvciIsInVuaS1mb3JtIiwidW5pLWZ1bmN0aW9uYWwtcGFnZS1uYXZpZ2F0b3IiLCJ1bmktaWNvbiIsInVuaS1pbWFnZSIsInVuaS1pbnB1dCIsInVuaS1sYWJlbCIsInVuaS1saXZlLXBsYXllciIsInVuaS1saXZlLXB1c2hlciIsInVuaS1tYXAiLCJ1bmktbW92YWJsZS1hcmVhIiwidW5pLW1vdmFibGUtdmlldyIsInVuaS1uYXZpZ2F0b3IiLCJ1bmktb2ZmaWNpYWwtYWNjb3VudCIsInVuaS1vcGVuLWRhdGEiLCJ1bmktcGlja2VyIiwidW5pLXBpY2tlci12aWV3IiwidW5pLXBpY2tlci12aWV3LWNvbHVtbiIsInVuaS1wcm9ncmVzcyIsInVuaS1yYWRpbyIsInVuaS1yYWRpby1ncm91cCIsInVuaS1yaWNoLXRleHQiLCJ1bmktc2Nyb2xsLXZpZXciLCJ1bmktc2xpZGVyIiwidW5pLXN3aXBlciIsInVuaS1zd2lwZXItaXRlbSIsInVuaS1zd2l0Y2giLCJ1bmktdGV4dCIsInVuaS10ZXh0YXJlYSIsInVuaS12aWRlbyIsInVuaS12aWV3IiwidW5pLXdlYi12aWV3Il19LGEwNTA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInVuaS1zbGlkZXIiLHQuX2coe3JlZjoidW5pLXNsaWRlciIsYXR0cnM6e2lkOnQuaWR9LG9uOntjbGljazp0Ll9vbkNsaWNrfX0sdC4kbGlzdGVuZXJzKSxbbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1zbGlkZXItd3JhcHBlciJ9LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXNsaWRlci10YXAtYXJlYSJ9LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXNsaWRlci1oYW5kbGUtd3JhcHBlciIsc3R5bGU6dC5zZXRCZ0NvbG9yfSxbbigiZGl2Iix7cmVmOiJ1bmktc2xpZGVyLWhhbmRsZSIsc3RhdGljQ2xhc3M6InVuaS1zbGlkZXItaGFuZGxlIixzdHlsZTp0LnNldEJsb2NrQmd9KSxuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXNsaWRlci10aHVtYiIsc3R5bGU6dC5zZXRCbG9ja1N0eWxlfSksbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1zbGlkZXItdHJhY2siLHN0eWxlOnQuc2V0QWN0aXZlQ29sb3J9KV0pXSksbigic3BhbiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOnQuc2hvd1ZhbHVlLGV4cHJlc3Npb246InNob3dWYWx1ZSJ9XSxyZWY6InVuaS1zbGlkZXItdmFsdWUiLHN0YXRpY0NsYXNzOiJ1bmktc2xpZGVyLXZhbHVlIn0sW3QuX3YodC5fcyh0LnNsaWRlclZhbHVlKSldKV0pLHQuX3QoImRlZmF1bHQiKV0sMil9LGk9W10sbz1uKCI5MDllIiksYT1uKCIzOWJkIikscz17YWRkOmZ1bmN0aW9uKHQpe3ZhciBlLG4scjt0cnl7ZT10aGlzLnRvU3RyaW5nKCkuc3BsaXQoIi4iKVsxXS5sZW5ndGh9Y2F0Y2goaSl7ZT0wfXRyeXtuPXQudG9TdHJpbmcoKS5zcGxpdCgiLiIpWzFdLmxlbmd0aH1jYXRjaChpKXtuPTB9cmV0dXJuIHI9TWF0aC5wb3coMTAsTWF0aC5tYXgoZSxuKSksKHRoaXMqcit0KnIpL3J9LHN1YjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hZGQoLXQpfSxtdWw6ZnVuY3Rpb24odCl7dmFyIGU9MCxuPXRoaXMudG9TdHJpbmcoKSxyPXQudG9TdHJpbmcoKTt0cnl7ZSs9bi5zcGxpdCgiLiIpWzFdLmxlbmd0aH1jYXRjaChpKXt9dHJ5e2UrPXIuc3BsaXQoIi4iKVsxXS5sZW5ndGh9Y2F0Y2goaSl7fXJldHVybiBOdW1iZXIobi5yZXBsYWNlKCIuIiwiIikpKk51bWJlcihyLnJlcGxhY2UoIi4iLCIiKSkvTWF0aC5wb3coMTAsZSl9LGRpdjpmdW5jdGlvbih0KXt2YXIgZSxuLHI9MCxpPTA7dHJ5e3I9dGhpcy50b1N0cmluZygpLnNwbGl0KCIuIilbMV0ubGVuZ3RofWNhdGNoKG8pe310cnl7aT10LnRvU3RyaW5nKCkuc3BsaXQoIi4iKVsxXS5sZW5ndGh9Y2F0Y2gobyl7fXJldHVybiBlPU51bWJlcih0aGlzLnRvU3RyaW5nKCkucmVwbGFjZSgiLiIsIiIpKSxuPU51bWJlcih0LnRvU3RyaW5nKCkucmVwbGFjZSgiLiIsIiIpKSxlL24qTWF0aC5wb3coMTAsaS1yKX0sbW9kOmZ1bmN0aW9uKHQpe3ZhciBlLG4scj0wLGk9MDt0cnl7cj10aGlzLnRvU3RyaW5nKCkuc3BsaXQoIi4iKVsxXS5sZW5ndGh9Y2F0Y2gocyl7fXRyeXtpPXQudG9TdHJpbmcoKS5zcGxpdCgiLiIpWzFdLmxlbmd0aH1jYXRjaChzKXt9dmFyIG89TWF0aC5wb3coMTAsTWF0aC5hYnMoci1pKSk7MT09byYmKG89TWF0aC5wb3coMTAscikpLGU9KHRoaXMqbykudG9TdHJpbmcoKS5zcGxpdCgiLiIpWzBdLG49dCpvO3ZhciBhPSh0aGlzKm8pLnRvU3RyaW5nKCkuc3BsaXQoIi4iKVsxXT8odGhpcypvKS50b1N0cmluZygpLnNwbGl0KCIuIilbMV06IiI7cmV0dXJuKGUlbithKS9vfX0sYz17bmFtZToiU2xpZGVyIixtaXhpbnM6W29bImEiXSxvWyJmIl0sYVsiYSJdXSxwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0saWQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LG1pbjp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDowfSxtYXg6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MTAwfSx2YWx1ZTp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDowfSxzdGVwOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjF9LGRpc2FibGVkOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sY29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiNlOWU5ZTkifSxiYWNrZ3JvdW5kQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiNlOWU5ZTkifSxhY3RpdmVDb2xvcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIzAwN2FmZiJ9LHNlbGVjdGVkQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiMwMDdhZmYifSxibG9ja0NvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIjZmZmZmZmIn0sYmxvY2tTaXplOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjI4fSxzaG93VmFsdWU6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntzbGlkZXJWYWx1ZTpOdW1iZXIodGhpcy52YWx1ZSl9fSxjb21wdXRlZDp7c2V0QmxvY2tTdHlsZTpmdW5jdGlvbigpe3JldHVybnt3aWR0aDp0aGlzLmJsb2NrU2l6ZSsicHgiLGhlaWdodDp0aGlzLmJsb2NrU2l6ZSsicHgiLG1hcmdpbkxlZnQ6LXRoaXMuYmxvY2tTaXplLzIrInB4IixtYXJnaW5Ub3A6LXRoaXMuYmxvY2tTaXplLzIrInB4IixsZWZ0OnRoaXMuX2dldFZhbHVlV2lkdGgoKSxiYWNrZ3JvdW5kQ29sb3I6dGhpcy5ibG9ja0NvbG9yfX0sc2V0QmdDb2xvcjpmdW5jdGlvbigpe3JldHVybntiYWNrZ3JvdW5kQ29sb3I6dGhpcy5fZ2V0QmdDb2xvcigpfX0sc2V0QmxvY2tCZzpmdW5jdGlvbigpe3JldHVybntsZWZ0OnRoaXMuX2dldFZhbHVlV2lkdGgoKX19LHNldEFjdGl2ZUNvbG9yOmZ1bmN0aW9uKCl7cmV0dXJue2JhY2tncm91bmRDb2xvcjp0aGlzLl9nZXRBY3RpdmVDb2xvcigpLHdpZHRoOnRoaXMuX2dldFZhbHVlV2lkdGgoKX19fSx3YXRjaDp7dmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5zbGlkZXJWYWx1ZT1OdW1iZXIodCl9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dGhpcy50b3VjaHRyYWNrKHRoaXMuJHJlZnNbInVuaS1zbGlkZXItaGFuZGxlIl0sIl9vblRyYWNrIil9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLiRkaXNwYXRjaCgiRm9ybSIsInVuaS1mb3JtLWdyb3VwLXVwZGF0ZSIse3R5cGU6ImFkZCIsdm06dGhpc30pfSxiZWZvcmVEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy4kZGlzcGF0Y2goIkZvcm0iLCJ1bmktZm9ybS1ncm91cC11cGRhdGUiLHt0eXBlOiJyZW1vdmUiLHZtOnRoaXN9KX0sbWV0aG9kczp7X29uVXNlckNoYW5nZWRWYWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLiRyZWZzWyJ1bmktc2xpZGVyLXZhbHVlIl0sbj1nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCkubWFyZ2luTGVmdCxyPWUub2Zmc2V0V2lkdGg7cis9cGFyc2VJbnQobik7dmFyIGk9dGhpcy4kcmVmc1sidW5pLXNsaWRlciJdLG89aS5vZmZzZXRXaWR0aC0odGhpcy5zaG93VmFsdWU/cjowKSxhPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCxzPSh0LngtYSkqKHRoaXMubWF4LXRoaXMubWluKS9vK051bWJlcih0aGlzLm1pbik7dGhpcy5zbGlkZXJWYWx1ZT10aGlzLl9maWx0ZXJWYWx1ZShzKX0sX2ZpbHRlclZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPU51bWJlcih0aGlzLm1heCksbj1OdW1iZXIodGhpcy5taW4pO3JldHVybiB0PG4/bjp0PmU/ZTpzLm11bC5jYWxsKE1hdGgucm91bmQoKHQtbikvdGhpcy5zdGVwKSx0aGlzLnN0ZXApK259LF9nZXRWYWx1ZVdpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuIDEwMCoodGhpcy5zbGlkZXJWYWx1ZS10aGlzLm1pbikvKHRoaXMubWF4LXRoaXMubWluKSsiJSJ9LF9nZXRCZ0NvbG9yOmZ1bmN0aW9uKCl7cmV0dXJuIiNlOWU5ZTkiIT09dGhpcy5iYWNrZ3JvdW5kQ29sb3I/dGhpcy5iYWNrZ3JvdW5kQ29sb3I6IiMwMDdhZmYiIT09dGhpcy5jb2xvcj90aGlzLmNvbG9yOiIjMDA3YWZmIn0sX2dldEFjdGl2ZUNvbG9yOmZ1bmN0aW9uKCl7cmV0dXJuIiMwMDdhZmYiIT09dGhpcy5hY3RpdmVDb2xvcj90aGlzLmFjdGl2ZUNvbG9yOiIjZTllOWU5IiE9PXRoaXMuc2VsZWN0ZWRDb2xvcj90aGlzLnNlbGVjdGVkQ29sb3I6IiNlOWU5ZTkifSxfb25UcmFjazpmdW5jdGlvbih0KXtpZighdGhpcy5kaXNhYmxlZClyZXR1cm4ibW92ZSI9PT10LmRldGFpbC5zdGF0ZT8odGhpcy5fb25Vc2VyQ2hhbmdlZFZhbHVlKHt4OnQuZGV0YWlsLnh9KSx0aGlzLiR0cmlnZ2VyKCJjaGFuZ2luZyIsdCx7dmFsdWU6dGhpcy5zbGlkZXJWYWx1ZX0pLCExKToiZW5kIj09PXQuZGV0YWlsLnN0YXRlJiZ0aGlzLiR0cmlnZ2VyKCJjaGFuZ2UiLHQse3ZhbHVlOnRoaXMuc2xpZGVyVmFsdWV9KX0sX29uQ2xpY2s6ZnVuY3Rpb24odCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMuX29uVXNlckNoYW5nZWRWYWx1ZSh0KSx0aGlzLiR0cmlnZ2VyKCJjaGFuZ2UiLHQse3ZhbHVlOnRoaXMuc2xpZGVyVmFsdWV9KSl9LF9yZXNldEZvcm1EYXRhOmZ1bmN0aW9uKCl7dGhpcy5zbGlkZXJWYWx1ZT10aGlzLm1pbn0sX2dldEZvcm1EYXRhOmZ1bmN0aW9uKCl7dmFyIHQ9e307cmV0dXJuIiIhPT10aGlzLm5hbWUmJih0LnZhbHVlPXRoaXMuc2xpZGVyVmFsdWUsdC5rZXk9dGhpcy5uYW1lKSx0fX19LHU9YyxsPShuKCJmMmE5IiksbigiODg0NCIpKSxmPU9iamVjdChsWyJhIl0pKHUscixpLCExLG51bGwsbnVsbCxudWxsKTtlWyJkZWZhdWx0Il09Zi5leHBvcnRzfSxhMTExOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJjaG9vc2VWaWRlbyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSk7dmFyIHI9WyJhbGJ1bSIsImNhbWVyYSJdLGk9e3NvdXJjZVR5cGU6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITEsZGVmYXVsdDpyLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe3Q9dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiByLmluY2x1ZGVzKHQpfSkpLGUuc291cmNlVHlwZT10Lmxlbmd0aD90OnJ9fSxjb21wcmVzc2VkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sbWF4RHVyYXRpb246e3R5cGU6TnVtYmVyLGRlZmF1bHQ6NjB9LGNhbWVyYTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiYmFjayJ9LGV4dGVuc2lvbjp7dHlwZTpBcnJheSxkZWZhdWx0OlsiKiJdLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4icGFyYW0gZXh0ZW5zaW9uIHNob3VsZCBub3QgYmUgZW1wdHkuIn19fX0sYTE4NzpmdW5jdGlvbih0LGUsbil7fSxhMThkOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMDdiNSIpLGk9bi5uKHIpO2kuYX0sYTFkNzpmdW5jdGlvbih0LGUsbil7dmFyIHI9eyIuL2F1ZGlvL2luZGV4LnZ1ZSI6ImQ1NWYiLCIuL2J1dHRvbi9pbmRleC52dWUiOiJkNmZiIiwiLi9jYW52YXMvaW5kZXgudnVlIjoiNjNiMSIsIi4vY2hlY2tib3gtZ3JvdXAvaW5kZXgudnVlIjoiZDUxNCIsIi4vY2hlY2tib3gvaW5kZXgudnVlIjoiY2EzNyIsIi4vZWRpdG9yL2luZGV4LnZ1ZSI6ImIxZDIiLCIuL2Zvcm0vaW5kZXgudnVlIjoiYmFhMSIsIi4vaWNvbi9pbmRleC52dWUiOiIwYWJiIiwiLi9pbWFnZS9pbmRleC52dWUiOiI3ZWZhIiwiLi9pbnB1dC9pbmRleC52dWUiOiJlMGUxIiwiLi9sYWJlbC9pbmRleC52dWUiOiIyYTc4IiwiLi9tb3ZhYmxlLWFyZWEvaW5kZXgudnVlIjoiZGJlOCIsIi4vbW92YWJsZS12aWV3L2luZGV4LnZ1ZSI6IjY1Y2UiLCIuL25hdmlnYXRvci9pbmRleC52dWUiOiI1YzFmIiwiLi9waWNrZXItdmlldy1jb2x1bW4vaW5kZXgudnVlIjoiZTUxMCIsIi4vcGlja2VyLXZpZXcvaW5kZXgudnVlIjoiOWViYSIsIi4vcHJvZ3Jlc3MvaW5kZXgudnVlIjoiODAxYiIsIi4vcmFkaW8tZ3JvdXAvaW5kZXgudnVlIjoiM2EzZSIsIi4vcmFkaW8vaW5kZXgudnVlIjoiMWY4YSIsIi4vcmVzaXplLXNlbnNvci9pbmRleC52dWUiOiIxMjBmIiwiLi9yaWNoLXRleHQvaW5kZXgudnVlIjoiN2FhOSIsIi4vc2Nyb2xsLXZpZXcvaW5kZXgudnVlIjoiOGY4MCIsIi4vc2xpZGVyL2luZGV4LnZ1ZSI6ImEwNTAiLCIuL3N3aXBlci1pdGVtL2luZGV4LnZ1ZSI6IjIwNjYiLCIuL3N3aXBlci9pbmRleC52dWUiOiIzODNlIiwiLi9zd2l0Y2gvaW5kZXgudnVlIjoiYzFmMSIsIi4vdGV4dC9pbmRleC52dWUiOiJlOWQxIiwiLi90ZXh0YXJlYS9pbmRleC52dWUiOiJkYTlkIn07ZnVuY3Rpb24gaSh0KXt2YXIgZT1vKHQpO3JldHVybiBuKGUpfWZ1bmN0aW9uIG8odCl7aWYoIW4ubyhyLHQpKXt2YXIgZT1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIit0KyInIik7dGhyb3cgZS5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixlfXJldHVybiByW3RdfWkua2V5cz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhyKX0saS5yZXNvbHZlPW8sdC5leHBvcnRzPWksaS5pZD0iYTFkNyJ9LGEyMDI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZVsiZGVmYXVsdCJdPXtkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3BvcHVwV2lkdGg6MCxwb3B1cEhlaWdodDowfX0sY29tcHV0ZWQ6e2lzRGVza3RvcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvcHVwV2lkdGg+PTUwMCYmdGhpcy5wb3B1cEhlaWdodD49NTAwfSxwb3B1cFN0eWxlOmZ1bmN0aW9uKCl7dmFyIHQ9e30sZT10LmNvbnRlbnQ9e30sbj10LnRyaWFuZ2xlPXt9LHI9dGhpcy5wb3BvdmVyO2Z1bmN0aW9uIGkodCl7cmV0dXJuIE51bWJlcih0KXx8MH1pZih0aGlzLmlzRGVza3RvcCYmcil7T2JqZWN0LmFzc2lnbihuLHtwb3NpdGlvbjoiYWJzb2x1dGUiLHdpZHRoOiIwIixoZWlnaHQ6IjAiLCJtYXJnaW4tbGVmdCI6Ii02cHgiLCJib3JkZXItc3R5bGUiOiJzb2xpZCJ9KTt2YXIgbz1pKHIubGVmdCksYT1pKHIud2lkdGg/ci53aWR0aDozMDApLHM9aShyLnRvcCksYz1pKHIuaGVpZ2h0KSx1PW8rYS8yO2UudHJhbnNmb3JtPSJub25lICFpbXBvcnRhbnQiO3ZhciBsPU1hdGgubWF4KDAsdS1hLzIpO2UubGVmdD0iIi5jb25jYXQobCwicHgiKSxyLndpZHRoJiYoZS53aWR0aD0iIi5jb25jYXQoYSwicHgiKSk7dmFyIGY9TWF0aC5tYXgoMTIsdS1sKTtmPU1hdGgubWluKGEtMTIsZiksbi5sZWZ0PSIiLmNvbmNhdChmLCJweCIpO3ZhciBkPXRoaXMucG9wdXBIZWlnaHQvMjtzK2MtZD5kLXM/KGUudG9wPSJhdXRvIixlLmJvdHRvbT0iIi5jb25jYXQodGhpcy5wb3B1cEhlaWdodC1zKzYsInB4Iiksbi5ib3R0b209Ii02cHgiLG5bImJvcmRlci13aWR0aCJdPSI2cHggNnB4IDAgNnB4IixuWyJib3JkZXItY29sb3IiXT0iI2ZjZmNmZCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCIpOihlLnRvcD0iIi5jb25jYXQocytjKzYsInB4Iiksbi50b3A9Ii02cHgiLG5bImJvcmRlci13aWR0aCJdPSIwIDZweCA2cHggNnB4IixuWyJib3JkZXItY29sb3IiXT0idHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2ZjZmNmZCB0cmFuc3BhcmVudCIpfXJldHVybiB0fX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1mdW5jdGlvbigpe3ZhciBlPXVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLG49ZS53aW5kb3dXaWR0aCxyPWUud2luZG93SGVpZ2h0LGk9ZS53aW5kb3dUb3A7dC5wb3B1cFdpZHRoPW4sdC5wb3B1cEhlaWdodD1yK2l9O3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGUpLGUoKSx0aGlzLiRvbmNlKCJob29rOmJlZm9yZURlc3Ryb3kiLChmdW5jdGlvbigpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLGUpfSkpfX19LGEyMmY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyMWY1IiksaT1uLm4ocik7aS5hfSxhMmY2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX1mdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4gZSYmaSh0LnByb3RvdHlwZSxlKSxuJiZpKHQsbiksdH1uLnIoZSksbi5kKGUsImNyZWF0ZUFuaW1hdGlvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSk7dmFyIGE9e2R1cmF0aW9uOjQwMCx0aW1pbmdGdW5jdGlvbjoibGluZWFyIixkZWxheTowLHRyYW5zZm9ybU9yaWdpbjoiNTAlIDUwJSAwIn0scz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7cih0aGlzLHQpLHRoaXMuYWN0aW9ucz1bXSx0aGlzLmN1cnJlbnRUcmFuc2Zvcm09e30sdGhpcy5jdXJyZW50U3RlcEFuaW1hdGVzPVtdLHRoaXMub3B0aW9uPU9iamVjdC5hc3NpZ24oe30sYSxlKX1yZXR1cm4gbyh0LFt7a2V5OiJfZ2V0T3B0aW9uIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT17dHJhbnNpdGlvbjpPYmplY3QuYXNzaWduKHt9LHRoaXMub3B0aW9uLHQpfTtyZXR1cm4gZS50cmFuc2Zvcm1PcmlnaW49ZS50cmFuc2l0aW9uLnRyYW5zZm9ybU9yaWdpbixkZWxldGUgZS50cmFuc2l0aW9uLnRyYW5zZm9ybU9yaWdpbixlfX0se2tleToiX3B1c2hBbmltYXRlcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMucHVzaCh7dHlwZTp0LGFyZ3M6ZX0pfX0se2tleToiX2NvbnZlclR5cGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1tBLVpdL2csKGZ1bmN0aW9uKHQpe3JldHVybiItIi5jb25jYXQodC50b0xvd2VyQ2FzZSgpKX0pKX19LHtrZXk6Il9nZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgdD8iIi5jb25jYXQodCwicHgiKTp0fX0se2tleToiZXhwb3J0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuYWN0aW9ucztyZXR1cm4gdGhpcy5hY3Rpb25zPVtdLHthY3Rpb25zOnR9fX0se2tleToic3RlcCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5jdXJyZW50U3RlcEFuaW1hdGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpeyJzdHlsZSIhPT10LnR5cGU/ZS5jdXJyZW50VHJhbnNmb3JtW3QudHlwZV09dDplLmN1cnJlbnRUcmFuc2Zvcm1bIiIuY29uY2F0KHQudHlwZSwiLiIpLmNvbmNhdCh0LmFyZ3NbMF0pXT10fSkpLHRoaXMuYWN0aW9ucy5wdXNoKHthbmltYXRlczpPYmplY3QudmFsdWVzKHRoaXMuY3VycmVudFRyYW5zZm9ybSksb3B0aW9uOnRoaXMuX2dldE9wdGlvbih0KX0pLHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcz1bXSx0aGlzfX1dKSx0fSgpLGM9WyJtYXRyaXgiLCJtYXRyaXgzZCIsInJvdGF0ZSIsInJvdGF0ZTNkIiwicm90YXRlWCIsInJvdGF0ZVkiLCJyb3RhdGVaIiwic2NhbGUiLCJzY2FsZTNkIiwic2NhbGVYIiwic2NhbGVZIiwic2NhbGVaIiwic2tldyIsInNrZXdYIiwic2tld1kiLCJ0cmFuc2xhdGUiLCJ0cmFuc2xhdGUzZCIsInRyYW5zbGF0ZVgiLCJ0cmFuc2xhdGVZIiwidHJhbnNsYXRlWiJdLHU9WyJvcGFjaXR5IiwiYmFja2dyb3VuZENvbG9yIl0sbD1bIndpZHRoIiwiaGVpZ2h0IiwibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIl07ZnVuY3Rpb24gZih0KXtyZXR1cm4gbmV3IHModCl9Yy5jb25jYXQodSxsKS5mb3JFYWNoKChmdW5jdGlvbih0KXtzLnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKW5bcl09YXJndW1lbnRzW3JdO3JldHVybiB1LmNvbmNhdChsKS5pbmNsdWRlcyh0KT90aGlzLl9wdXNoQW5pbWF0ZXMoInN0eWxlIixbdGhpcy5fY29udmVyVHlwZSh0KSxsLmluY2x1ZGVzKHQpP3RoaXMuX2dldFZhbHVlKG5bMF0pOm5bMF1dKTp0aGlzLl9wdXNoQW5pbWF0ZXModCxuKSx0aGlzfX0pKX0sYTQwOTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxlWyJkZWZhdWx0Il09e21ldGhvZHM6e2JlZm9yZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt9LGFmdGVyVHJhbnNpdGlvbjpmdW5jdGlvbigpe319fX0sYTUxMzpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1ufSxhNjFkOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZTA1MyIpLGk9bi5uKHIpO2kuYX0sYTZmMjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXtuLmQoZSwiY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLChmdW5jdGlvbigpe3JldHVybiBkfSkpO3ZhciByPW4oIjc1NTMiKSxpPW4oIjA3OTUiKSxvPW4oIjc0NWEiKTtmdW5jdGlvbiBhKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcyh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fWZ1bmN0aW9uIGModCxlLG4pe3JldHVybiBlJiZzKHQucHJvdG90eXBlLGUpLG4mJnModCxuKSx0fXZhciB1PU9iamVjdChyWyJhIl0pKCJyZXF1ZXN0Q29tcG9uZW50T2JzZXJ2ZXIiKSxsPXt0aHJlc2hvbGRzOlswXSxpbml0aWFsUmF0aW86MCxvYnNlcnZlQWxsOiExfSxmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe2EodGhpcyxlKSx0aGlzLnBhZ2VJZD10LiRwYWdlJiZ0LiRwYWdlLmlkLHRoaXMuY29tcG9uZW50PXQuXyRpZHx8dCx0aGlzLm9wdGlvbnM9T2JqZWN0LmFzc2lnbih7fSxsLG4pfXJldHVybiBjKGUsW3trZXk6Il9tYWtlUm9vdE1hcmdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307dGhpcy5vcHRpb25zLnJvb3RNYXJnaW49WyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiIiLmNvbmNhdChOdW1iZXIodFtlXSl8fDAsInB4Iil9KSkuam9pbigiICIpfX0se2tleToicmVsYXRpdmVUbyIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5vcHRpb25zLnJlbGF0aXZlVG9TZWxlY3Rvcj10LHRoaXMuX21ha2VSb290TWFyZ2luKGUpLHRoaXN9fSx7a2V5OiJyZWxhdGl2ZVRvVmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMucmVsYXRpdmVUb1NlbGVjdG9yPW51bGwsdGhpcy5fbWFrZVJvb3RNYXJnaW4odCksdGhpc319LHtrZXk6Im9ic2VydmUiLHZhbHVlOmZ1bmN0aW9uKGUsbil7ImZ1bmN0aW9uIj09PXR5cGVvZiBuJiYodGhpcy5vcHRpb25zLnNlbGVjdG9yPWUsdGhpcy5yZXFJZD11LnB1c2gobiksdC5wdWJsaXNoSGFuZGxlcigicmVxdWVzdENvbXBvbmVudE9ic2VydmVyIix7cmVxSWQ6dGhpcy5yZXFJZCxjb21wb25lbnQ6dGhpcy5jb21wb25lbnQsb3B0aW9uczp0aGlzLm9wdGlvbnN9LE9iamVjdChpWyJhIl0pKHRoaXMuY29tcG9uZW50KT90aGlzLmNvbXBvbmVudDp0aGlzLnBhZ2VJZCkpfX0se2tleToiZGlzY29ubmVjdCIsdmFsdWU6ZnVuY3Rpb24oKXt0LnB1Ymxpc2hIYW5kbGVyKCJkZXN0cm95Q29tcG9uZW50T2JzZXJ2ZXIiLHtyZXFJZDp0aGlzLnJlcUlkfSxPYmplY3QoaVsiYSJdKSh0aGlzLmNvbXBvbmVudCk/dGhpcy5jb21wb25lbnQ6dGhpcy5wYWdlSWQpfX1dKSxlfSgpO2Z1bmN0aW9uIGQodCxlKXtyZXR1cm4gdC5faXNWdWV8fChlPXQsdD1udWxsKSxuZXcgZih0fHxPYmplY3Qob1siYiJdKSgiY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiKSxlKX19LmNhbGwodGhpcyxuKCIyYzlmIikpfSxhNzcwOmZ1bmN0aW9uKHQsZSl7KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2lmKCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT09dHlwZW9mIHdpbmRvdz8idW5kZWZpbmVkIjpyKHdpbmRvdykpKWlmKCJJbnRlcnNlY3Rpb25PYnNlcnZlciJpbiB3aW5kb3cmJiJJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5ImluIHdpbmRvdyYmImludGVyc2VjdGlvblJhdGlvImluIHdpbmRvdy5JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LnByb3RvdHlwZSkiaXNJbnRlcnNlY3RpbmciaW4gd2luZG93LkludGVyc2VjdGlvbk9ic2VydmVyRW50cnkucHJvdG90eXBlfHxPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LkludGVyc2VjdGlvbk9ic2VydmVyRW50cnkucHJvdG90eXBlLCJpc0ludGVyc2VjdGluZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmludGVyc2VjdGlvblJhdGlvPjB9fSk7ZWxzZXt2YXIgdD13aW5kb3cuZG9jdW1lbnQsZT1bXTtpLnByb3RvdHlwZS5USFJPVFRMRV9USU1FT1VUPTEwMCxpLnByb3RvdHlwZS5QT0xMX0lOVEVSVkFMPW51bGwsaS5wcm90b3R5cGUuVVNFX01VVEFUSU9OX09CU0VSVkVSPSEwLGkucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fb2JzZXJ2YXRpb25UYXJnZXRzLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmVsZW1lbnQ9PXR9KSk7aWYoIWUpe2lmKCF0fHwxIT10Lm5vZGVUeXBlKXRocm93IG5ldyBFcnJvcigidGFyZ2V0IG11c3QgYmUgYW4gRWxlbWVudCIpO3RoaXMuX3JlZ2lzdGVySW5zdGFuY2UoKSx0aGlzLl9vYnNlcnZhdGlvblRhcmdldHMucHVzaCh7ZWxlbWVudDp0LGVudHJ5Om51bGx9KSx0aGlzLl9tb25pdG9ySW50ZXJzZWN0aW9ucygpLHRoaXMuX2NoZWNrRm9ySW50ZXJzZWN0aW9ucygpfX0saS5wcm90b3R5cGUudW5vYnNlcnZlPWZ1bmN0aW9uKHQpe3RoaXMuX29ic2VydmF0aW9uVGFyZ2V0cz10aGlzLl9vYnNlcnZhdGlvblRhcmdldHMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5lbGVtZW50IT10fSkpLHRoaXMuX29ic2VydmF0aW9uVGFyZ2V0cy5sZW5ndGh8fCh0aGlzLl91bm1vbml0b3JJbnRlcnNlY3Rpb25zKCksdGhpcy5fdW5yZWdpc3Rlckluc3RhbmNlKCkpfSxpLnByb3RvdHlwZS5kaXNjb25uZWN0PWZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2YXRpb25UYXJnZXRzPVtdLHRoaXMuX3VubW9uaXRvckludGVyc2VjdGlvbnMoKSx0aGlzLl91bnJlZ2lzdGVySW5zdGFuY2UoKX0saS5wcm90b3R5cGUudGFrZVJlY29yZHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9xdWV1ZWRFbnRyaWVzLnNsaWNlKCk7cmV0dXJuIHRoaXMuX3F1ZXVlZEVudHJpZXM9W10sdH0saS5wcm90b3R5cGUuX2luaXRUaHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3ZhciBlPXR8fFswXTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKXx8KGU9W2VdKSxlLnNvcnQoKS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxuKXtpZigibnVtYmVyIiE9dHlwZW9mIHR8fGlzTmFOKHQpfHx0PDB8fHQ+MSl0aHJvdyBuZXcgRXJyb3IoInRocmVzaG9sZCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMSBpbmNsdXNpdmVseSIpO3JldHVybiB0IT09bltlLTFdfSkpfSxpLnByb3RvdHlwZS5fcGFyc2VSb290TWFyZ2luPWZ1bmN0aW9uKHQpe3ZhciBlPXR8fCIwcHgiLG49ZS5zcGxpdCgvXHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0vXigtP1xkKlwuP1xkKykocHh8JSkkLy5leGVjKHQpO2lmKCFlKXRocm93IG5ldyBFcnJvcigicm9vdE1hcmdpbiBtdXN0IGJlIHNwZWNpZmllZCBpbiBwaXhlbHMgb3IgcGVyY2VudCIpO3JldHVybnt2YWx1ZTpwYXJzZUZsb2F0KGVbMV0pLHVuaXQ6ZVsyXX19KSk7cmV0dXJuIG5bMV09blsxXXx8blswXSxuWzJdPW5bMl18fG5bMF0sblszXT1uWzNdfHxuWzFdLG59LGkucHJvdG90eXBlLl9tb25pdG9ySW50ZXJzZWN0aW9ucz1mdW5jdGlvbigpe3RoaXMuX21vbml0b3JpbmdJbnRlcnNlY3Rpb25zfHwodGhpcy5fbW9uaXRvcmluZ0ludGVyc2VjdGlvbnM9ITAsdGhpcy5QT0xMX0lOVEVSVkFMP3RoaXMuX21vbml0b3JpbmdJbnRlcnZhbD1zZXRJbnRlcnZhbCh0aGlzLl9jaGVja0ZvckludGVyc2VjdGlvbnMsdGhpcy5QT0xMX0lOVEVSVkFMKToocyh3aW5kb3csInJlc2l6ZSIsdGhpcy5fY2hlY2tGb3JJbnRlcnNlY3Rpb25zLCEwKSxzKHQsInNjcm9sbCIsdGhpcy5fY2hlY2tGb3JJbnRlcnNlY3Rpb25zLCEwKSx0aGlzLlVTRV9NVVRBVElPTl9PQlNFUlZFUiYmIk11dGF0aW9uT2JzZXJ2ZXIiaW4gd2luZG93JiYodGhpcy5fZG9tT2JzZXJ2ZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy5fY2hlY2tGb3JJbnRlcnNlY3Rpb25zKSx0aGlzLl9kb21PYnNlcnZlci5vYnNlcnZlKHQse2F0dHJpYnV0ZXM6ITAsY2hpbGRMaXN0OiEwLGNoYXJhY3RlckRhdGE6ITAsc3VidHJlZTohMH0pKSkpfSxpLnByb3RvdHlwZS5fdW5tb25pdG9ySW50ZXJzZWN0aW9ucz1mdW5jdGlvbigpe3RoaXMuX21vbml0b3JpbmdJbnRlcnNlY3Rpb25zJiYodGhpcy5fbW9uaXRvcmluZ0ludGVyc2VjdGlvbnM9ITEsY2xlYXJJbnRlcnZhbCh0aGlzLl9tb25pdG9yaW5nSW50ZXJ2YWwpLHRoaXMuX21vbml0b3JpbmdJbnRlcnZhbD1udWxsLGMod2luZG93LCJyZXNpemUiLHRoaXMuX2NoZWNrRm9ySW50ZXJzZWN0aW9ucywhMCksYyh0LCJzY3JvbGwiLHRoaXMuX2NoZWNrRm9ySW50ZXJzZWN0aW9ucywhMCksdGhpcy5fZG9tT2JzZXJ2ZXImJih0aGlzLl9kb21PYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5fZG9tT2JzZXJ2ZXI9bnVsbCkpfSxpLnByb3RvdHlwZS5fY2hlY2tGb3JJbnRlcnNlY3Rpb25zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcm9vdElzSW5Eb20oKSxlPXQ/dGhpcy5fZ2V0Um9vdFJlY3QoKTpmKCk7dGhpcy5fb2JzZXJ2YXRpb25UYXJnZXRzLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZhciBpPXIuZWxlbWVudCxhPWwoaSkscz10aGlzLl9yb290Q29udGFpbnNUYXJnZXQoaSksYz1yLmVudHJ5LHU9dCYmcyYmdGhpcy5fY29tcHV0ZVRhcmdldEFuZFJvb3RJbnRlcnNlY3Rpb24oaSxlKSxmPXIuZW50cnk9bmV3IG4oe3RpbWU6bygpLHRhcmdldDppLGJvdW5kaW5nQ2xpZW50UmVjdDphLHJvb3RCb3VuZHM6ZSxpbnRlcnNlY3Rpb25SZWN0OnV9KTtjP3QmJnM/dGhpcy5faGFzQ3Jvc3NlZFRocmVzaG9sZChjLGYpJiZ0aGlzLl9xdWV1ZWRFbnRyaWVzLnB1c2goZik6YyYmYy5pc0ludGVyc2VjdGluZyYmdGhpcy5fcXVldWVkRW50cmllcy5wdXNoKGYpOnRoaXMuX3F1ZXVlZEVudHJpZXMucHVzaChmKX0pLHRoaXMpLHRoaXMuX3F1ZXVlZEVudHJpZXMubGVuZ3RoJiZ0aGlzLl9jYWxsYmFjayh0aGlzLnRha2VSZWNvcmRzKCksdGhpcyl9LGkucHJvdG90eXBlLl9jb21wdXRlVGFyZ2V0QW5kUm9vdEludGVyc2VjdGlvbj1mdW5jdGlvbihlLG4pe2lmKCJub25lIiE9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkuZGlzcGxheSl7dmFyIHI9bChlKSxpPXIsbz1oKGUpLGE9ITE7d2hpbGUoIWEpe3ZhciBzPW51bGwsYz0xPT1vLm5vZGVUeXBlP3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG8pOnt9O2lmKCJub25lIj09Yy5kaXNwbGF5KXJldHVybjtpZihvPT10aGlzLnJvb3R8fG89PXQ/KGE9ITAscz1uKTpvIT10LmJvZHkmJm8hPXQuZG9jdW1lbnRFbGVtZW50JiYidmlzaWJsZSIhPWMub3ZlcmZsb3cmJihzPWwobykpLHMmJihpPXUocyxpKSwhaSkpYnJlYWs7bz1oKG8pfXJldHVybiBpfX0saS5wcm90b3R5cGUuX2dldFJvb3RSZWN0PWZ1bmN0aW9uKCl7dmFyIGU7aWYodGhpcy5yb290KWU9bCh0aGlzLnJvb3QpO2Vsc2V7dmFyIG49dC5kb2N1bWVudEVsZW1lbnQscj10LmJvZHk7ZT17dG9wOjAsbGVmdDowLHJpZ2h0Om4uY2xpZW50V2lkdGh8fHIuY2xpZW50V2lkdGgsd2lkdGg6bi5jbGllbnRXaWR0aHx8ci5jbGllbnRXaWR0aCxib3R0b206bi5jbGllbnRIZWlnaHR8fHIuY2xpZW50SGVpZ2h0LGhlaWdodDpuLmNsaWVudEhlaWdodHx8ci5jbGllbnRIZWlnaHR9fXJldHVybiB0aGlzLl9leHBhbmRSZWN0QnlSb290TWFyZ2luKGUpfSxpLnByb3RvdHlwZS5fZXhwYW5kUmVjdEJ5Um9vdE1hcmdpbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9yb290TWFyZ2luVmFsdWVzLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4icHgiPT1lLnVuaXQ/ZS52YWx1ZTplLnZhbHVlKihuJTI/dC53aWR0aDp0LmhlaWdodCkvMTAwfSkpLG49e3RvcDp0LnRvcC1lWzBdLHJpZ2h0OnQucmlnaHQrZVsxXSxib3R0b206dC5ib3R0b20rZVsyXSxsZWZ0OnQubGVmdC1lWzNdfTtyZXR1cm4gbi53aWR0aD1uLnJpZ2h0LW4ubGVmdCxuLmhlaWdodD1uLmJvdHRvbS1uLnRvcCxufSxpLnByb3RvdHlwZS5faGFzQ3Jvc3NlZFRocmVzaG9sZD1mdW5jdGlvbih0LGUpe3ZhciBuPXQmJnQuaXNJbnRlcnNlY3Rpbmc/dC5pbnRlcnNlY3Rpb25SYXRpb3x8MDotMSxyPWUuaXNJbnRlcnNlY3Rpbmc/ZS5pbnRlcnNlY3Rpb25SYXRpb3x8MDotMTtpZihuIT09cilmb3IodmFyIGk9MDtpPHRoaXMudGhyZXNob2xkcy5sZW5ndGg7aSsrKXt2YXIgbz10aGlzLnRocmVzaG9sZHNbaV07aWYobz09bnx8bz09cnx8bzxuIT09bzxyKXJldHVybiEwfX0saS5wcm90b3R5cGUuX3Jvb3RJc0luRG9tPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMucm9vdHx8ZCh0LHRoaXMucm9vdCl9LGkucHJvdG90eXBlLl9yb290Q29udGFpbnNUYXJnZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGQodGhpcy5yb290fHx0LGUpfSxpLnByb3RvdHlwZS5fcmVnaXN0ZXJJbnN0YW5jZT1mdW5jdGlvbigpe2UuaW5kZXhPZih0aGlzKTwwJiZlLnB1c2godGhpcyl9LGkucHJvdG90eXBlLl91bnJlZ2lzdGVySW5zdGFuY2U9ZnVuY3Rpb24oKXt2YXIgdD1lLmluZGV4T2YodGhpcyk7LTEhPXQmJmUuc3BsaWNlKHQsMSl9LHdpbmRvdy5JbnRlcnNlY3Rpb25PYnNlcnZlcj1pLHdpbmRvdy5JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5PW59ZnVuY3Rpb24gbih0KXt0aGlzLnRpbWU9dC50aW1lLHRoaXMudGFyZ2V0PXQudGFyZ2V0LHRoaXMucm9vdEJvdW5kcz10LnJvb3RCb3VuZHMsdGhpcy5ib3VuZGluZ0NsaWVudFJlY3Q9dC5ib3VuZGluZ0NsaWVudFJlY3QsdGhpcy5pbnRlcnNlY3Rpb25SZWN0PXQuaW50ZXJzZWN0aW9uUmVjdHx8ZigpLHRoaXMuaXNJbnRlcnNlY3Rpbmc9ISF0LmludGVyc2VjdGlvblJlY3Q7dmFyIGU9dGhpcy5ib3VuZGluZ0NsaWVudFJlY3Qsbj1lLndpZHRoKmUuaGVpZ2h0LHI9dGhpcy5pbnRlcnNlY3Rpb25SZWN0LGk9ci53aWR0aCpyLmhlaWdodDt0aGlzLmludGVyc2VjdGlvblJhdGlvPW4/TnVtYmVyKChpL24pLnRvRml4ZWQoNCkpOnRoaXMuaXNJbnRlcnNlY3Rpbmc/MTowfWZ1bmN0aW9uIGkodCxlKXt2YXIgbj1lfHx7fTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoImNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpO2lmKG4ucm9vdCYmMSE9bi5yb290Lm5vZGVUeXBlKXRocm93IG5ldyBFcnJvcigicm9vdCBtdXN0IGJlIGFuIEVsZW1lbnQiKTt0aGlzLl9jaGVja0ZvckludGVyc2VjdGlvbnM9YSh0aGlzLl9jaGVja0ZvckludGVyc2VjdGlvbnMuYmluZCh0aGlzKSx0aGlzLlRIUk9UVExFX1RJTUVPVVQpLHRoaXMuX2NhbGxiYWNrPXQsdGhpcy5fb2JzZXJ2YXRpb25UYXJnZXRzPVtdLHRoaXMuX3F1ZXVlZEVudHJpZXM9W10sdGhpcy5fcm9vdE1hcmdpblZhbHVlcz10aGlzLl9wYXJzZVJvb3RNYXJnaW4obi5yb290TWFyZ2luKSx0aGlzLnRocmVzaG9sZHM9dGhpcy5faW5pdFRocmVzaG9sZHMobi50aHJlc2hvbGQpLHRoaXMucm9vdD1uLnJvb3R8fG51bGwsdGhpcy5yb290TWFyZ2luPXRoaXMuX3Jvb3RNYXJnaW5WYWx1ZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZSt0LnVuaXR9KSkuam9pbigiICIpfWZ1bmN0aW9uIG8oKXtyZXR1cm4gd2luZG93LnBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3cmJnBlcmZvcm1hbmNlLm5vdygpfWZ1bmN0aW9uIGEodCxlKXt2YXIgbj1udWxsO3JldHVybiBmdW5jdGlvbigpe258fChuPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dCgpLG49bnVsbH0pLGUpKX19ZnVuY3Rpb24gcyh0LGUsbixyKXsiZnVuY3Rpb24iPT10eXBlb2YgdC5hZGRFdmVudExpc3RlbmVyP3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4scnx8ITEpOiJmdW5jdGlvbiI9PXR5cGVvZiB0LmF0dGFjaEV2ZW50JiZ0LmF0dGFjaEV2ZW50KCJvbiIrZSxuKX1mdW5jdGlvbiBjKHQsZSxuLHIpeyJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlbW92ZUV2ZW50TGlzdGVuZXI/dC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbixyfHwhMSk6ImZ1bmN0aW9uIj09dHlwZW9mIHQuZGV0YXRjaEV2ZW50JiZ0LmRldGF0Y2hFdmVudCgib24iK2Usbil9ZnVuY3Rpb24gdSh0LGUpe3ZhciBuPU1hdGgubWF4KHQudG9wLGUudG9wKSxyPU1hdGgubWluKHQuYm90dG9tLGUuYm90dG9tKSxpPU1hdGgubWF4KHQubGVmdCxlLmxlZnQpLG89TWF0aC5taW4odC5yaWdodCxlLnJpZ2h0KSxhPW8taSxzPXItbjtyZXR1cm4gYT49MCYmcz49MCYme3RvcDpuLGJvdHRvbTpyLGxlZnQ6aSxyaWdodDpvLHdpZHRoOmEsaGVpZ2h0OnN9fWZ1bmN0aW9uIGwodCl7dmFyIGU7dHJ5e2U9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChuKXt9cmV0dXJuIGU/KGUud2lkdGgmJmUuaGVpZ2h0fHwoZT17dG9wOmUudG9wLHJpZ2h0OmUucmlnaHQsYm90dG9tOmUuYm90dG9tLGxlZnQ6ZS5sZWZ0LHdpZHRoOmUucmlnaHQtZS5sZWZ0LGhlaWdodDplLmJvdHRvbS1lLnRvcH0pLGUpOmYoKX1mdW5jdGlvbiBmKCl7cmV0dXJue3RvcDowLGJvdHRvbTowLGxlZnQ6MCxyaWdodDowLHdpZHRoOjAsaGVpZ2h0OjB9fWZ1bmN0aW9uIGQodCxlKXt2YXIgbj1lO3doaWxlKG4pe2lmKG49PXQpcmV0dXJuITA7bj1oKG4pfXJldHVybiExfWZ1bmN0aW9uIGgodCl7dmFyIGU9dC5wYXJlbnROb2RlO3JldHVybiBlJiYxMT09ZS5ub2RlVHlwZSYmZS5ob3N0P2UuaG9zdDplJiZlLmFzc2lnbmVkU2xvdD9lLmFzc2lnbmVkU2xvdC5wYXJlbnROb2RlOmV9fSkoKX0sYTdmYjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJ1bmktcGFnZS13cmFwcGVyIixbbigidW5pLXBhZ2UtYm9keSIsW3QuX3QoImRlZmF1bHQiKV0sMildLDEpfSxpPVtdLG89bigiODRlZCIpLGE9bigiNGU0NiIpLHM9e25hbWU6IlBhZ2VCb2R5Iixtb3VudGVkOmZ1bmN0aW9uKCl7dmFyIHQ9YVsiYSJdLmhlaWdodHx8IjUwcHgiLGU9Ii51bmktYXBwLS1zaG93dGFiYmFyIHVuaS1wYWdlLXdyYXBwZXIge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAiLmNvbmNhdCh0LCIpO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtICIpLmNvbmNhdCh0LCIgLSBjb25zdGFudChzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSk7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gIikuY29uY2F0KHQsIiAtIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSk7XG4gICAgICAgICAgICAgICAgICB9Iik7ZSs9IlxuIixlKz0nLnVuaS1hcHAtLXNob3d0YWJiYXIgdW5pLXBhZ2Utd3JhcHBlcjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgY29udGVudDogIiI7XG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnLmNvbmNhdCh0LCI7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6IGNhbGMoIikuY29uY2F0KHQsIiArIGNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKTtcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogY2FsYygiKS5jb25jYXQodCwiICsgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKTtcbiAgICAgICAgICAgICAgICB9IiksZSs9IlxuIixlKz0nLnVuaS1hcHAtLXNob3d0YWJiYXIgdW5pLXBhZ2UtaGVhZFt1bmktcGFnZS1oZWFkLXR5cGU9ImRlZmF1bHQiXSB+IHVuaS1wYWdlLXdyYXBwZXIge1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0NHB4IC0gJy5jb25jYXQodCwiKTtcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gNDRweCAtIGNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC10b3ApIC0gIikuY29uY2F0KHQsIiAtIGNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKTtcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gNDRweCAtIGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSAtICIpLmNvbmNhdCh0LCIgLSBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpO1xuICAgICAgICAgICAgICAgIH0iKSxPYmplY3Qob1siYSJdKShlKX19LGM9cyx1PShuKCI4Y2JiIiksbigiODg0NCIpKSxsPU9iamVjdCh1WyJhIl0pKGMscixpLCExLG51bGwsbnVsbCxudWxsKTtlWyJhIl09bC5leHBvcnRzfSxhODA1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoZSxuLHIpe3QuVW5pU2VydmljZUpTQnJpZGdlLnN1YnNjcmliZUhhbmRsZXIoZSxuLHIpfW4uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKX0pLmNhbGwodGhpcyxuKCIwZWU0IikpfSxhODc0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe24uZChlLCJjcmVhdGVNZWRpYVF1ZXJ5T2JzZXJ2ZXIiLChmdW5jdGlvbigpe3JldHVybiBmfSkpO3ZhciByPW4oIjc1NTMiKSxpPW4oIjc0NWEiKSxvPW4oIjA3OTUiKTtmdW5jdGlvbiBhKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcyh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fWZ1bmN0aW9uIGModCxlLG4pe3JldHVybiBlJiZzKHQucHJvdG90eXBlLGUpLG4mJnModCxuKSx0fXZhciB1PU9iamVjdChyWyJhIl0pKCJyZXF1ZXN0TWVkaWFRdWVyeU9ic2VydmVyIiksbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuKXthKHRoaXMsZSksdGhpcy5wYWdlSWQ9dC4kcGFnZSYmdC4kcGFnZS5pZCx0aGlzLmNvbXBvbmVudD10Ll8kaWR8fHQsdGhpcy5vcHRpb25zPW59cmV0dXJuIGMoZSxbe2tleToib2JzZXJ2ZSIsdmFsdWU6ZnVuY3Rpb24oZSxuKXsiZnVuY3Rpb24iPT09dHlwZW9mIG4mJih0aGlzLm9wdGlvbnM9ZSx0aGlzLnJlcUlkPXUucHVzaChuKSx0LnB1Ymxpc2hIYW5kbGVyKCJyZXF1ZXN0TWVkaWFRdWVyeU9ic2VydmVyIix7cmVxSWQ6dGhpcy5yZXFJZCxjb21wb25lbnQ6dGhpcy5jb21wb25lbnQsb3B0aW9uczp0aGlzLm9wdGlvbnN9LE9iamVjdChvWyJhIl0pKHRoaXMuY29tcG9uZW50KT90aGlzLmNvbXBvbmVudDp0aGlzLnBhZ2VJZCkpfX0se2tleToiZGlzY29ubmVjdCIsdmFsdWU6ZnVuY3Rpb24oKXt0LnB1Ymxpc2hIYW5kbGVyKCJkZXN0cm95TWVkaWFRdWVyeU9ic2VydmVyIix7cmVxSWQ6dGhpcy5yZXFJZH0sT2JqZWN0KG9bImEiXSkodGhpcy5jb21wb25lbnQpP3RoaXMuY29tcG9uZW50OnRoaXMucGFnZUlkKX19XSksZX0oKTtmdW5jdGlvbiBmKHQsZSl7cmV0dXJuIHQuX2lzVnVlfHwoZT10LHQ9bnVsbCksbmV3IGwodHx8T2JqZWN0KGlbImIiXSkoImNyZWF0ZU1lZGlhUXVlcnlPYnNlcnZlciIpLGUpfX0uY2FsbCh0aGlzLG4oIjJjOWYiKSl9LGE4YTc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsImxvYWRTdWJQYWNrYWdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKTt2YXIgcj17cm9vdDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITAsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7dmFyIG49X191bmlDb25maWcuc3ViUGFja2FnZXM7cmV0dXJuIEFycmF5LmlzQXJyYXkobikmJjAhPT1uLmxlbmd0aD9uLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJvb3Q9PT10fSkpP3ZvaWQgMDoicm9vdCBgIit0KyJgIGlzIG5vdCBmb3VuZCI6Im5vIHN1YlBhY2thZ2VzIn19fX0sYThkOTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwic2V0VGFiQmFySXRlbSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSksbi5kKGUsInNldFRhYkJhclN0eWxlIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKSxuLmQoZSwiaGlkZVRhYkJhciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKGUsInNob3dUYWJCYXIiLChmdW5jdGlvbigpe3JldHVybiBkfSkpLG4uZChlLCJoaWRlVGFiQmFyUmVkRG90IiwoZnVuY3Rpb24oKXtyZXR1cm4gaH0pKSxuLmQoZSwic2hvd1RhYkJhclJlZERvdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHB9KSksbi5kKGUsInJlbW92ZVRhYkJhckJhZGdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gdn0pKSxuLmQoZSwic2V0VGFiQmFyQmFkZ2UiLChmdW5jdGlvbigpe3JldHVybiBnfSkpO3ZhciByPW4oIjM0MGQiKSxpPVsidGV4dCIsImljb25QYXRoIiwiaWNvbmZvbnQiLCJzZWxlY3RlZEljb25QYXRoIiwidmlzaWJsZSJdLG89WyJjb2xvciIsInNlbGVjdGVkQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXJTdHlsZSIsIm1pZEJ1dHRvbiJdLGE9WyJiYWRnZSIsInJlZERvdCJdLHM9WyJ0ZXh0Iiwic2VsZWN0ZWRUZXh0IiwiZm9udFNpemUiLCJjb2xvciIsInNlbGVjdGVkQ29sb3IiXTtmdW5jdGlvbiBjKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPWdldEFwcCgpO2lmKG4pe3ZhciBjPSExLHU9Z2V0Q3VycmVudFBhZ2VzKCk7aWYodS5sZW5ndGg/dVt1Lmxlbmd0aC0xXS4kcGFnZS5tZXRhLmlzVGFiQmFyJiYoYz0hMCk6bi4kY2hpbGRyZW5bMF0uaGFzVGFiQmFyJiYoYz0hMCksIWMpcmV0dXJue2Vyck1zZzoiIi5jb25jYXQodCwiOmZhaWwgbm90IFRhYkJhciBwYWdlIil9O3ZhciBsPWUuaW5kZXgsZj1fX3VuaUNvbmZpZy50YWJCYXI7aWYobD49X191bmlDb25maWcudGFiQmFyLmxpc3QubGVuZ3RoKXJldHVybntlcnJNc2c6IiIuY29uY2F0KHQsIjpmYWlsIHRhYmJhciBpdGVtIG5vdCBmb3VuZCIpfTtzd2l0Y2godCl7Y2FzZSJzaG93VGFiQmFyIjpuLiRjaGlsZHJlblswXS5oaWRlVGFiQmFyPSExO2JyZWFrO2Nhc2UiaGlkZVRhYkJhciI6bi4kY2hpbGRyZW5bMF0uaGlkZVRhYkJhcj0hMDticmVhaztjYXNlInNldFRhYkJhckl0ZW0iOmUuaWNvbmZvbnQmJihPYmplY3QoclsiciJdKShmLmxpc3RbbF0uaWNvbmZvbnQscyxlLmljb25mb250KSxlLmljb25mb250PWYubGlzdFtsXS5pY29uZm9udCksT2JqZWN0KHJbInIiXSkoZi5saXN0W2xdLGksZSk7dmFyIGQ9ZS5wYWdlUGF0aCxoPWQmJl9fdW5pUm91dGVzLmZpbmQoKGZ1bmN0aW9uKHQpe3ZhciBlPXQucGF0aDtyZXR1cm4gZT09PWR9KSk7aWYoaCl7dmFyIHA9aC5tZXRhO3AuaXNUYWJCYXI9ITAscC50YWJCYXJJbmRleD1sLHAuaXNRdWl0PSEwLHAuaXNTZXQ9ITAscC5pZD1sKzE7dmFyIHY9X191bmlDb25maWcudGFiQmFyO3YmJnYubGlzdCYmdi5saXN0W2xdJiYodi5saXN0W2xdLnBhZ2VQYXRoPWQuc3RhcnRzV2l0aCgiLyIpP2Quc3Vic3RyaW5nKDEpOmQpfWJyZWFrO2Nhc2Uic2V0VGFiQmFyU3R5bGUiOk9iamVjdChyWyJyIl0pKGYsbyxlKTticmVhaztjYXNlInNob3dUYWJCYXJSZWREb3QiOk9iamVjdChyWyJyIl0pKGYubGlzdFtsXSxhLHtiYWRnZToiIixyZWREb3Q6ITB9KTticmVhaztjYXNlInNldFRhYkJhckJhZGdlIjpPYmplY3QoclsiciJdKShmLmxpc3RbbF0sYSx7YmFkZ2U6ZS50ZXh0LHJlZERvdDohMH0pO2JyZWFrO2Nhc2UiaGlkZVRhYkJhclJlZERvdCI6Y2FzZSJyZW1vdmVUYWJCYXJCYWRnZSI6T2JqZWN0KHJbInIiXSkoZi5saXN0W2xdLGEse2JhZGdlOiIiLHJlZERvdDohMX0pO2JyZWFrfX1yZXR1cm57fX1mdW5jdGlvbiB1KHQpe3JldHVybiBjKCJzZXRUYWJCYXJJdGVtIix0KX1mdW5jdGlvbiBsKHQpe3JldHVybiBjKCJzZXRUYWJCYXJTdHlsZSIsdCl9ZnVuY3Rpb24gZih0KXtyZXR1cm4gYygiaGlkZVRhYkJhciIsdCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gYygic2hvd1RhYkJhciIsdCl9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gYygiaGlkZVRhYkJhclJlZERvdCIsdCl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gYygic2hvd1RhYkJhclJlZERvdCIsdCl9ZnVuY3Rpb24gdih0KXtyZXR1cm4gYygicmVtb3ZlVGFiQmFyQmFkZ2UiLHQpfWZ1bmN0aW9uIGcodCl7cmV0dXJuIGMoInNldFRhYkJhckJhZGdlIix0KX19LGE5NDQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByLGksbzsoZnVuY3Rpb24obixhKXtpPVtdLHI9YSxvPSJmdW5jdGlvbiI9PT10eXBlb2Ygcj9yLmFwcGx5KGUsaSk6cix2b2lkIDA9PT1vfHwodC5leHBvcnRzPW8pfSkoInVuZGVmaW5lZCIhPT10eXBlb2Ygc2VsZiYmc2VsZiwoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7aWYoZG9jdW1lbnQuY3VycmVudFNjcmlwdClyZXR1cm4gZG9jdW1lbnQuY3VycmVudFNjcmlwdDt0cnl7dGhyb3cgbmV3IEVycm9yfWNhdGNoKGYpe3ZhciB0LGUsbixyPS8uKmF0IFteKF0qXCgoLiopOiguKyk6KC4rKVwpJC9naSxpPS9AKFteQF0qKTooXGQrKTooXGQrKVxzKiQvZ2ksbz1yLmV4ZWMoZi5zdGFjayl8fGkuZXhlYyhmLnN0YWNrKSxhPW8mJm9bMV18fCExLHM9byYmb1syXXx8ITEsYz1kb2N1bWVudC5sb2NhdGlvbi5ocmVmLnJlcGxhY2UoZG9jdW1lbnQubG9jYXRpb24uaGFzaCwiIiksdT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7YT09PWMmJih0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vdXRlckhUTUwsZT1uZXcgUmVnRXhwKCIoPzpbXlxcbl0rP1xcbil7MCwiKyhzLTIpKyJ9W148XSo8c2NyaXB0PihbXFxkXFxEXSo/KTxcXC9zY3JpcHQ+W1xcZFxcRF0qIiwiaSIpLG49dC5yZXBsYWNlKGUsIiQxIikudHJpbSgpKTtmb3IodmFyIGw9MDtsPHUubGVuZ3RoO2wrKyl7aWYoImludGVyYWN0aXZlIj09PXVbbF0ucmVhZHlTdGF0ZSlyZXR1cm4gdVtsXTtpZih1W2xdLnNyYz09PWEpcmV0dXJuIHVbbF07aWYoYT09PWMmJnVbbF0uaW5uZXJIVE1MJiZ1W2xdLmlubmVySFRNTC50cmltKCk9PT1uKXJldHVybiB1W2xdfXJldHVybiBudWxsfX1yZXR1cm4gdH0pKX0sYTk4ZjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBuKHQsZSxuKXt2YXIgcj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LmNoYW5nZWRUb3VjaGVzKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkZW50aWZpZXI9PT1lfSkpWzBdO3JldHVybiEhciYmKHQuZGVsdGFZPXIucGFnZVktbiwhMCl9dmFyIHI9InB1bGxpbmciLGk9InJlYWNoZWQiLG89ImFib3J0aW5nIixhPSJyZWZyZXNoaW5nIixzPSJyZXN0b3JpbmciO2VbImEiXT17bW91bnRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5lbmFibGVQdWxsRG93blJlZnJlc2gmJih0aGlzLnJlZnJlc2hDb250YWluZXJFbGVtPXRoaXMuJHJlZnMucmVmcmVzaC4kZWwsdGhpcy5yZWZyZXNoQ29udHJvbGxlckVsZW09dGhpcy5yZWZyZXNoQ29udGFpbmVyRWxlbS5xdWVyeVNlbGVjdG9yKCIudW5pLXBhZ2UtcmVmcmVzaCIpLHRoaXMucmVmcmVzaElubmVyRWxlbVN0eWxlPXRoaXMucmVmcmVzaENvbnRyb2xsZXJFbGVtLnF1ZXJ5U2VsZWN0b3IoIi51bmktcGFnZS1yZWZyZXNoLWlubmVyIikuc3R5bGUsdC5vbih0aGlzLiRyb3V0ZS5wYXJhbXMuX19pZF9fKyIuc3RhcnRQdWxsRG93blJlZnJlc2giLChmdW5jdGlvbigpe2Uuc3RhdGV8fChlLnN0YXRlPWEsZS5fYWRkQ2xhc3MoKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2UuX3JlZnJlc2hpbmcoKX0pLDUwKSl9KSksdC5vbih0aGlzLiRyb3V0ZS5wYXJhbXMuX19pZF9fKyIuc3RvcFB1bGxEb3duUmVmcmVzaCIsKGZ1bmN0aW9uKCl7ZS5zdGF0ZT09PWEmJihlLl9yZW1vdmVDbGFzcygpLGUuc3RhdGU9cyxlLl9hZGRDbGFzcygpLGUuX3Jlc3RvcmluZygoZnVuY3Rpb24oKXtlLl9yZW1vdmVDbGFzcygpLGUuc3RhdGU9ZS5kaXN0YW5jZT1lLm9mZnNldD1udWxsfSkpKX0pKSl9LG1ldGhvZHM6e190b3VjaHN0YXJ0OmZ1bmN0aW9uKHQpe3ZhciBlPXQuY2hhbmdlZFRvdWNoZXNbMF07dGhpcy50b3VjaElkPWUuaWRlbnRpZmllcix0aGlzLnN0YXJ0WT1lLnBhZ2VZLFtvLGEsc10uaW5kZXhPZih0aGlzLnN0YXRlKT49MD90aGlzLmNhblJlZnJlc2g9ITE6dGhpcy5jYW5SZWZyZXNoPSEwfSxfdG91Y2htb3ZlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuY2FuUmVmcmVzaCYmbih0LHRoaXMudG91Y2hJZCx0aGlzLnN0YXJ0WSkpe3ZhciBlPXQuZGVsdGFZO2lmKDA9PT0oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApKXtpZighKGU8MCl8fHRoaXMuc3RhdGUpe3QucHJldmVudERlZmF1bHQoKSxudWxsPT10aGlzLmRpc3RhbmNlJiYodGhpcy5vZmZzZXQ9ZSx0aGlzLnN0YXRlPXIsdGhpcy5fYWRkQ2xhc3MoKSksZS09dGhpcy5vZmZzZXQsZTwwJiYoZT0wKSx0aGlzLmRpc3RhbmNlPWU7dmFyIG89ZT49dGhpcy5yZWZyZXNoT3B0aW9ucy5yYW5nZSYmdGhpcy5zdGF0ZSE9PWksYT1lPHRoaXMucmVmcmVzaE9wdGlvbnMucmFuZ2UmJnRoaXMuc3RhdGUhPT1yOyhvfHxhKSYmKHRoaXMuX3JlbW92ZUNsYXNzKCksdGhpcy5zdGF0ZT10aGlzLnN0YXRlPT09aT9yOmksdGhpcy5fYWRkQ2xhc3MoKSksdGhpcy5fcHVsbGluZyhlKX19ZWxzZSB0aGlzLnRvdWNoSWQ9bnVsbH19LF90b3VjaGVuZDpmdW5jdGlvbih0KXt2YXIgZT10aGlzO24odCx0aGlzLnRvdWNoSWQsdGhpcy5zdGFydFkpJiZudWxsIT09dGhpcy5zdGF0ZSYmKHRoaXMuc3RhdGU9PT1yPyh0aGlzLl9yZW1vdmVDbGFzcygpLHRoaXMuc3RhdGU9byx0aGlzLl9hZGRDbGFzcygpLHRoaXMuX2Fib3J0aW5nKChmdW5jdGlvbigpe2UuX3JlbW92ZUNsYXNzKCksZS5zdGF0ZT1lLmRpc3RhbmNlPWUub2Zmc2V0PW51bGx9KSkpOnRoaXMuc3RhdGU9PT1pJiYodGhpcy5fcmVtb3ZlQ2xhc3MoKSx0aGlzLnN0YXRlPWEsdGhpcy5fYWRkQ2xhc3MoKSx0aGlzLl9yZWZyZXNoaW5nKCkpKX0sX3RvZ2dsZUNsYXNzOmZ1bmN0aW9uKHQpe2lmKHRoaXMuc3RhdGUpe3ZhciBlPXRoaXMucmVmcmVzaENvbnRhaW5lckVsZW07ZSYmZS5jbGFzc0xpc3RbdF0oInVuaS1wYWdlLXJlZnJlc2gtLSIrdGhpcy5zdGF0ZSl9fSxfYWRkQ2xhc3M6ZnVuY3Rpb24oKXt0aGlzLl90b2dnbGVDbGFzcygiYWRkIil9LF9yZW1vdmVDbGFzczpmdW5jdGlvbigpe3RoaXMuX3RvZ2dsZUNsYXNzKCJyZW1vdmUiKX0sX3B1bGxpbmc6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5yZWZyZXNoQ29udHJvbGxlckVsZW07aWYoZSl7dmFyIG49ZS5zdHlsZSxyPXQvdGhpcy5yZWZyZXNoT3B0aW9ucy5yYW5nZTtyPjE/cj0xOnIqPXIqcjt2YXIgaT1NYXRoLnJvdW5kKHQvKHRoaXMucmVmcmVzaE9wdGlvbnMucmFuZ2UvdGhpcy5yZWZyZXNoT3B0aW9ucy5oZWlnaHQpKSxvPWk/InRyYW5zbGF0ZTNkKC01MCUsICIraSsicHgsIDApIjowO24ud2Via2l0VHJhbnNmb3JtPW8sbi5jbGlwPSJyZWN0KCIrKDQ1LWkpKyJweCw0NXB4LDQ1cHgsLTVweCkiLHRoaXMucmVmcmVzaElubmVyRWxlbVN0eWxlLndlYmtpdFRyYW5zZm9ybT0icm90YXRlKCIrMzYwKnIrImRlZykifX0sX2Fib3J0aW5nOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucmVmcmVzaENvbnRyb2xsZXJFbGVtO2lmKGUpe3ZhciBuPWUuc3R5bGU7aWYobi53ZWJraXRUcmFuc2Zvcm0pe24ud2Via2l0VHJhbnNpdGlvbj0iLXdlYmtpdC10cmFuc2Zvcm0gMC4zcyIsbi53ZWJraXRUcmFuc2Zvcm09InRyYW5zbGF0ZTNkKC01MCUsIDAsIDApIjt2YXIgcj1mdW5jdGlvbiByKCl7aSYmY2xlYXJUaW1lb3V0KGkpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsciksbi53ZWJraXRUcmFuc2l0aW9uPSIiLHQoKX07ZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIixyKTt2YXIgaT1zZXRUaW1lb3V0KHIsMzUwKX1lbHNlIHQoKX19LF9yZWZyZXNoaW5nOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yZWZyZXNoQ29udHJvbGxlckVsZW07aWYoZSl7dmFyIG49ZS5zdHlsZTtuLndlYmtpdFRyYW5zaXRpb249Ii13ZWJraXQtdHJhbnNmb3JtIDAuMnMiLG4ud2Via2l0VHJhbnNmb3JtPSJ0cmFuc2xhdGUzZCgtNTAlLCAiK3RoaXMucmVmcmVzaE9wdGlvbnMuaGVpZ2h0KyJweCwgMCkiLHQuZW1pdCgib25QdWxsRG93blJlZnJlc2giLHt9LHRoaXMuJHJvdXRlLnBhcmFtcy5fX2lkX18pfX0sX3Jlc3RvcmluZzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnJlZnJlc2hDb250cm9sbGVyRWxlbTtpZihlKXt2YXIgbj1lLnN0eWxlO24ud2Via2l0VHJhbnNpdGlvbj0iLXdlYmtpdC10cmFuc2Zvcm0gMC4zcyIsbi53ZWJraXRUcmFuc2Zvcm0rPSIgc2NhbGUoMC4wMSkiO3ZhciByPWZ1bmN0aW9uIHIoKXtpJiZjbGVhclRpbWVvdXQoaSksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIixyKSxuLndlYmtpdFRyYW5zaXRpb249IiIsbi53ZWJraXRUcmFuc2Zvcm09InRyYW5zbGF0ZTNkKC01MCUsIDAsIDApIix0KCl9O2UuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIscik7dmFyIGk9c2V0VGltZW91dChyLDM1MCl9fX19fSkuY2FsbCh0aGlzLG4oIjJjOWYiKSl9LGFmOTU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZnVuY3Rpb24odCl7bi5kKGUsImdldExvY2F0aW9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKTt2YXIgcj1uKCIxZGFhIiksaT1uKCJiNDM1Iiksbz1uKCI2ZDRiIik7ZnVuY3Rpb24gYShlLG4pe3ZhciBhPWUudHlwZSxzPWUuYWx0aXR1ZGUsYz1lLmlzSGlnaEFjY3VyYWN5LHU9ZS5oaWdoQWNjdXJhY3lFeHBpcmVUaW1lLGw9dCxmPWwuaW52b2tlQ2FsbGJhY2tIYW5kbGVyLGQ9T2JqZWN0KGlbImUiXSkoKTtuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxlKXtuYXZpZ2F0b3IuZ2VvbG9jYXRpb24/bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigoZnVuY3Rpb24oZSl7cmV0dXJuIHQoe2Nvb3JkczplLmNvb3Jkc30pfSksZSx7ZW5hYmxlSGlnaEFjY3VyYWN5OmN8fHMsdGltZW91dDp1fHwxZTV9KTplKG5ldyBFcnJvcigiZGV2aWNlIG5vbnN1cHBvcnQgZ2VvbG9jYXRpb24iKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LGUpe2QudHlwZT09PWlbImQiXS5RUT9PYmplY3QoclsiYSJdKSgiaHR0cHM6Ly9hcGlzLm1hcC5xcS5jb20vd3MvbG9jYXRpb24vdjEvaXA/b3V0cHV0PWpzb25wJmtleT0iLmNvbmNhdChkLmtleSkse2NhbGxiYWNrOiJjYWxsYmFjayJ9LChmdW5jdGlvbihuKXtpZigicmVzdWx0ImluIG4mJm4ucmVzdWx0LmxvY2F0aW9uKXt2YXIgcj1uLnJlc3VsdC5sb2NhdGlvbjt0KHtjb29yZHM6e2xhdGl0dWRlOnIubGF0LGxvbmdpdHVkZTpyLmxuZ30sc2tpcDohMH0pfWVsc2UgZShuZXcgRXJyb3Iobi5tZXNzYWdlfHxKU09OLnN0cmluZ2lmeShuKSkpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIGUobmV3IEVycm9yKCJuZXR3b3JrIGVycm9yIikpfSkpOmQudHlwZT09PWlbImQiXS5HT09HTEU/dW5pLnJlcXVlc3Qoe21ldGhvZDoiUE9TVCIsdXJsOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9nZW9sb2NhdGlvbi92MS9nZW9sb2NhdGU/a2V5PSIuY29uY2F0KGQua2V5KSxzdWNjZXNzOmZ1bmN0aW9uKG4pe3ZhciByPW4uZGF0YTsibG9jYXRpb24iaW4gcj90KHtjb29yZHM6e2xhdGl0dWRlOnIubG9jYXRpb24ubGF0LGxvbmdpdHVkZTpyLmxvY2F0aW9uLmxuZyxhY2N1cmFjeTpyLmFjY3VyYWN5fSxza2lwOiEwfSk6ZShuZXcgRXJyb3Ioci5lcnJvciYmci5lcnJvci5tZXNzYWdlfHxKU09OLnN0cmluZ2lmeShuKSkpfSxmYWlsOmZ1bmN0aW9uKCl7ZShuZXcgRXJyb3IoIm5ldHdvcmsgZXJyb3IiKSl9fSk6ZC50eXBlPT09aVsiZCJdLkFNQVA/T2JqZWN0KG9bImEiXSkoW10sKGZ1bmN0aW9uKCl7d2luZG93LkFNYXAucGx1Z2luKCJBTWFwLkdlb2xvY2F0aW9uIiwoZnVuY3Rpb24oKXt2YXIgbj1uZXcgd2luZG93LkFNYXAuR2VvbG9jYXRpb24oe2VuYWJsZUhpZ2hBY2N1cmFjeTohMCx0aW1lb3V0OjFlNH0pO24uZ2V0Q3VycmVudFBvc2l0aW9uKChmdW5jdGlvbihuLHIpeyJjb21wbGV0ZSI9PT1uP3Qoe2Nvb3Jkczp7bGF0aXR1ZGU6ci5wb3NpdGlvbi5sYXQsbG9uZ2l0dWRlOnIucG9zaXRpb24ubG5nLGFjY3VyYWN5OnIuYWNjdXJhY3l9LHNraXA6ITB9KTplKG5ldyBFcnJvcihyLm1lc3NhZ2UpKX0pKX0pKX0pKTplKG5ldyBFcnJvcigibmV0d29yayBlcnJvciIpKX0pKX0pKS50aGVuKChmdW5jdGlvbih0KXt2YXIgZT10LmNvb3JkcyxyPXQuc2tpcDtPYmplY3QoaVsiZiJdKShhLGUscikudGhlbigoZnVuY3Rpb24odCl7ZihuLE9iamVjdC5hc3NpZ24odCx7ZXJyTXNnOiJnZXRMb2NhdGlvbjpvayIsdmVydGljYWxBY2N1cmFjeTp0LmFsdGl0dWRlQWNjdXJhY3l8fDAsaG9yaXpvbnRhbEFjY3VyYWN5OnQuYWNjdXJhY3l9KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe2Yobix7ZXJyTXNnOiJnZXRMb2NhdGlvbjpmYWlsICIrdC5tZXNzYWdlfSl9KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe2Yobix7ZXJyTXNnOiJnZXRMb2NhdGlvbjpmYWlsICIrdC5tZXNzYWdlfHwhMX0pfSkpfX0uY2FsbCh0aGlzLG4oIjJjOWYiKSl9LGIxNWU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpLGk9bigiOTg4ZSIpO2kua2V5cygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5hc3NpZ24ocixpKHQpKX0pKSxlWyJhIl09cn0sYjE2YjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjZkZGQiKSxpPW4ubihyKTtpLmF9LGIxZDI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInVuaS1lZGl0b3IiLHQuX2coe3N0YXRpY0NsYXNzOiJxbC1jb250YWluZXIiLGF0dHJzOntpZDp0LmlkfX0sdC4kbGlzdGVuZXJzKSl9LGk9W10sbz1uKCJmZTZhIiksYT1vWyJhIl0scz0obigiYzJlZiIpLG4oIjg4NDQiKSksYz1PYmplY3Qoc1siYSJdKShhLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPWMuZXhwb3J0c30sYjMyZjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwicmVxdWVzdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSksbi5kKGUsImNvbmZpZ01UTFMiLChmdW5jdGlvbigpe3JldHVybiBsfSkpO3ZhciByPW4oIjM0MGQiKSxpPXtPUFRJT05TOiJPUFRJT05TIixHRVQ6IkdFVCIsSEVBRDoiSEVBRCIsUE9TVDoiUE9TVCIsUFVUOiJQVVQiLERFTEVURToiREVMRVRFIixUUkFDRToiVFJBQ0UiLENPTk5FQ1Q6IkNPTk5FQ1QiLFBBVENIOiJQQVRDSCJ9LG89e0pTT046Impzb24ifSxhPXtURVhUOiJ0ZXh0IixBUlJBWUJVRkZFUjoiYXJyYXlidWZmZXIifSxzPWVuY29kZVVSSUNvbXBvbmVudDtmdW5jdGlvbiBjKHQsZSl7dmFyIG49dC5zcGxpdCgiIyIpLGk9blsxXXx8IiI7bj1uWzBdLnNwbGl0KCI/Iik7dmFyIG89blsxXXx8IiI7dD1uWzBdO3ZhciBhPW8uc3BsaXQoIiYiKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpO2Zvcih2YXIgYyBpbiBvPXt9LGEuZm9yRWFjaCgoZnVuY3Rpb24odCl7dD10LnNwbGl0KCI9Iiksb1t0WzBdXT10WzFdfSkpLGUpaWYoT2JqZWN0KHJbImkiXSkoZSxjKSl7dmFyIHU9ZVtjXTsidW5kZWZpbmVkIj09PXR5cGVvZiB1fHxudWxsPT09dT91PSIiOk9iamVjdChyWyJsIl0pKHUpJiYodT1KU09OLnN0cmluZ2lmeSh1KSksb1tzKGMpXT1zKHUpfXJldHVybiBvPU9iamVjdC5rZXlzKG8pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIiIuY29uY2F0KHQsIj0iKS5jb25jYXQob1t0XSl9KSkuam9pbigiJiIpLHQrKG8/Ij8iK286IiIpKyhpPyIjIitpOiIiKX12YXIgdT17bWV0aG9kOnt0eXBlOlN0cmluZyx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXt0PSh0fHwiIikudG9VcHBlckNhc2UoKSxlLm1ldGhvZD1PYmplY3QudmFsdWVzKGkpLmluZGV4T2YodCk8MD9pLkdFVDp0fX0sZGF0YTp7dHlwZTpbT2JqZWN0LFN0cmluZyxBcnJheSxBcnJheUJ1ZmZlcl0sdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7ZS5kYXRhPXR8fCIifX0sdXJsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMCx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXtlLm1ldGhvZD09PWkuR0VUJiZPYmplY3QoclsibCJdKShlLmRhdGEpJiZPYmplY3Qua2V5cyhlLmRhdGEpLmxlbmd0aCYmKGUudXJsPWModCxlLmRhdGEpKX19LGhlYWRlcjp7dHlwZTpPYmplY3QsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5oZWFkZXI9dHx8e307ZS5tZXRob2QhPT1pLkdFVCYmKE9iamVjdC5rZXlzKG4pLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpfSkpfHwoblsiQ29udGVudC1UeXBlIl09ImFwcGxpY2F0aW9uL2pzb24iKSl9fSxkYXRhVHlwZTp7dHlwZTpTdHJpbmcsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7ZS5kYXRhVHlwZT0odHx8by5KU09OKS50b0xvd2VyQ2FzZSgpfX0scmVzcG9uc2VUeXBlOnt0eXBlOlN0cmluZyx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXt0PSh0fHwiIikudG9Mb3dlckNhc2UoKSxlLnJlc3BvbnNlVHlwZT1PYmplY3QudmFsdWVzKGEpLmluZGV4T2YodCk8MD9hLlRFWFQ6dH19LHdpdGhDcmVkZW50aWFsczp7dHlwZTpCb29sZWFufSx0aW1lb3V0Ont0eXBlOk51bWJlcn19LGw9e2NlcnRpZmljYXRlczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMCx2YWxpZGF0b3I6ZnVuY3Rpb24odCl7aWYodC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4iU3RyaW5nIiE9PU9iamVjdChyWyJ2Il0pKHQuaG9zdCl9KSkpcmV0dXJuIuWPguaVsOmFjee9rumUmeivr++8jOivt+ehruiupOWQjumHjeivlSJ9fX19LGI0MDU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7bi5kKGUsImMiLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZChlLCJiIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKSxuLmQoZSwiZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSk7dmFyIHI9bigiMzQwZCIpLGk9bigiMDFmZCIpO24uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gaVsiZ2V0VGhlbWUiXX0pKTt2YXIgbz1uKCJjODBjIik7ZnVuY3Rpb24gYSgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpmdW5jdGlvbigpe307X191bmlDb25maWcuZGFya21vZGUmJnQub24oImFwaS4iK29bImIiXSxlKX1mdW5jdGlvbiBzKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOmZ1bmN0aW9uKCl7fTt0Lm9mZigiYXBpLiIrb1siYiJdLGUpfWZ1bmN0aW9uIGModCl7dmFyIGU9e307aWYoX191bmlDb25maWcuZGFya21vZGUpe3ZhciBuPU9iamVjdChpWyJnZXRUaGVtZSJdKSgpO2U9T2JqZWN0KHJbIm8iXSkodCxfX3VuaUNvbmZpZy50aGVtZUNvbmZpZyxuKX1yZXR1cm4gX191bmlDb25maWcuZGFya21vZGU/ZTp0fX0pLmNhbGwodGhpcyxuKCIyYzlmIikpfSxiNDM1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLCJiIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwiZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSksbi5kKGUsImUiLChmdW5jdGlvbigpe3JldHVybiBjfSkpLG4uZChlLCJjIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKSxuLmQoZSwiZiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSk7dmFyIHI9bigiMWRhYSIpLGk9bigiNmQ0YiIpLG89ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSVFBQUFDRUNBTUFBQUJtbW5PVkFBQUMwMUJNVkVVQUFBQUFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjhBZWY4QWVmOEFlZjk2cXVHU3RkcVN0ZHBibnVqTXpNekN5TTdHeWM3S3k4M016TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXpNek16TXdBZWY4R2ZQMHlqZk5Xbk9wMHFPS0tzZHlZdDltanU5YVp0OW1Nc3R4MXFlSlluZWt5anZJSWZQMHFpdlZtb3VhV3R0bk16TXlhdDlscHBPVXVqUFFLZmZ4aG9PZk56YzNZMk5qaDRlSHA2ZW51N3U3eTh2TDE5Zlh2NysvaTR1TFoyZG5PenM2YXVOZ09mL3NLZmYxNXF1SFIwZEh4OGZIOS9mMy8vLy9qNCtONnF1RmRuK2l5d2RQYjI5dnc4UEQrL3Y3YzNOeXl3dExhMnRyMjl2YlMwdExkM2QzOC9QemYzOS9vNk9qYzdmK3EwditId1A5cnNmOWRxdjlIbnY5VnB2L3E2dXJqOFArVngvOUFtLzhQZ2Y4SWZmL3o4L09BdlA5NXVmL241K2M1bC8vVjZmKzUydit5MS8vNysvdnQ3ZTBya1AvMDlQVFEwTkRxOVA4V2hmK2N5Ly9XMXRiZTN0N0Ezdi9tNXViczdPeE9vdi9yNit2azVPUWlhUGpLQUFBQWtuUlNUbE1BQ0JaOW9CNzEvamlxeXdKQlpBVFQ2aEJ1a1JYdit6RENBVnJrRElmNEpiUXNUYjdlVmVKTGJ3ZmE4Umg0Ry9PbFBTLzYva3hROS94ZG1adWRvSnhOVmhuZzdCNnd0V2R6QXRRT2lwY0YxMzI5d1M0NGRvSy9CQWt5UDFwdmdaT3NyYm5HWEFyQWczNEcySXNEMWVNUmU3Ymk3azVZbnFGVDlWMGNzeVBlZFF5WUQzcC9GamUraERwc2txL013cFJCQzZ5S3AyTUFBQVFkU1VSQlZIamE3Wm4xZXhNeEdJQVBIYnJoRHNQZG5lSHVOdHpkM2QzZEliakxoOTNvMm80aTdUcGdHMUprMGcwbU1Od2QvZ1RhNXJxMTI5cmVIbks1ZS9iay9URk5rL2RKN3I1ODk0WGpHQXdHZzhHZ1RaYXNDcERJbGwxK2h4dzV2WExKTHBFYm9UeDVaWGJJaHl6a2w5ZkIyOGNxVWFDZ3JCS0ZrSTNDY2pvVUtZb2xpaFdYVVNJN0VpaFJVamFIWEY1MkNWUktMb2U4ZVpJZFVPa3lNa25rUnc2VWxjZWhZQUZIaVhLK3NrZ1VSazZVbDhPaFFqRm5DVlJSQm9sS3FSeFE1U3pVSGFxZ05HU2o3VkNtYWxxSm5Ea29TNVJGNlpDYnJvTnZ1ZlFrVUQ2cUV1WFRkVUErM2hRZHFpRVhWS2ZuVUtPbUs0bGF0YWxKMUVFdW9aWjYxNjJISjl4LzRPQ2h3MGVPSGoxMi9NVEpVNmR4RzdYVXU3NTF0ak5uejRFVDV5OWN0TFpUU3IwYmVLRkxsODlicHVVRHJxZ0MxUnFOV3FzS3VxcXpORnc3ZTUxUzZ1M3RjK09tWlVKOWtDSFk2RUN3T2tSdmFiNTFpVXJxWGVqMkhZRFFzSEJqV2d4M0FlN2RwcEI2TjJ3RWNGOWpkTUdEVUlER1RhUjJhTm9NOUZxakc3UW1hTjVDV2djL2dJZVBqRzU1OUJpZ3BaUU9yWUIvNGpCZlJHUlV0RGttSmpZNktqTENvZmtwRDYybGMyZ0RmTXBXUEl1TGR3eVY4WEVwSGdhZGRCWit3QnVTRmN3SnFTTjJvdm1aL2Rmbk92Q1R4cUd0d3pxOFNFanY0RWhJU240OGVXZ25oVVA3RHZEU3ZnenhyczZ2VjYrRkxpcm8yRWtDaWM0UUtrendKc0gxS1lyZUNwMGVRaGZ5RGwxQi93NFAveGE1SlZKNFUwM1FqYlJEOXg3d1hsZ0g1SUUzd21NQkhYb1NsdWdGQWNJNmYvQWtrU2k4cTZIUW02eERuNzd3RVE4ZGpUd1NqM3RxQU1ndVJUZTRpa2VPUXlKNFlWK0tma1FsK29OVzVHYlk0Z1dPV2did0ora3dBRDZGaTkwTUsyWnNySWVCQkNVR3dSWGJxSisvaUpNUWxpSUVCaE9VNkFKaHRsRy9JcEhFMmJxcllRZzVoNkhBNHlRaVJxd0Vma0dDZFRDTW1NUncrSWJQRENRYUhDc0NZQVF4aVpIdzNUYm1EL0VTT0hnSHdTaGlFcVBocC9nZ2dZa1N6dEl4eENSYXd5L2JtRW5pSmFKdGZ3aUVzY1FreGtGZ1JxSkVTcVF3d0hoaUV1TUJwM1ZtOFJLL2Nab0hFektYaENLMlF4RVBwaUplMFlsS0NGYUtDTnYvY1lCTlVzQlJQbGtKU2MwVStkTTdFOUgwVGhHSmJnWlQvaVI3eWorVnFNUzA2UXI0K09GbTJKZEN4SWE4bHVnemtKczVLNk1meEFhWVBVY0JwWUc1a2haSkVrVVVTYjdEUENuS1JmUEJYajZNOEZ3dWVnb0xwQ2dYY1FzelZqaGJKRlVKVWVlMmhCaExvWVRJY1l0QjU3S1krb3BTTWRWcXdhdFNsWlZqMDVhVi8vQ3dKTE1YMkRsdWFVY3doWG00YWxpMlhPb0xqeFVyUFYyNnpGdEY0ZjVwMEdwMzEwK3oxM0JVV052YmVoRVhvbmE2aUF0WC96VlptdGZONFdpeGZzTmt5NFM2Z0NDVlZxM1JQTGRmU2ZwdjNNUlJaZlBvTGM2WHMvNWJ0M0V5TUd6RTloMDcvWGZ0MnQxNXo2aTkremdHZzhGZ01CZ01Cb1BCWURBWURBWWo4L0FQRzY3UmllOHBVRHNBQUFBQVNVVk9SSzVDWUlJPSIsYT0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHQUFBQUNjQ0FNQUFBQzNGbDVvQUFBQjNWQk1WRVZNYVhIL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0VoTC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0R3Ly9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvQUFEL0FBRC9HUm4vTlRYL0R3Ly9GaGIvQUFEL0FBRC9BQUQvR1JuL0dSbi9ZMlAvQUFEL0FBRC9FeFAvR2hyL0FBRC9BQUQvTXpQL0dSbi9BQUQvSGg3L0FBRC9SVVgvQUFEL0FBRC9BQUQvQUFEL0FBRC9BQUQvRGc3L0FBRC9IUjMvRHcvL0ZSWC9TVW4vQUFELy8vLy9rSkQvRFEzL1ptYi8rL3Yvd01EL21Kai82ZW4vdmIzLzFOVC8vUHovT0RqLytmbi8zTnovbkp6L2o0Ly85L2YvN2UzLzl2Yi83T3ovMk5qL3g4Zi9PenYvK1BqLzNkMy9uWjMvMmRuLy9mMy82T2ovMnRyL3Y3Ly8wOVAvdnI3L21abi9sNWNkU3ZQM0FBQUFlM1JTVGxNQUFoTGlaZ1RiL3Z6dEIvSk1SaGxwNmxRVzg2ZzhtUTRLRlBzM1VDSDVVOGh1d2xlc1d0VFlHSTdSc2RWZUpHZlRXNXJ4bnV0THN2WFdGOHZRTmRvNnFRYnV6N0Q0aGdWSXgyeHR3OEdDMVR0WmFJdzBpODRQOTh0VTAvZnNqN1BLYUFnaVpaeGVWZm84WjUyZWcxUDBuRVNyRU5ualhWUFVndy91dVNtREFBQURzVWxFUVZSNDJ1M2FaM2NUUnhnRjRHdGJZbGVTTGRuR2NzRU5HMk9EamJFeEVIcnZoQVFDSWIxQmVtK1Fka2V1dUZNTkJCSklmbXVPY2t6Wkk4L3NySFltSDNMbStRTlhLNjMyTFR2UTAzVHUvSVdlVS90VEdUS1QybitxNThMNWMwMHdwWEpkNDdESEV0NXc0N3BLeExiaGRMZFBLYi83ZEJZeFZMeHcxR2NJLzJoMUJjcHpLTkZITFgySlE0Z3VtYWlpdHFwRUVoRWRPTUpJOWg1QUZDM2ZlWXpJKzdJRjJ0cFNMRU9xRFhwT2JQUllGbS9qQ1doby80QmxlN01kb1Q3ZnpoaHE5eUhFejI4d2x0VTFVUHJKWjB3ZDY2SHdpY2ZZdkVGSWZlUFRBUDh0U0xUdXBCSHZ0R0pGSDliU2tOck5XRUh6RVJyVDM0eFNIOU9ncjFDaWprYlZBVUgxS1JxVnFrZFFBdzA3aUlBYUdsY1RxSSsvMExqZUpKNUowSUlFbmtwWE1kenM0c1R0VzlkblpxN2Z1ajJ4T010d1ZXazg4UkhEakJZZWpZdm5qRDhxak9wZlFzVXFodmo3b1NqeGNKSWhWajNweUtxcE5qWXZWalEvUnJYcTVZQUJLaTNNQ1ltNUJTcnRXTzV2MTFEbG1sQzRScFUxV1JTOVNKVTdRdWtPVmJwUTlKTHU1NDkrRGQwQVVPbFRia0dFdWs4NXZ4TEFLNVFidXl0QzNSMmozSG9BalpTYkZ4cm1LVGNDb0pkU2swTExKS1Y2Z1NhUE1xTlRRc3ZVS0dXOEpyeEtxVVdoYVpGU2VXeWgxTFRRTkUycEhGNm16T3k0MERRK1M1bUxpbUpjRU5vS2xPbkJXc3I4S2JSTlVHWXQ1TFhnZDZIdEQzbE5RSW95TjRTMkc1UkpJVU9abTBMYlRjcXNCcVZtaExZWlNsa1BzUDRWV2YrUnJkK20xdjlvOWg4VnY1cDQyQzFSNXFMMXg3V1JnbE9nVk41Mnlmd05PQnU3NlArbExQb1lpZHUyM0tQY2lJSEdhMDdaZUlXMWp2Y050STdxNXZleENQR1lDbWYrbS9ZOWEzc0F3UTViSTlUN3VrUGdQY245R1RvRWFvK3hrMU9peEpUK0dJc3ZOQWJ4NmVBZ1BxMHhpRitLdGtwWUtoUlhDUThlRkZjSmhTV0d1M3JaOGpKa0NNOGt6OUs0VFVuckM2bUFnelRzQjl0THdRMlcxNXFmb3NRMkdyUU5wWnI3YWN6YnpWakJac3ZMY2FDMWcwYnNiSVZFblU4RE9yNkgxS0RIMkx3dFVCaTAvSklJNkR4bTl6VVhrSCtYTVd6ZmgxRHRlMWkyUGUzUWtDNzdaZWw3YWVocE84d3lIRzZEdHQwTmpLeGhONkk0dVNsaS9UcUppSkpEVVE0TkRDVVJYVHJYUnkxWGN1bXlEMjRNK0F6aEQxUlhJSVpzbC9Mb3labXVySkhETTdzOGx2QjJGUS9QbVBKNlBzZUFYUDVIR01ZQUFDN0FCYmdBRitBQ1hJQUxjQUV1d0FXNEFCZmdBbHlBQzNBQkxzQUZ1SUQvZDhDeDRORXQ4L2J5T2Ywd0xuaXM4empNcTkvS3A3Yld3NEpPajh1OFRsaFJsK0cvTXAyd3BPWDQ4R2ZmdnZaMUN5TDRCNTNMQVM2emIwOEVBQUFBQUVsRlRrU3VRbUNDIixzPXtRUToicXEiLEdPT0dMRToiZ29vZ2xlIixBTUFQOiJBTWFwIixVTktOT1dOOiIifTtmdW5jdGlvbiBjKCl7cmV0dXJuIF9fdW5pQ29uZmlnLnFxTWFwS2V5P3t0eXBlOnMuUVEsa2V5Ol9fdW5pQ29uZmlnLnFxTWFwS2V5fTpfX3VuaUNvbmZpZy5nb29nbGVNYXBLZXk/e3R5cGU6cy5HT09HTEUsa2V5Ol9fdW5pQ29uZmlnLmdvb2dsZU1hcEtleX06X191bmlDb25maWcuYU1hcEtleT97dHlwZTpzLkFNQVAsa2V5Ol9fdW5pQ29uZmlnLmFNYXBLZXksc2VjdXJpdHlKc0NvZGU6X191bmlDb25maWcuYU1hcFNlY3VyaXR5SnNDb2RlLHNlcnZpY2VIb3N0Ol9fdW5pQ29uZmlnLmFNYXBTZXJ2aWNlSG9zdH06e3R5cGU6cy5VTktOT1dOLGtleToiIn19dmFyIHU9YygpLnR5cGU9PT1zLkFNQVA7ZnVuY3Rpb24gbCh0LGUsbil7dmFyIG89YygpLGE9W3MuR09PR0xFXTtyZXR1cm4iV0dTODQiPT09dC50b1VwcGVyQ2FzZSgpfHxhLmluY2x1ZGVzKG8udHlwZSl8fG4/UHJvbWlzZS5yZXNvbHZlKGUpOm8udHlwZT09PXMuUVE/bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsbil7T2JqZWN0KHJbImEiXSkoImh0dHBzOi8vYXBpcy5tYXAucXEuY29tL3dzL2Nvb3JkL3YxL3RyYW5zbGF0ZT90eXBlPTEmbG9jYXRpb25zPSIuY29uY2F0KGUubGF0aXR1ZGUsIiwiKS5jb25jYXQoZS5sb25naXR1ZGUsIiZrZXk9IikuY29uY2F0KG8ua2V5LCImb3V0cHV0PWpzb25wIikse2NhbGxiYWNrOiJjYWxsYmFjayJ9LChmdW5jdGlvbihyKXtpZigibG9jYXRpb25zImluIHImJnIubG9jYXRpb25zLmxlbmd0aCl7dmFyIGk9ci5sb2NhdGlvbnNbMF07dCh7bG9uZ2l0dWRlOmkubG5nLGxhdGl0dWRlOmkubGF0LGFsdGl0dWRlOmUuYWx0aXR1ZGUsYWNjdXJhY3k6ZS5hY2N1cmFjeSxhbHRpdHVkZUFjY3VyYWN5OmUuYWx0aXR1ZGVBY2N1cmFjeSxoZWFkaW5nOmUuaGVhZGluZyxzcGVlZDplLnNwZWVkfSl9ZWxzZSBuKG5ldyBFcnJvcigidHJhbnNsYXRlIGNvb3JkaW5hdGUgc3lzdGVtIGZhaWwiKSl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gbihuZXcgRXJyb3IoInRyYW5zbGF0ZSBjb29yZGluYXRlIHN5c3RlbSBmYWlsIikpfSkpfSkpOm8udHlwZT09PXMuQU1BUD9uZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxuKXtPYmplY3QoaVsiYSJdKShbXSwoZnVuY3Rpb24oKXt3aW5kb3cuQU1hcC5jb252ZXJ0RnJvbShbZS5sb25naXR1ZGUsZS5sYXRpdHVkZV0sImdwcyIsKGZ1bmN0aW9uKHIsaSl7aWYoIm9rIj09PWkuaW5mbyYmaS5sb2NhdGlvbnMubGVuZ3RoKXt2YXIgbz1pLmxvY2F0aW9uc1swXSxhPW8ubGF0LHM9by5sbmc7dCh7bG9uZ2l0dWRlOnMsbGF0aXR1ZGU6YSxhbHRpdHVkZTplLmFsdGl0dWRlLGFjY3VyYWN5OmUuYWNjdXJhY3ksYWx0aXR1ZGVBY2N1cmFjeTplLmFsdGl0dWRlQWNjdXJhY3ksaGVhZGluZzplLmhlYWRpbmcsc3BlZWQ6ZS5zcGVlZH0pfWVsc2UgbihuZXcgRXJyb3IoInRyYW5zbGF0ZSBjb29yZGluYXRlIHN5c3RlbSBmYWlsIikpfSkpfSkpfSkpOnZvaWQgMH19LGI2MmE6ZnVuY3Rpb24odCxlLG4pe30sYjc1YTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwidXBsb2FkRmlsZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSk7dmFyIHI9bigiNDczOCIpLGk9e3VybDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LGZpbGVzOnt0eXBlOkFycmF5fSxmaWxlUGF0aDp7dHlwZTpTdHJpbmcsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7dCYmKGUuZmlsZVBhdGg9T2JqZWN0KHJbImEiXSkodCkpfX0sbmFtZTp7dHlwZTpTdHJpbmd9LGhlYWRlcjp7dHlwZTpPYmplY3QsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7ZS5oZWFkZXI9dHx8e319fSxmb3JtRGF0YTp7dHlwZTpPYmplY3QsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7ZS5mb3JtRGF0YT10fHx7fX19fX0sYjdjOTpmdW5jdGlvbih0LGUsbil7fSxiN2RlOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpe3ZhciByPW4oIjUwOGUiKSxpPW4oIjhmYzYiKSxvPW4oIjU4ZTMiKSxhPW4oIjNkMWUiKTtuLmQoZSwiZ2V0QXBwIiwoZnVuY3Rpb24oKXtyZXR1cm4gYVsiYiJdfSkpLG4uZChlLCJnZXRDdXJyZW50UGFnZXMiLChmdW5jdGlvbigpe3JldHVybiBhWyJjIl19KSksT2JqZWN0KHJbImEiXSkodC5vbix7Z2V0QXBwOmFbImIiXSxnZXRDdXJyZW50UGFnZXM6YVsiYyJdfSksT2JqZWN0KGlbImEiXSkodC5zdWJzY3JpYmUse2dldEFwcDphWyJiIl0sZ2V0Q3VycmVudFBhZ2VzOmFbImMiXX0pLGVbImRlZmF1bHQiXT1vWyJhIl19LmNhbGwodGhpcyxuKCIyYzlmIikpfSxiOTFkOmZ1bmN0aW9uKHQsZSxuKXt9LGJhYTE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInVuaS1mb3JtIix0Ll9nKHt9LHQuJGxpc3RlbmVycyksW24oInNwYW4iLFt0Ll90KCJkZWZhdWx0IildLDIpXSl9LGk9W10sbz1uKCI5MDllIiksYT17bmFtZToiRm9ybSIsbWl4aW5zOltvWyJmIl1dLGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57Y2hpbGRyZW5MaXN0OltdfX0sbGlzdGVuZXJzOnsiQGZvcm0tc3VibWl0IjoiX29uU3VibWl0IiwiQGZvcm0tcmVzZXQiOiJfb25SZXNldCIsIkBmb3JtLWdyb3VwLXVwZGF0ZSI6Il9mb3JtR3JvdXBVcGRhdGVIYW5kbGVyIn0sbWV0aG9kczp7X29uU3VibWl0OmZ1bmN0aW9uKHQpe3ZhciBlPXt9O3RoaXMuY2hpbGRyZW5MaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuX2dldEZvcm1EYXRhJiZ0Ll9nZXRGb3JtRGF0YSgpLmtleSYmKGVbdC5fZ2V0Rm9ybURhdGEoKS5rZXldPXQuX2dldEZvcm1EYXRhKCkudmFsdWUpfSkpLHRoaXMuJHRyaWdnZXIoInN1Ym1pdCIsdCx7dmFsdWU6ZX0pfSxfb25SZXNldDpmdW5jdGlvbih0KXt0aGlzLiR0cmlnZ2VyKCJyZXNldCIsdCx7fSksdGhpcy5jaGlsZHJlbkxpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5fcmVzZXRGb3JtRGF0YSYmdC5fcmVzZXRGb3JtRGF0YSgpfSkpfSxfZm9ybUdyb3VwVXBkYXRlSGFuZGxlcjpmdW5jdGlvbih0KXtpZigiYWRkIj09PXQudHlwZSl0aGlzLmNoaWxkcmVuTGlzdC5wdXNoKHQudm0pO2Vsc2V7dmFyIGU9dGhpcy5jaGlsZHJlbkxpc3QuaW5kZXhPZih0LnZtKTt0aGlzLmNoaWxkcmVuTGlzdC5zcGxpY2UoZSwxKX19fX0scz1hLGM9bigiODg0NCIpLHU9T2JqZWN0KGNbImEiXSkocyxyLGksITEsbnVsbCxudWxsLG51bGwpO2VbImRlZmF1bHQiXT11LmV4cG9ydHN9LGJjYWM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZnVuY3Rpb24odCl7ZnVuY3Rpb24gcihlLG4scixpKXt2YXIgbz1uLiRwYWdlLmlkO3QucHVibGlzaEhhbmRsZXIobysiLXZpZGVvLSIrZSx7dmlkZW9JZDplLHR5cGU6cixkYXRhOml9LG8pfW4uZChlLCJvcGVyYXRlVmlkZW9QbGF5ZXIiLChmdW5jdGlvbigpe3JldHVybiByfSkpfS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sYmNlYjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwidXBsb2FkRmlsZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSk7dmFyIHI9bigiOTEzMSIpLGk9bigiNzQ1YSIpO2Z1bmN0aW9uIG8odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gcyh0LGUsbil7cmV0dXJuIGUmJmEodC5wcm90b3R5cGUsZSksbiYmYSh0LG4pLHR9dmFyIGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7byh0aGlzLHQpLHRoaXMuaWQ9ZSx0aGlzLl9jYWxsYmFja0lkPW4sdGhpcy5fY2FsbGJhY2tzPVtdfXJldHVybiBzKHQsW3trZXk6ImFib3J0Iix2YWx1ZTpmdW5jdGlvbigpe09iamVjdChpWyJjIl0pKCJvcGVyYXRlVXBsb2FkVGFzayIse3VwbG9hZFRhc2tJZDp0aGlzLmlkLG9wZXJhdGlvblR5cGU6ImFib3J0In0pfX0se2tleToib25Qcm9ncmVzc1VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIj09PXR5cGVvZiB0JiZ0aGlzLl9jYWxsYmFja3MucHVzaCh0KX19LHtrZXk6Im9uSGVhZGVyc1JlY2VpdmVkIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6Im9mZlByb2dyZXNzVXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9jYWxsYmFja3MuaW5kZXhPZih0KTtlPj0wJiZ0aGlzLl9jYWxsYmFja3Muc3BsaWNlKGUsMSl9fSx7a2V5OiJvZmZIZWFkZXJzUmVjZWl2ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7fX1dKSx0fSgpLHU9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBsKHQsZSl7dmFyIG49T2JqZWN0KGlbImMiXSkoImNyZWF0ZVVwbG9hZFRhc2siLHQpLHI9bi51cGxvYWRUYXNrSWQsbz1uZXcgYyhyLGUpO3JldHVybiB1W3JdPW8sb31PYmplY3QoaVsiZCJdKSgib25VcGxvYWRUYXNrU3RhdGVDaGFuZ2UiLChmdW5jdGlvbih0KXt2YXIgZT10LnVwbG9hZFRhc2tJZCxuPXQuc3RhdGUsaT10LmRhdGEsbz10LnN0YXR1c0NvZGUsYT10LnByb2dyZXNzLHM9dC50b3RhbEJ5dGVzU2VudCxjPXQudG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kLGw9dC5lcnJNc2csZj11W2VdLGQ9Zi5fY2FsbGJhY2tJZDtzd2l0Y2gobil7Y2FzZSJwcm9ncmVzc1VwZGF0ZSI6Zi5fY2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3Qoe3Byb2dyZXNzOmEsdG90YWxCeXRlc1NlbnQ6cyx0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQ6Y30pfSkpO2JyZWFrO2Nhc2Uic3VjY2VzcyI6T2JqZWN0KHJbImEiXSkoZCx7ZGF0YTppLHN0YXR1c0NvZGU6byxlcnJNc2c6InJlcXVlc3Q6b2sifSk7Y2FzZSJmYWlsIjpPYmplY3QoclsiYSJdKShkLHtlcnJNc2c6InJlcXVlc3Q6ZmFpbCAiK2x9KTtkZWZhdWx0OnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZGVsZXRlIHVbZV19KSwxMDApO2JyZWFrfX0pKX0sYmRlZTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLCJmIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKSxuLmQoZSwiYyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSksbi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiB1fSkpLG4uZChlLCJiIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKSxuLmQoZSwiZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKGUsImUiLChmdW5jdGlvbigpe3JldHVybiBkfSkpO3ZhciByPW4oIjM0MGQiKSxpPXt9O2Z1bmN0aW9uIG8odCxlKXt2YXIgbj1pW3RdO3JldHVybiBuP1Byb21pc2UucmVzb2x2ZShuKTovXmRhdGE6W2Etei1dK1wvW2Etei1dKztiYXNlNjQsLy50ZXN0KHQpP1Byb21pc2UucmVzb2x2ZShhKHQpKTplP1Byb21pc2UucmVqZWN0KG5ldyBFcnJvcigibm90IGZpbmQiKSk6bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsbil7dmFyIHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3Iub3BlbigiR0VUIix0LCEwKSxyLnJlc3BvbnNlVHlwZT0iYmxvYiIsci5vbmxvYWQ9ZnVuY3Rpb24oKXtlKHRoaXMucmVzcG9uc2UpfSxyLm9uZXJyb3I9bixyLnNlbmQoKX0pKX1mdW5jdGlvbiBhKHQpe3Q9dC5zcGxpdCgiLCIpO3ZhciBlPXRbMF0ubWF0Y2goLzooLio/KTsvKVsxXSxuPWF0b2IodFsxXSkscj1uLmxlbmd0aCxpPW5ldyBVaW50OEFycmF5KHIpO3doaWxlKHItLSlpW3JdPW4uY2hhckNvZGVBdChyKTtyZXR1cm4gdShpLGUpfWZ1bmN0aW9uIHModCl7dmFyIGU9dC5zcGxpdCgiLyIpWzFdO3JldHVybiBlPyIuIi5jb25jYXQoZSk6IiJ9ZnVuY3Rpb24gYyh0KXt0PXQuc3BsaXQoIiMiKVswXS5zcGxpdCgiPyIpWzBdO3ZhciBlPXQuc3BsaXQoIi8iKTtyZXR1cm4gZVtlLmxlbmd0aC0xXX1mdW5jdGlvbiB1KHQsZSl7aWYoISh0IGluc3RhbmNlb2YgRmlsZSkpe2U9ZXx8dC50eXBlfHwiIjt2YXIgbj0iIi5jb25jYXQoRGF0ZS5ub3coKSkuY29uY2F0KHMoZSkpO3RyeXt0PW5ldyBGaWxlKFt0XSxuLHt0eXBlOmV9KX1jYXRjaChyKXt0PXQgaW5zdGFuY2VvZiBCbG9iP3Q6bmV3IEJsb2IoW3RdLHt0eXBlOmV9KSx0Lm5hbWU9dC5uYW1lfHxufX1yZXR1cm4gdH1mdW5jdGlvbiBsKHQpe2Zvcih2YXIgZSBpbiBpKWlmKE9iamVjdChyWyJpIl0pKGksZSkpe3ZhciBuPWlbZV07aWYobj09PXQpcmV0dXJuIGV9dmFyIG89KHdpbmRvdy5VUkx8fHdpbmRvdy53ZWJraXRVUkwpLmNyZWF0ZU9iamVjdFVSTCh0KTtyZXR1cm4gaVtvXT10LG99ZnVuY3Rpb24gZih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cmV0dXJuIGUuaHJlZj10LGUub3JpZ2luPT09bG9jYXRpb24ub3JpZ2luP1Byb21pc2UucmVzb2x2ZSh0KTpvKHQpLnRoZW4obCl9ZnVuY3Rpb24gZCh0KXsod2luZG93LlVSTHx8d2luZG93LndlYmtpdFVSTCkucmV2b2tlT2JqZWN0VVJMKHQpLGRlbGV0ZSBpW3RdfX0sYmU5MjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXtmdW5jdGlvbiByKGUpe3ZhciBuPWdldEN1cnJlbnRQYWdlcygpO3JldHVybiBuLmxlbmd0aCYmdC5wdWJsaXNoSGFuZGxlcigic2V0UGFnZU1ldGEiLGUsbltuLmxlbmd0aC0xXS4kcGFnZS5pZCkse319bi5kKGUsInNldFBhZ2VNZXRhIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKX0uY2FsbCh0aGlzLG4oIjJjOWYiKSl9LGJlYWI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsImNyZWF0ZUlubmVyQXVkaW9Db250ZXh0IiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKTt2YXIgcj1uKCI3NDVhIik7ZnVuY3Rpb24gaSh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8odCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX1mdW5jdGlvbiBhKHQsZSxuKXtyZXR1cm4gZSYmbyh0LnByb3RvdHlwZSxlKSxuJiZvKHQsbiksdH12YXIgcz1bImNhbnBsYXkiLCJwbGF5IiwicGF1c2UiLCJzdG9wIiwiZW5kZWQiLCJ0aW1lVXBkYXRlIiwiZXJyb3IiLCJ3YWl0aW5nIiwic2Vla2luZyIsInNlZWtlZCJdLGM9W3tuYW1lOiJzcmMiLGNhY2hlOiEwfSx7bmFtZToic3RhcnRUaW1lIixkZWZhdWx0OjAsY2FjaGU6ITB9LHtuYW1lOiJhdXRvcGxheSIsZGVmYXVsdDohMSxjYWNoZTohMH0se25hbWU6Imxvb3AiLGRlZmF1bHQ6ITEsY2FjaGU6ITB9LHtuYW1lOiJvYmV5TXV0ZVN3aXRjaCIsZGVmYXVsdDohMCxyZWFkb25seTohMCxjYWNoZTohMH0se25hbWU6ImR1cmF0aW9uIixyZWFkb25seTohMH0se25hbWU6ImN1cnJlbnRUaW1lIixyZWFkb25seTohMH0se25hbWU6InBhdXNlZCIscmVhZG9ubHk6ITB9LHtuYW1lOiJidWZmZXJlZCIscmVhZG9ubHk6ITB9LHtuYW1lOiJ2b2x1bWUifSx7bmFtZToic2Vzc2lvbkNhdGVnb3J5IixjYWNoZTohMCxkZWZhdWx0OiJwbGF5YmFjayJ9LHtuYW1lOiJwbGF5YmFja1JhdGUiLGNhY2hlOiEwfV0sdT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIG49dGhpcztpKHRoaXMsdCksdGhpcy5pZD1lLHRoaXMuX2NhbGxiYWNrcz17fSx0aGlzLl9vcHRpb25zPXt9LHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7bi5fY2FsbGJhY2tzW3QudG9Mb3dlckNhc2UoKV09W119KSksYy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10Lm5hbWUsaT17Z2V0OmZ1bmN0aW9uKCl7dmFyIG49dC5jYWNoZT90aGlzLl9vcHRpb25zOk9iamVjdChyWyJjIl0pKCJnZXRBdWRpb1N0YXRlIix7YXVkaW9JZDp0aGlzLmlkfSksaT1lIGluIG4/bltlXTp0LmRlZmF1bHQ7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgaSYmInZvbHVtZSIhPT1lP2kvMWUzOml9fTt0LnJlYWRvbmx5fHwoaS5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fb3B0aW9uc1tlXT10LE9iamVjdChyWyJjIl0pKCJzZXRBdWRpb1N0YXRlIixPYmplY3QuYXNzaWduKHt9LHRoaXMuX29wdGlvbnMse2F1ZGlvSWQ6dGhpcy5pZH0pKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLGUsaSl9KSl9cmV0dXJuIGEodCxbe2tleToicGxheSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9vcGVyYXRlKCJwbGF5Iil9fSx7a2V5OiJwYXVzZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9vcGVyYXRlKCJwYXVzZSIpfX0se2tleToic3RvcCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9vcGVyYXRlKCJzdG9wIil9fSx7a2V5OiJzZWVrIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLl9vcGVyYXRlKCJzZWVrIix7Y3VycmVudFRpbWU6MWUzKnR9KX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbCh0aGlzLl9fdGltaW5nKSxPYmplY3QoclsiYyJdKSgiZGVzdHJveUF1ZGlvSW5zdGFuY2UiLHthdWRpb0lkOnRoaXMuaWR9KSxkZWxldGUgZlt0aGlzLmlkXX19LHtrZXk6Il9vcGVyYXRlIix2YWx1ZTpmdW5jdGlvbih0LGUpe09iamVjdChyWyJjIl0pKCJvcGVyYXRlQXVkaW8iLE9iamVjdC5hc3NpZ24oe30sZSx7YXVkaW9JZDp0aGlzLmlkLG9wZXJhdGlvblR5cGU6dH0pKX19XSksdH0oKTtmdW5jdGlvbiBsKHQsZSxuLHIpe3QuX2NhbGxiYWNrc1tlXS5mb3JFYWNoKChmdW5jdGlvbih0KXsiZnVuY3Rpb24iPT09dHlwZW9mIHQmJnQoImVycm9yIj09PWU/e2Vyck1zZzpuLGVyckNvZGU6cn06e30pfSkpfXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dFswXS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyKDEpO3Q9dC50b0xvd2VyQ2FzZSgpLHUucHJvdG90eXBlWyJvbiIuY29uY2F0KGUpXT1mdW5jdGlvbihlKXt0aGlzLl9jYWxsYmFja3NbdF0ucHVzaChlKX0sdS5wcm90b3R5cGVbIm9mZiIuY29uY2F0KGUpXT1mdW5jdGlvbihlKXt2YXIgbj10aGlzLl9jYWxsYmFja3NbdF0scj1uLmluZGV4T2YoZSk7cj49MCYmbi5zcGxpY2UociwxKX19KSksT2JqZWN0KHJbImQiXSkoIm9uQXVkaW9TdGF0ZUNoYW5nZSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXQuc3RhdGUsbj10LmF1ZGlvSWQscj10LmVyck1zZyxpPXQuZXJyQ29kZSxvPWZbbl07aWYobylpZihsKG8sZSxyLGkpLCJwbGF5Ij09PWUpe3ZhciBhPW8uY3VycmVudFRpbWU7bChvLCJ0aW1ldXBkYXRlIiksby5fX3RpbWluZz1zZXRJbnRlcnZhbCgoZnVuY3Rpb24oKXt2YXIgdD1vLmN1cnJlbnRUaW1lO3QhPT1hJiZsKG8sInRpbWV1cGRhdGUiKX0pLDIwMCl9ZWxzZSJwYXVzZSIhPT1lJiYic3RvcCIhPT1lJiYiZXJyb3IiIT09ZXx8Y2xlYXJJbnRlcnZhbChvLl9fdGltaW5nKX0pKTt2YXIgZj1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGQoKXt2YXIgdD1PYmplY3QoclsiYyJdKSgiY3JlYXRlQXVkaW9JbnN0YW5jZSIpLGU9dC5hdWRpb0lkLG49bmV3IHUoZSk7cmV0dXJuIGZbZV09bixufX0sYzA4MTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImRiODciKSxpPW4ubihyKTtpLmF9LGMwOGY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7bi5kKGUsImIiLChmdW5jdGlvbigpe3JldHVybiBzfSkpLG4uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gY30pKTt2YXIgcj17fSxpPXt9O2Z1bmN0aW9uIG8odCl7Zm9yKHZhciBlPVtdLG49WyJ3aWR0aCIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJoZWlnaHQiLCJtaW5IZWlnaHQiLCJtYXhIZWlnaHQiLCJvcmllbnRhdGlvbiJdLHI9MCxpPW47cjxpLmxlbmd0aDtyKyspe3ZhciBvPWlbcl07Im9yaWVudGF0aW9uIiE9PW8mJiIiIT09dFtvXSYmTnVtYmVyKHRbb10pPj0wJiZlLnB1c2goIigiLmNvbmNhdChhKG8pLCI6ICIpLmNvbmNhdChOdW1iZXIodFtvXSksInB4KSIpKSwib3JpZW50YXRpb24iPT09byYmdFtvXSYmZS5wdXNoKCIoIi5jb25jYXQoYShvKSwiOiAiKS5jb25jYXQodFtvXSwiKSIpKX1yZXR1cm4gZT1lLmpvaW4oIiBhbmQgIiksZX1mdW5jdGlvbiBhKHQpe3JldHVybiB0LnJlcGxhY2UoLyhbQS1aXSkvZywiLSQxIikudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBzKGUpe3ZhciBuPWUucmVxSWQsYT1lLm9wdGlvbnMscz1yW25dPXdpbmRvdy5tYXRjaE1lZGlhKG8oYSkpLGM9aVtuXT1mdW5jdGlvbihlKXt0LnB1Ymxpc2hIYW5kbGVyKCJvblJlcXVlc3RNZWRpYVF1ZXJ5T2JzZXJ2ZXIiLHtyZXFJZDpuLHJlczplLm1hdGNoZXN9KX07YyhzKSxzLmFkZExpc3RlbmVyKGMpfWZ1bmN0aW9uIGMoZSl7dmFyIG49ZS5yZXFJZCxvPWlbbl0sYT1yW25dO2EmJihhLnJlbW92ZUxpc3RlbmVyKG8pLGRlbGV0ZSByW25dLHQucHVibGlzaEhhbmRsZXIoIm9uUmVxdWVzdE1lZGlhUXVlcnlPYnNlcnZlciIse3JlcUlkOm4scmVxRW5kOiEwfSkpfX0pLmNhbGwodGhpcyxuKCIzMWQyIikpfSxjMTRiOmZ1bmN0aW9uKHQpe3QuZXhwb3J0cz1KU09OLnBhcnNlKCd7InVuaS5hcHAucXVpdCI6IlB1bHNlIG90cmEgdmV6IHBhcmEgc2FsaXIiLCJ1bmkuYXN5bmMuZXJyb3IiOiJTZSBhZ290w7MgZWwgdGllbXBvIGRlIGNvbmV4acOzbiwgaGFnYSBjbGljIGVuIGxhIHBhbnRhbGxhIHBhcmEgdm9sdmVyIGEgaW50ZW50YXJsby4iLCJ1bmkuc2hvd0FjdGlvblNoZWV0LmNhbmNlbCI6IkNhbmNlbGFyIiwidW5pLnNob3dUb2FzdC51bnBhaXJlZCI6IlRlbmdhIGVuIGN1ZW50YSBxdWUgc2hvd1RvYXN0IGRlYmUgZXN0YXIgZW1wYXJlamFkbyBjb24gaGlkZVRvYXN0IiwidW5pLnNob3dMb2FkaW5nLnVucGFpcmVkIjoiVGVuZ2EgZW4gY3VlbnRhIHF1ZSBzaG93TG9hZGluZyBkZWJlIGVzdGFyIGVtcGFyZWphZG8gY29uIGhpZGVMb2FkaW5nIiwidW5pLnNob3dNb2RhbC5jYW5jZWwiOiJDYW5jZWxhciIsInVuaS5zaG93TW9kYWwuY29uZmlybSI6Ik9LIiwidW5pLmNob29zZUltYWdlLmNhbmNlbCI6IkNhbmNlbGFyIiwidW5pLmNob29zZUltYWdlLnNvdXJjZVR5cGUuYWxidW0iOiLDgWxidW0iLCJ1bmkuY2hvb3NlSW1hZ2Uuc291cmNlVHlwZS5jYW1lcmEiOiJDw6FtYXJhIiwidW5pLmNob29zZVZpZGVvLmNhbmNlbCI6IkNhbmNlbGFyIiwidW5pLmNob29zZVZpZGVvLnNvdXJjZVR5cGUuYWxidW0iOiLDgWxidW0iLCJ1bmkuY2hvb3NlVmlkZW8uc291cmNlVHlwZS5jYW1lcmEiOiJDw6FtYXJhIiwidW5pLmNob29zZUZpbGUubm90VXNlckFjdGl2YXRpb24iOiJFbCBjdWFkcm8gZGUgZGnDoWxvZ28gZGVsIHNlbGVjdG9yIGRlIGFyY2hpdm9zIHNvbG8gc2UgcHVlZGUgbW9zdHJhciBjb24gbGEgYWN0aXZhY2nDs24gZGVsIHVzdWFyaW8iLCJ1bmkucHJldmlld0ltYWdlLmNhbmNlbCI6IkNhbmNlbGFyIiwidW5pLnByZXZpZXdJbWFnZS5idXR0b24uc2F2ZSI6Ikd1YXJkYXIgaW1hZ2VuIiwidW5pLnByZXZpZXdJbWFnZS5zYXZlLnN1Y2Nlc3MiOiJHdWFyZGFkbyBleGl0b3NhbWVudGUiLCJ1bmkucHJldmlld0ltYWdlLnNhdmUuZmFpbCI6IkVycm9yIGFsIGd1YXJkYXIiLCJ1bmkuc2V0Q2xpcGJvYXJkRGF0YS5zdWNjZXNzIjoiQ29udGVuaWRvIGNvcGlhZG8iLCJ1bmkuc2NhbkNvZGUudGl0bGUiOiJDw7NkaWdvIGRlIGVzY2FuZW8iLCJ1bmkuc2NhbkNvZGUuYWxidW0iOiLDgWxidW0iLCJ1bmkuc2NhbkNvZGUuZmFpbCI6IsOJY2hlYyBkZSBsYSByZWNvbm5haXNzYW5jZSIsInVuaS5zY2FuQ29kZS5mbGFzaC5vbiI6IlRvcXVlIHBhcmEgZW5jZW5kZXIgbGEgbHV6IiwidW5pLnNjYW5Db2RlLmZsYXNoLm9mZiI6IlRvcXVlIHBhcmEgYXBhZ2FyIGxhIGx1eiIsInVuaS5zdGFydFNvdGVyQXV0aGVudGljYXRpb24uYXV0aENvbnRlbnQiOiJSZWNvbm9jaW1pZW50byBkZSBodWVsbGFzIGRhY3RpbGFyZXMiLCJ1bmkuc3RhcnRTb3RlckF1dGhlbnRpY2F0aW9uLndhaXRpbmdDb250ZW50IjoiSXJyZWNvbm9jaWJsZSIsInVuaS5waWNrZXIuZG9uZSI6Ik9LIiwidW5pLnBpY2tlci5jYW5jZWwiOiJDYW5jZWxhciIsInVuaS52aWRlby5kYW5tdSI6IkRhbm11IiwidW5pLnZpZGVvLnZvbHVtZSI6IlZvbHVtZW4iLCJ1bmkuYnV0dG9uLmZlZWRiYWNrLnRpdGxlIjoicmVhbGltZW50YWNpw7NuIiwidW5pLmJ1dHRvbi5mZWVkYmFjay5zZW5kIjoiZW52aWFyIiwidW5pLmNob29zZUxvY2F0aW9uLnNlYXJjaCI6IkVuY29udHJhciIsInVuaS5jaG9vc2VMb2NhdGlvbi5jYW5jZWwiOiJDYW5jZWxhciJ9Jyl9LGMxNjU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsInVweDJweCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSk7dmFyIHI9MWUtNCxpPTc1MCxvPSExLGE9MCxzPTA7ZnVuY3Rpb24gYygpe3ZhciB0PXVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLGU9dC5wbGF0Zm9ybSxuPXQucGl4ZWxSYXRpbyxyPXQud2luZG93V2lkdGg7YT1yLHM9bixvPSJpb3MiPT09ZX1mdW5jdGlvbiB1KHQsZSl7cmV0dXJuIHQ9TnVtYmVyKHQpLGlzTmFOKHQpP2U6dH1mdW5jdGlvbiBsKHQsZSl7aWYoMD09PWEmJmMoKSx0PU51bWJlcih0KSwwPT09dClyZXR1cm4gMDt2YXIgbj1fX3VuaUNvbmZpZy5nbG9iYWxTdHlsZXx8X191bmlDb25maWcud2luZG93fHx7fSxsPXUobi5ycHhDYWxjTWF4RGV2aWNlV2lkdGgsOTYwKSxmPXUobi5ycHhDYWxjQmFzZURldmljZVdpZHRoLDM3NSksZD11KG4ucnB4Q2FsY0luY2x1ZGVXaWR0aCw3NTApLGg9ZXx8YTtoPXQ9PT1kfHxoPD1sP2g6Zjt2YXIgcD10L2kqaDtyZXR1cm4gcDwwJiYocD0tcCkscD1NYXRoLmZsb29yKHArciksMD09PXAmJihwPTEhPT1zJiZvPy41OjEpLHQ8MD8tcDpwfX0sYzE5NDpmdW5jdGlvbih0LGUsbil7fSxjMTlkOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3ZhciB0PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7IXR8fCJURVhUQVJFQSIhPT10LnRhZ05hbWUmJiJJTlBVVCIhPT10LnRhZ05hbWV8fHQuYmx1cigpfW4ucihlKSxuLmQoZSwiaGlkZUtleWJvYXJkIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKX0sYzFhYTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXtuLmQoZSwib25XaW5kb3dSZXNpemUiLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZChlLCJvZmZXaW5kb3dSZXNpemUiLChmdW5jdGlvbigpe3JldHVybiBzfSkpO3ZhciByPVtdLGk9W107ZnVuY3Rpb24gbygpe2kucHVzaChzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGNsZWFyVGltZW91dCh0KX0pKSxpLmxlbmd0aD0wO3ZhciBlPXQsbj1lLmludm9rZUNhbGxiYWNrSGFuZGxlcixvPXVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLGE9by53aW5kb3dXaWR0aCxzPW8ud2luZG93SGVpZ2h0LGM9by5zY3JlZW5XaWR0aCx1PW8uc2NyZWVuSGVpZ2h0LGw9OTA9PT1NYXRoLmFicyh3aW5kb3cub3JpZW50YXRpb24pLGY9bD8ibGFuZHNjYXBlIjoicG9ydHJhaXQiO3IuZm9yRWFjaCgoZnVuY3Rpb24odCl7bih0LHtkZXZpY2VPcmllbnRhdGlvbjpmLHNpemU6e3dpbmRvd1dpZHRoOmEsd2luZG93SGVpZ2h0OnMsc2NyZWVuV2lkdGg6YyxzY3JlZW5IZWlnaHQ6dX19KX0pKX0pLDIwKSl9ZnVuY3Rpb24gYSh0KXtyLmxlbmd0aHx8d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbyksci5wdXNoKHQpfWZ1bmN0aW9uIHModCl7ci5zcGxpY2Uoci5pbmRleE9mKHQpLDEpLHIubGVuZ3RofHx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixvKX19LmNhbGwodGhpcyxuKCIyYzlmIikpfSxjMWYxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJ1bmktc3dpdGNoIix0Ll9nKHthdHRyczp7aWQ6dC5pZCxkaXNhYmxlZDp0LmRpc2FibGVkfSxvbjp7Y2xpY2s6dC5fb25DbGlja319LHQuJGxpc3RlbmVycyksW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktc3dpdGNoLXdyYXBwZXIifSxbbigiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6InN3aXRjaCI9PT10LnR5cGUsZXhwcmVzc2lvbjoidHlwZSA9PT0gJ3N3aXRjaCcifV0sc3RhdGljQ2xhc3M6InVuaS1zd2l0Y2gtaW5wdXQiLGNsYXNzOlt0LnN3aXRjaENoZWNrZWQ/InVuaS1zd2l0Y2gtaW5wdXQtY2hlY2tlZCI6IiJdLHN0eWxlOnQuY2hlY2tlZENvbG9yfSksbigiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ImNoZWNrYm94Ij09PXQudHlwZSxleHByZXNzaW9uOiJ0eXBlID09PSAnY2hlY2tib3gnIn1dLHN0YXRpY0NsYXNzOiJ1bmktY2hlY2tib3gtaW5wdXQiLGNsYXNzOlt0LnN3aXRjaENoZWNrZWQ/InVuaS1jaGVja2JveC1pbnB1dC1jaGVja2VkIjoiIl0sc3R5bGU6e2NvbG9yOnQuY29sb3J9fSldKV0pfSxpPVtdLG89bigiOTA5ZSIpLGE9e25hbWU6IlN3aXRjaCIsbWl4aW5zOltvWyJhIl0sb1siZiJdXSxwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sY2hlY2tlZDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LHR5cGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6InN3aXRjaCJ9LGlkOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxkaXNhYmxlZDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LGNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntzd2l0Y2hDaGVja2VkOnRoaXMuY2hlY2tlZH19LGNvbXB1dGVkOntjaGVja2VkQ29sb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zd2l0Y2hDaGVja2VkJiZ0aGlzLmNvbG9yP3tiYWNrZ3JvdW5kQ29sb3I6dGhpcy5jb2xvcixib3JkZXJDb2xvcjp0aGlzLmNvbG9yfTp7fX19LHdhdGNoOntjaGVja2VkOmZ1bmN0aW9uKHQpe3RoaXMuc3dpdGNoQ2hlY2tlZD10fX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuJGRpc3BhdGNoKCJGb3JtIiwidW5pLWZvcm0tZ3JvdXAtdXBkYXRlIix7dHlwZToiYWRkIix2bTp0aGlzfSl9LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLiRkaXNwYXRjaCgiRm9ybSIsInVuaS1mb3JtLWdyb3VwLXVwZGF0ZSIse3R5cGU6InJlbW92ZSIsdm06dGhpc30pfSxsaXN0ZW5lcnM6eyJsYWJlbC1jbGljayI6Il9vbkNsaWNrIiwiQGxhYmVsLWNsaWNrIjoiX29uQ2xpY2sifSxtZXRob2RzOntfb25DbGljazpmdW5jdGlvbih0KXt0aGlzLmRpc2FibGVkfHwodGhpcy5zd2l0Y2hDaGVja2VkPSF0aGlzLnN3aXRjaENoZWNrZWQsdGhpcy4kdHJpZ2dlcigiY2hhbmdlIix0LHt2YWx1ZTp0aGlzLnN3aXRjaENoZWNrZWR9KSl9LF9yZXNldEZvcm1EYXRhOmZ1bmN0aW9uKCl7dGhpcy5zd2l0Y2hDaGVja2VkPSExfSxfZ2V0Rm9ybURhdGE6ZnVuY3Rpb24oKXt2YXIgdD17fTtyZXR1cm4iIiE9PXRoaXMubmFtZSYmKHQudmFsdWU9dGhpcy5zd2l0Y2hDaGVja2VkLHQua2V5PXRoaXMubmFtZSksdH19fSxzPWEsYz0obigiMGExOCIpLG4oIjg4NDQiKSksdT1PYmplY3QoY1siYSJdKShzLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPXUuZXhwb3J0c30sYzIzMzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0KXtuLmQoZSwib25OZXR3b3JrU3RhdHVzQ2hhbmdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKSxuLmQoZSwib2ZmTmV0d29ya1N0YXR1c0NoYW5nZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSksbi5kKGUsImdldE5ldHdvcmtUeXBlIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKTt2YXIgcj10LGk9ci5pbnZva2VDYWxsYmFja0hhbmRsZXIsbz1bXTtmdW5jdGlvbiBhKCl7dmFyIHQ9dSgpLGU9dC5uZXR3b3JrVHlwZTtvLmZvckVhY2goKGZ1bmN0aW9uKHQpe2kodCx7ZXJyTXNnOiJvbk5ldHdvcmtTdGF0dXNDaGFuZ2U6b2siLGlzQ29ubmVjdGVkOiJub25lIiE9PWUsbmV0d29ya1R5cGU6ZX0pfSkpfWZ1bmN0aW9uIHModCl7dmFyIGU9bmF2aWdhdG9yLmNvbm5lY3Rpb258fG5hdmlnYXRvci53ZWJraXRDb25uZWN0aW9uO28ucHVzaCh0KSxlP2UuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixhKTood2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm9mZmxpbmUiLGEpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJvbmxpbmUiLGEpKX1mdW5jdGlvbiBjKHQpe2lmKHQpe3ZhciBlPW8uaW5kZXhPZih0KTtlPj0wJiZvLnNwbGljZShlLDEpfWlmKCFvLmxlbmd0aCl7dmFyIG49bmF2aWdhdG9yLmNvbm5lY3Rpb258fG5hdmlnYXRvci53ZWJraXRDb25uZWN0aW9uO24/bi5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGEpOih3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigib2ZmbGluZSIsYSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm9ubGluZSIsYSkpfX1mdW5jdGlvbiB1KCl7dmFyIHQ9bmF2aWdhdG9yLmNvbm5lY3Rpb258fG5hdmlnYXRvci53ZWJraXRDb25uZWN0aW9uLGU9InVua25vd24iO3JldHVybiB0PyhlPXQudHlwZSwiY2VsbHVsYXIiPT09ZSYmdC5lZmZlY3RpdmVUeXBlP2U9dC5lZmZlY3RpdmVUeXBlLnJlcGxhY2UoInNsb3ctIiwiIik6WyJub25lIiwid2lmaSJdLmluY2x1ZGVzKGUpfHwoZT0idW5rbm93biIpKTohMT09PW5hdmlnYXRvci5vbkxpbmUmJihlPSJub25lIikse2Vyck1zZzoiZ2V0TmV0d29ya1R5cGU6b2siLG5ldHdvcmtUeXBlOmV9fX0uY2FsbCh0aGlzLG4oIjJjOWYiKSl9LGMyZWY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI2MTQwIiksaT1uLm4ocik7aS5hfSxjNDkwOmZ1bmN0aW9uKHQsZSxuKXt9LGM0Y2Q6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaSh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fWZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiBlJiZpKHQucHJvdG90eXBlLGUpLG4mJmkodCxuKSx0fW4ucihlKSxuLmQoZSwiZ2V0VXBkYXRlTWFuYWdlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSk7dmFyIGEscz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtyKHRoaXMsdCl9cmV0dXJuIG8odCxbe2tleToib25DaGVja0ZvclVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJvblVwZGF0ZVJlYWR5Iix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6Im9uVXBkYXRlRmFpbGVkIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6ImFwcGx5VXBkYXRlIix2YWx1ZTpmdW5jdGlvbigpe319XSksdH0oKTtmdW5jdGlvbiBjKCl7cmV0dXJuIGF8fChhPW5ldyBzKX19LGM2ZWI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsImxvYWRGb250RmFjZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSk7dmFyIHI9e2ZhbWlseTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LHNvdXJjZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LGRlc2M6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxzdWNjZXNzOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxmYWlsOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxjb21wbGV0ZTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX19fSxjNzAwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZDRjOSIpLGk9bigiNGJhNiIpO2Z1bmN0aW9uIG8odCxlLG4pe3RoaXMuX2V4dGVudD10LHRoaXMuX2ZyaWN0aW9uPWV8fG5ldyByWyJhIl0oLjAxKSx0aGlzLl9zcHJpbmc9bnx8bmV3IGlbImEiXSgxLDkwLDIwKSx0aGlzLl9zdGFydFRpbWU9MCx0aGlzLl9zcHJpbmdpbmc9ITEsdGhpcy5fc3ByaW5nT2Zmc2V0PTB9ZnVuY3Rpb24gYSh0LGUsbil7ZnVuY3Rpb24gcih0LGUsbixpKXtpZighdHx8IXQuY2FuY2VsbGVkKXtuKGUpO3ZhciBvPWUuZG9uZSgpO298fHQuY2FuY2VsbGVkfHwodC5pZD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoci5iaW5kKG51bGwsdCxlLG4saSkpKSxvJiZpJiZpKGUpfX1mdW5jdGlvbiBpKHQpe3QmJnQuaWQmJmNhbmNlbEFuaW1hdGlvbkZyYW1lKHQuaWQpLHQmJih0LmNhbmNlbGxlZD0hMCl9dmFyIG89e2lkOjAsY2FuY2VsbGVkOiExfTtyZXR1cm4gcihvLHQsZSxuKSx7Y2FuY2VsOmkuYmluZChudWxsLG8pLG1vZGVsOnR9fWZ1bmN0aW9uIHModCxlKXtlPWV8fHt9LHRoaXMuX2VsZW1lbnQ9dCx0aGlzLl9vcHRpb25zPWUsdGhpcy5fZW5hYmxlU25hcD1lLmVuYWJsZVNuYXB8fCExLHRoaXMuX2l0ZW1TaXplPWUuaXRlbVNpemV8fDAsdGhpcy5fZW5hYmxlWD1lLmVuYWJsZVh8fCExLHRoaXMuX2VuYWJsZVk9ZS5lbmFibGVZfHwhMSx0aGlzLl9zaG91bGREaXNwYXRjaFNjcm9sbEV2ZW50PSEhZS5vblNjcm9sbCx0aGlzLl9lbmFibGVYPyh0aGlzLl9leHRlbnQ9KGUuc2Nyb2xsV2lkdGh8fHRoaXMuX2VsZW1lbnQub2Zmc2V0V2lkdGgpLXRoaXMuX2VsZW1lbnQucGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aCx0aGlzLl9zY3JvbGxXaWR0aD1lLnNjcm9sbFdpZHRoKToodGhpcy5fZXh0ZW50PShlLnNjcm9sbEhlaWdodHx8dGhpcy5fZWxlbWVudC5vZmZzZXRIZWlnaHQpLXRoaXMuX2VsZW1lbnQucGFyZW50RWxlbWVudC5vZmZzZXRIZWlnaHQsdGhpcy5fc2Nyb2xsSGVpZ2h0PWUuc2Nyb2xsSGVpZ2h0KSx0aGlzLl9wb3NpdGlvbj0wLHRoaXMuX3Njcm9sbD1uZXcgbyh0aGlzLl9leHRlbnQsZS5mcmljdGlvbixlLnNwcmluZyksdGhpcy5fb25UcmFuc2l0aW9uRW5kPXRoaXMub25UcmFuc2l0aW9uRW5kLmJpbmQodGhpcyksdGhpcy51cGRhdGVQb3NpdGlvbigpfW8ucHJvdG90eXBlLnNuYXA9ZnVuY3Rpb24odCxlKXt0aGlzLl9zcHJpbmdPZmZzZXQ9MCx0aGlzLl9zcHJpbmdpbmc9ITAsdGhpcy5fc3ByaW5nLnNuYXAodCksdGhpcy5fc3ByaW5nLnNldEVuZChlKX0sby5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dGhpcy5fZnJpY3Rpb24uc2V0KHQsZSksdD4wJiZlPj0wPyh0aGlzLl9zcHJpbmdPZmZzZXQ9MCx0aGlzLl9zcHJpbmdpbmc9ITAsdGhpcy5fc3ByaW5nLnNuYXAodCksdGhpcy5fc3ByaW5nLnNldEVuZCgwKSk6dDwtdGhpcy5fZXh0ZW50JiZlPD0wPyh0aGlzLl9zcHJpbmdPZmZzZXQ9MCx0aGlzLl9zcHJpbmdpbmc9ITAsdGhpcy5fc3ByaW5nLnNuYXAodCksdGhpcy5fc3ByaW5nLnNldEVuZCgtdGhpcy5fZXh0ZW50KSk6dGhpcy5fc3ByaW5naW5nPSExLHRoaXMuX3N0YXJ0VGltZT0obmV3IERhdGUpLmdldFRpbWUoKX0sby5wcm90b3R5cGUueD1mdW5jdGlvbih0KXtpZighdGhpcy5fc3RhcnRUaW1lKXJldHVybiAwO2lmKHR8fCh0PSgobmV3IERhdGUpLmdldFRpbWUoKS10aGlzLl9zdGFydFRpbWUpLzFlMyksdGhpcy5fc3ByaW5naW5nKXJldHVybiB0aGlzLl9zcHJpbmcueCgpK3RoaXMuX3NwcmluZ09mZnNldDt2YXIgZT10aGlzLl9mcmljdGlvbi54KHQpLG49dGhpcy5keCh0KTtyZXR1cm4oZT4wJiZuPj0wfHxlPC10aGlzLl9leHRlbnQmJm48PTApJiYodGhpcy5fc3ByaW5naW5nPSEwLHRoaXMuX3NwcmluZy5zZXRFbmQoMCxuKSxlPC10aGlzLl9leHRlbnQ/dGhpcy5fc3ByaW5nT2Zmc2V0PS10aGlzLl9leHRlbnQ6dGhpcy5fc3ByaW5nT2Zmc2V0PTAsZT10aGlzLl9zcHJpbmcueCgpK3RoaXMuX3NwcmluZ09mZnNldCksZX0sby5wcm90b3R5cGUuZHg9ZnVuY3Rpb24odCl7dmFyIGU9MDtyZXR1cm4gZT10aGlzLl9sYXN0VGltZT09PXQ/dGhpcy5fbGFzdER4OnRoaXMuX3NwcmluZ2luZz90aGlzLl9zcHJpbmcuZHgodCk6dGhpcy5fZnJpY3Rpb24uZHgodCksdGhpcy5fbGFzdFRpbWU9dCx0aGlzLl9sYXN0RHg9ZSxlfSxvLnByb3RvdHlwZS5kb25lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NwcmluZ2luZz90aGlzLl9zcHJpbmcuZG9uZSgpOnRoaXMuX2ZyaWN0aW9uLmRvbmUoKX0sby5wcm90b3R5cGUuc2V0VmVsb2NpdHlCeUVuZD1mdW5jdGlvbih0KXt0aGlzLl9mcmljdGlvbi5zZXRWZWxvY2l0eUJ5RW5kKHQpfSxvLnByb3RvdHlwZS5jb25maWd1cmF0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZnJpY3Rpb24uY29uZmlndXJhdGlvbigpO3JldHVybiB0LnB1c2guYXBwbHkodCx0aGlzLl9zcHJpbmcuY29uZmlndXJhdGlvbigpKSx0fSxzLnByb3RvdHlwZS5vblRvdWNoU3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9zdGFydFBvc2l0aW9uPXRoaXMuX3Bvc2l0aW9uLHRoaXMuX2xhc3RDaGFuZ2VQb3M9dGhpcy5fc3RhcnRQb3NpdGlvbix0aGlzLl9zdGFydFBvc2l0aW9uPjA/dGhpcy5fc3RhcnRQb3NpdGlvbi89LjU6dGhpcy5fc3RhcnRQb3NpdGlvbjwtdGhpcy5fZXh0ZW50JiYodGhpcy5fc3RhcnRQb3NpdGlvbj0odGhpcy5fc3RhcnRQb3NpdGlvbit0aGlzLl9leHRlbnQpLy41LXRoaXMuX2V4dGVudCksdGhpcy5fYW5pbWF0aW9uJiYodGhpcy5fYW5pbWF0aW9uLmNhbmNlbCgpLHRoaXMuX3Njcm9sbGluZz0hMSksdGhpcy51cGRhdGVQb3NpdGlvbigpfSxzLnByb3RvdHlwZS5vblRvdWNoTW92ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX3N0YXJ0UG9zaXRpb247dGhpcy5fZW5hYmxlWD9uKz10OnRoaXMuX2VuYWJsZVkmJihuKz1lKSxuPjA/bio9LjU6bjwtdGhpcy5fZXh0ZW50JiYobj0uNSoobit0aGlzLl9leHRlbnQpLXRoaXMuX2V4dGVudCksdGhpcy5fcG9zaXRpb249bix0aGlzLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5kaXNwYXRjaFNjcm9sbCgpfSxzLnByb3RvdHlwZS5vblRvdWNoRW5kPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzO2lmKHRoaXMuX2VuYWJsZVNuYXAmJnRoaXMuX3Bvc2l0aW9uPi10aGlzLl9leHRlbnQmJnRoaXMuX3Bvc2l0aW9uPDApe2lmKHRoaXMuX2VuYWJsZVkmJihNYXRoLmFicyhlKTx0aGlzLl9pdGVtU2l6ZSYmTWF0aC5hYnMobi55KTwzMDB8fE1hdGguYWJzKG4ueSk8MTUwKSlyZXR1cm4gdm9pZCB0aGlzLnNuYXAoKTtpZih0aGlzLl9lbmFibGVYJiYoTWF0aC5hYnModCk8dGhpcy5faXRlbVNpemUmJk1hdGguYWJzKG4ueCk8MzAwfHxNYXRoLmFicyhuLngpPDE1MCkpcmV0dXJuIHZvaWQgdGhpcy5zbmFwKCl9aWYodGhpcy5fZW5hYmxlWD90aGlzLl9zY3JvbGwuc2V0KHRoaXMuX3Bvc2l0aW9uLG4ueCk6dGhpcy5fZW5hYmxlWSYmdGhpcy5fc2Nyb2xsLnNldCh0aGlzLl9wb3NpdGlvbixuLnkpLHRoaXMuX2VuYWJsZVNuYXApe3ZhciBpPXRoaXMuX3Njcm9sbC5fZnJpY3Rpb24ueCgxMDApLG89aSV0aGlzLl9pdGVtU2l6ZSxzPU1hdGguYWJzKG8pPnRoaXMuX2l0ZW1TaXplLzI/aS0odGhpcy5faXRlbVNpemUtTWF0aC5hYnMobykpOmktbztzPD0wJiZzPj0tdGhpcy5fZXh0ZW50JiZ0aGlzLl9zY3JvbGwuc2V0VmVsb2NpdHlCeUVuZChzKX10aGlzLl9sYXN0VGltZT1EYXRlLm5vdygpLHRoaXMuX2xhc3REZWxheT0wLHRoaXMuX3Njcm9sbGluZz0hMCx0aGlzLl9sYXN0Q2hhbmdlUG9zPXRoaXMuX3Bvc2l0aW9uLHRoaXMuX2xhc3RJZHg9TWF0aC5mbG9vcihNYXRoLmFicyh0aGlzLl9wb3NpdGlvbi90aGlzLl9pdGVtU2l6ZSkpLHRoaXMuX2FuaW1hdGlvbj1hKHRoaXMuX3Njcm9sbCwoZnVuY3Rpb24oKXt2YXIgdD1EYXRlLm5vdygpLGU9KHQtci5fc2Nyb2xsLl9zdGFydFRpbWUpLzFlMyxuPXIuX3Njcm9sbC54KGUpO3IuX3Bvc2l0aW9uPW4sci51cGRhdGVQb3NpdGlvbigpO3ZhciBpPXIuX3Njcm9sbC5keChlKTtyLl9zaG91bGREaXNwYXRjaFNjcm9sbEV2ZW50JiZ0LXIuX2xhc3RUaW1lPnIuX2xhc3REZWxheSYmKHIuZGlzcGF0Y2hTY3JvbGwoKSxyLl9sYXN0RGVsYXk9TWF0aC5hYnMoMmUzL2kpLHIuX2xhc3RUaW1lPXQpfSksKGZ1bmN0aW9uKCl7ci5fZW5hYmxlU25hcCYmKHM8PTAmJnM+PS1yLl9leHRlbnQmJihyLl9wb3NpdGlvbj1zLHIudXBkYXRlUG9zaXRpb24oKSksImZ1bmN0aW9uIj09PXR5cGVvZiByLl9vcHRpb25zLm9uU25hcCYmci5fb3B0aW9ucy5vblNuYXAoTWF0aC5mbG9vcihNYXRoLmFicyhyLl9wb3NpdGlvbikvci5faXRlbVNpemUpKSksci5fc2hvdWxkRGlzcGF0Y2hTY3JvbGxFdmVudCYmci5kaXNwYXRjaFNjcm9sbCgpLHIuX3Njcm9sbGluZz0hMX0pKX0scy5wcm90b3R5cGUub25UcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKCl7dGhpcy5fZWxlbWVudC5zdHlsZS50cmFuc2l0aW9uPSIiLHRoaXMuX2VsZW1lbnQuc3R5bGUud2Via2l0VHJhbnNpdGlvbj0iIix0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLHRoaXMuX29uVHJhbnNpdGlvbkVuZCksdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIix0aGlzLl9vblRyYW5zaXRpb25FbmQpLHRoaXMuX3NuYXBwaW5nJiYodGhpcy5fc25hcHBpbmc9ITEpLHRoaXMuZGlzcGF0Y2hTY3JvbGwoKX0scy5wcm90b3R5cGUuc25hcD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2l0ZW1TaXplLGU9dGhpcy5fcG9zaXRpb24ldCxuPU1hdGguYWJzKGUpPnRoaXMuX2l0ZW1TaXplLzI/dGhpcy5fcG9zaXRpb24tKHQtTWF0aC5hYnMoZSkpOnRoaXMuX3Bvc2l0aW9uLWU7dGhpcy5fcG9zaXRpb24hPT1uJiYodGhpcy5fc25hcHBpbmc9ITAsdGhpcy5zY3JvbGxUbygtbiksImZ1bmN0aW9uIj09PXR5cGVvZiB0aGlzLl9vcHRpb25zLm9uU25hcCYmdGhpcy5fb3B0aW9ucy5vblNuYXAoTWF0aC5mbG9vcihNYXRoLmFicyh0aGlzLl9wb3NpdGlvbikvdGhpcy5faXRlbVNpemUpKSl9LHMucHJvdG90eXBlLnNjcm9sbFRvPWZ1bmN0aW9uKHQsZSl7dGhpcy5fYW5pbWF0aW9uJiYodGhpcy5fYW5pbWF0aW9uLmNhbmNlbCgpLHRoaXMuX3Njcm9sbGluZz0hMSksIm51bWJlciI9PT10eXBlb2YgdCYmKHRoaXMuX3Bvc2l0aW9uPS10KSx0aGlzLl9wb3NpdGlvbjwtdGhpcy5fZXh0ZW50P3RoaXMuX3Bvc2l0aW9uPS10aGlzLl9leHRlbnQ6dGhpcy5fcG9zaXRpb24+MCYmKHRoaXMuX3Bvc2l0aW9uPTApLHRoaXMuX2VsZW1lbnQuc3R5bGUudHJhbnNpdGlvbj0idHJhbnNmb3JtICIrKGV8fC4yKSsicyBlYXNlLW91dCIsdGhpcy5fZWxlbWVudC5zdHlsZS53ZWJraXRUcmFuc2l0aW9uPSItd2Via2l0LXRyYW5zZm9ybSAiKyhlfHwuMikrInMgZWFzZS1vdXQiLHRoaXMudXBkYXRlUG9zaXRpb24oKSx0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLHRoaXMuX29uVHJhbnNpdGlvbkVuZCksdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIix0aGlzLl9vblRyYW5zaXRpb25FbmQpfSxzLnByb3RvdHlwZS5kaXNwYXRjaFNjcm9sbD1mdW5jdGlvbigpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgdGhpcy5fb3B0aW9ucy5vblNjcm9sbCYmTWF0aC5yb3VuZCh0aGlzLl9sYXN0UG9zKSE9PU1hdGgucm91bmQodGhpcy5fcG9zaXRpb24pKXt0aGlzLl9sYXN0UG9zPXRoaXMuX3Bvc2l0aW9uO3ZhciB0PXt0YXJnZXQ6e3Njcm9sbExlZnQ6dGhpcy5fZW5hYmxlWD8tdGhpcy5fcG9zaXRpb246MCxzY3JvbGxUb3A6dGhpcy5fZW5hYmxlWT8tdGhpcy5fcG9zaXRpb246MCxzY3JvbGxIZWlnaHQ6dGhpcy5fc2Nyb2xsSGVpZ2h0fHx0aGlzLl9lbGVtZW50Lm9mZnNldEhlaWdodCxzY3JvbGxXaWR0aDp0aGlzLl9zY3JvbGxXaWR0aHx8dGhpcy5fZWxlbWVudC5vZmZzZXRXaWR0aCxvZmZzZXRIZWlnaHQ6dGhpcy5fZWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldEhlaWdodCxvZmZzZXRXaWR0aDp0aGlzLl9lbGVtZW50LnBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGh9fTt0aGlzLl9vcHRpb25zLm9uU2Nyb2xsKHQpfX0scy5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj0wLGk9dGhpcy5fcG9zaXRpb247dGhpcy5fZW5hYmxlWD8ocj10aGlzLl9lbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoPyhlfHx0aGlzLl9lbGVtZW50Lm9mZnNldFdpZHRoKS10aGlzLl9lbGVtZW50LnBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGg6MCx0aGlzLl9zY3JvbGxXaWR0aD1lKToocj10aGlzLl9lbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoPyhlfHx0aGlzLl9lbGVtZW50Lm9mZnNldEhlaWdodCktdGhpcy5fZWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldEhlaWdodDowLHRoaXMuX3Njcm9sbEhlaWdodD1lKSwibnVtYmVyIj09PXR5cGVvZiB0JiYodGhpcy5fcG9zaXRpb249LXQpLHRoaXMuX3Bvc2l0aW9uPC1yP3RoaXMuX3Bvc2l0aW9uPS1yOnRoaXMuX3Bvc2l0aW9uPjAmJih0aGlzLl9wb3NpdGlvbj0wKSx0aGlzLl9pdGVtU2l6ZT1ufHx0aGlzLl9pdGVtU2l6ZSx0aGlzLnVwZGF0ZVBvc2l0aW9uKCksaSE9PXRoaXMuX3Bvc2l0aW9uJiYodGhpcy5kaXNwYXRjaFNjcm9sbCgpLCJmdW5jdGlvbiI9PT10eXBlb2YgdGhpcy5fb3B0aW9ucy5vblNuYXAmJnRoaXMuX29wdGlvbnMub25TbmFwKE1hdGguZmxvb3IoTWF0aC5hYnModGhpcy5fcG9zaXRpb24pL3RoaXMuX2l0ZW1TaXplKSkpLHRoaXMuX2V4dGVudD1yLHRoaXMuX3Njcm9sbC5fZXh0ZW50PXJ9LHMucHJvdG90eXBlLnVwZGF0ZVBvc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9IiI7dGhpcy5fZW5hYmxlWD90PSJ0cmFuc2xhdGVYKCIrdGhpcy5fcG9zaXRpb24rInB4KSB0cmFuc2xhdGVaKDApIjp0aGlzLl9lbmFibGVZJiYodD0idHJhbnNsYXRlWSgiK3RoaXMuX3Bvc2l0aW9uKyJweCkgdHJhbnNsYXRlWigwKSIpLHRoaXMuX2VsZW1lbnQuc3R5bGUud2Via2l0VHJhbnNmb3JtPXQsdGhpcy5fZWxlbWVudC5zdHlsZS50cmFuc2Zvcm09dH0scy5wcm90b3R5cGUuaXNTY3JvbGxpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2Nyb2xsaW5nfHx0aGlzLl9zbmFwcGluZ30sZVsiYSJdPXttZXRob2RzOntpbml0U2Nyb2xsZXI6ZnVuY3Rpb24odCxlKXt0aGlzLl90b3VjaEluZm89e3RyYWNraW5nSUQ6LTEsbWF4RHk6MCxtYXhEeDowfSx0aGlzLl9zY3JvbGxlcj1uZXcgcyh0LGUpLHRoaXMuX19oYW5kbGVUb3VjaFN0YXJ0PXRoaXMuX2hhbmRsZVRvdWNoU3RhcnQuYmluZCh0aGlzKSx0aGlzLl9faGFuZGxlVG91Y2hNb3ZlPXRoaXMuX2hhbmRsZVRvdWNoTW92ZS5iaW5kKHRoaXMpLHRoaXMuX19oYW5kbGVUb3VjaEVuZD10aGlzLl9oYW5kbGVUb3VjaEVuZC5iaW5kKHRoaXMpLHRoaXMuX2luaXRlZFNjcm9sbGVyPSEwfSxfZmluZERlbHRhOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RvdWNoSW5mbztyZXR1cm4ibW92ZSI9PT10LmRldGFpbC5zdGF0ZXx8ImVuZCI9PT10LmRldGFpbC5zdGF0ZT97eDp0LmRldGFpbC5keCx5OnQuZGV0YWlsLmR5fTp7eDp0LnNjcmVlblgtZS54LHk6dC5zY3JlZW5ZLWUueX19LF9oYW5kbGVUb3VjaFN0YXJ0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RvdWNoSW5mbyxuPXRoaXMuX3Njcm9sbGVyO24mJigic3RhcnQiPT09dC5kZXRhaWwuc3RhdGU/KGUudHJhY2tpbmdJRD0idG91Y2giLGUueD10LmRldGFpbC54LGUueT10LmRldGFpbC55KTooZS50cmFja2luZ0lEPSJtb3VzZSIsZS54PXQuc2NyZWVuWCxlLnk9dC5zY3JlZW5ZKSxlLm1heER4PTAsZS5tYXhEeT0wLGUuaGlzdG9yeVg9WzBdLGUuaGlzdG9yeVk9WzBdLGUuaGlzdG9yeVRpbWU9W3QuZGV0YWlsLnRpbWVTdGFtcF0sZS5saXN0ZW5lcj1uLG4ub25Ub3VjaFN0YXJ0JiZuLm9uVG91Y2hTdGFydCgpLHQucHJldmVudERlZmF1bHQoKSl9LF9oYW5kbGVUb3VjaE1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdG91Y2hJbmZvO2lmKC0xIT09ZS50cmFja2luZ0lEKXt0LnByZXZlbnREZWZhdWx0KCk7dmFyIG49dGhpcy5fZmluZERlbHRhKHQpO2lmKG4pe2ZvcihlLm1heER5PU1hdGgubWF4KGUubWF4RHksTWF0aC5hYnMobi55KSksZS5tYXhEeD1NYXRoLm1heChlLm1heER4LE1hdGguYWJzKG4ueCkpLGUuaGlzdG9yeVgucHVzaChuLngpLGUuaGlzdG9yeVkucHVzaChuLnkpLGUuaGlzdG9yeVRpbWUucHVzaCh0LmRldGFpbC50aW1lU3RhbXApO2UuaGlzdG9yeVRpbWUubGVuZ3RoPjEwOyllLmhpc3RvcnlUaW1lLnNoaWZ0KCksZS5oaXN0b3J5WC5zaGlmdCgpLGUuaGlzdG9yeVkuc2hpZnQoKTtlLmxpc3RlbmVyJiZlLmxpc3RlbmVyLm9uVG91Y2hNb3ZlJiZlLmxpc3RlbmVyLm9uVG91Y2hNb3ZlKG4ueCxuLnksdC5kZXRhaWwudGltZVN0YW1wKX19fSxfaGFuZGxlVG91Y2hFbmQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdG91Y2hJbmZvO2lmKC0xIT09ZS50cmFja2luZ0lEKXt0LnByZXZlbnREZWZhdWx0KCk7dmFyIG49dGhpcy5fZmluZERlbHRhKHQpO2lmKG4pe3ZhciByPWUubGlzdGVuZXI7ZS50cmFja2luZ0lEPS0xLGUubGlzdGVuZXI9bnVsbDt2YXIgaT1lLmhpc3RvcnlUaW1lLmxlbmd0aCxvPXt4OjAseTowfTtpZihpPjIpZm9yKHZhciBhPWUuaGlzdG9yeVRpbWUubGVuZ3RoLTEscz1lLmhpc3RvcnlUaW1lW2FdLGM9ZS5oaXN0b3J5WFthXSx1PWUuaGlzdG9yeVlbYV07YT4wOyl7YS0tO3ZhciBsPWUuaGlzdG9yeVRpbWVbYV0sZj1zLWw7aWYoZj4zMCYmZjw1MCl7by54PShjLWUuaGlzdG9yeVhbYV0pLyhmLzFlMyksby55PSh1LWUuaGlzdG9yeVlbYV0pLyhmLzFlMyk7YnJlYWt9fWUuaGlzdG9yeVRpbWU9W10sZS5oaXN0b3J5WD1bXSxlLmhpc3RvcnlZPVtdLHImJnIub25Ub3VjaEVuZCYmci5vblRvdWNoRW5kKG4ueCxuLnksbyl9fX19fX0sYzgwYzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKSxuLmQoZSwiZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKGUsImMiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLCJlIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwiYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSk7dmFyIHI9NDQsaT01MCxvPTc2OCxhPSJVTklfTE9DQUxFIixzPSJvblRoZW1lQ2hhbmdlIn0sYzg1NjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIGkodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gYSh0LGUsbil7cmV0dXJuIGUmJm8odC5wcm90b3R5cGUsZSksbiYmbyh0LG4pLHR9ZnVuY3Rpb24gcyh0LGUsbil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1uLHR9bi5kKGUsImNvbm5lY3RTb2NrZXQiLChmdW5jdGlvbigpe3JldHVybiBwfSkpLG4uZChlLCJzZW5kU29ja2V0TWVzc2FnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSksbi5kKGUsImNsb3NlU29ja2V0IiwoZnVuY3Rpb24oKXtyZXR1cm4gZ30pKSxuLmQoZSwib25Tb2NrZXRPcGVuIiwoZnVuY3Rpb24oKXtyZXR1cm4gYn0pKSxuLmQoZSwib25Tb2NrZXRFcnJvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIHl9KSksbi5kKGUsIm9uU29ja2V0TWVzc2FnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIF99KSksbi5kKGUsIm9uU29ja2V0Q2xvc2UiLChmdW5jdGlvbigpe3JldHVybiB3fSkpO3ZhciBjPXQsdT1jLmludm9rZUNhbGxiYWNrSGFuZGxlcixsPVsib3BlbiIsImNsb3NlIiwiZXJyb3IiLCJtZXNzYWdlIl0sZj17fSxkPVtdLGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbixvKXt2YXIgYSxjPXRoaXM7aSh0aGlzLHQpLHModGhpcywiX3dlYlNvY2tldCIsdm9pZCAwKTt0cnl7dmFyIGg9dGhpcy5fd2ViU29ja2V0PW5ldyBXZWJTb2NrZXQoZSxuKTtoLmJpbmFyeVR5cGU9ImFycmF5YnVmZmVyIix0aGlzLl9jYWxsYmFja3M9e30sbC5mb3JFYWNoKChmdW5jdGlvbih0KXtjLl9jYWxsYmFja3NbdF09W10saC5hZGRFdmVudExpc3RlbmVyKHQsKGZ1bmN0aW9uKGUpe3ZhciBuPWUuZGF0YSxpPWUuY29kZSxvPWUucmVhc29uLGE9Im1lc3NhZ2UiPT09dD97ZGF0YTpufToiY2xvc2UiPT09dD97Y29kZTppLHJlYXNvbjpvfTp7fTtpZihjLl9jYWxsYmFja3NbdF0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dHJ5e2UoYSl9Y2F0Y2gobil7ci5lcnJvcigidGhpcmRTY3JpcHRFcnJvclxuIi5jb25jYXQobiwiO2F0IHNvY2tldFRhc2sub24iKS5jb25jYXQodFswXS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyKDEpLCIgY2FsbGJhY2sgZnVuY3Rpb25cbiIpLG4pfX0pKSxjPT09ZFswXSYmZlt0XSYmdShmW3RdLGEpLCJlcnJvciI9PT10fHwiY2xvc2UiPT09dCl7dmFyIHM9ZC5pbmRleE9mKGMpO3M+PTAmJmQuc3BsaWNlKHMsMSl9fSkpfSkpO3ZhciBwPVsiQ0xPU0VEIiwiQ0xPU0lORyIsIkNPTk5FQ1RJTkciLCJPUEVOIiwicmVhZHlTdGF0ZSJdO3AuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsdCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGhbdF19fSl9KSl9Y2F0Y2godil7YT12fW8oYSx0aGlzKX1yZXR1cm4gYSh0LFt7a2V5OiJzZW5kIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxlPXQuZGF0YSxuPXRoaXMuX3dlYlNvY2tldDt0cnl7aWYobi5yZWFkeVN0YXRlIT09bi5PUEVOKXRocm93IG5ldyBFcnJvcigiU29ja2V0VGFzay5yZWFkeVN0YXRlIGlzIG5vdCBPUEVOIik7bi5zZW5kKGUpLHRoaXMuX2NhbGxiYWNrKHQsInNlbmRTb2NrZXRNZXNzYWdlOm9rIil9Y2F0Y2gocil7dGhpcy5fY2FsbGJhY2sodCwic2VuZFNvY2tldE1lc3NhZ2U6ZmFpbCAiLmNvbmNhdChyKSl9fX0se2tleToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGU9dGhpcy5fd2ViU29ja2V0LG49W107bi5wdXNoKHQuY29kZXx8MWUzKSwic3RyaW5nIj09PXR5cGVvZiB0LnJlYXNvbiYmbi5wdXNoKHQucmVhc29uKTt0cnl7ZS5jbG9zZS5hcHBseShlLG4pLHRoaXMuX2NhbGxiYWNrKHQsImNsb3NlU29ja2V0Om9rIil9Y2F0Y2gocil7dGhpcy5fY2FsbGJhY2sodCwiY2xvc2VTb2NrZXQ6ZmFpbCAiLmNvbmNhdChyKSl9fX0se2tleToiX2NhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBuPXQuc3VjY2VzcyxyPXQuZmFpbCxpPXQuY29tcGxldGUsbz17ZXJyTXNnOmV9Oy86b2skLy50ZXN0KGUpPyJmdW5jdGlvbiI9PT10eXBlb2YgbiYmbihvKToiZnVuY3Rpb24iPT09dHlwZW9mIHImJnIobyksImZ1bmN0aW9uIj09PXR5cGVvZiBpJiZpKG8pfX1dKSx0fSgpO2Z1bmN0aW9uIHAodCxlKXt2YXIgbj10LnVybCxyPXQucHJvdG9jb2xzO3JldHVybiBuZXcgaChuLHIsKGZ1bmN0aW9uKHQsbil7dHx8ZC5wdXNoKG4pLHUoZSx7ZXJyTXNnOiJjb25uZWN0U29ja2V0OiIrKHQ/ImZhaWwgIi5jb25jYXQodCk6Im9rIil9KX0pKX1mdW5jdGlvbiB2KHQsZSl7dmFyIG49ZFswXTtuJiZuLnJlYWR5U3RhdGU9PT1uLk9QRU4/bi5zZW5kKE9iamVjdC5hc3NpZ24oe30sdCx7Y29tcGxldGU6ZnVuY3Rpb24odCl7dShlLHQpfX0pKTp1KGUse2Vyck1zZzoic2VuZFNvY2tldE1lc3NhZ2U6ZmFpbCBXZWJTb2NrZXQgaXMgbm90IGNvbm5lY3RlZCAifSl9ZnVuY3Rpb24gZyh0LGUpe3ZhciBuPWRbMF07bj9uLmNsb3NlKE9iamVjdC5hc3NpZ24oe30sdCx7Y29tcGxldGU6ZnVuY3Rpb24odCl7dShlLHQpfX0pKTp1KGUse2Vyck1zZzoiY2xvc2VTb2NrZXQ6ZmFpbCBXZWJTb2NrZXQgaXMgbm90IGNvbm5lY3RlZCJ9KX1mdW5jdGlvbiBtKHQpe3JldHVybiBmdW5jdGlvbihlKXtmW3RdPWV9fWwuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dFswXS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyKDEpO2gucHJvdG90eXBlWyJvbiIuY29uY2F0KGUpXT1mdW5jdGlvbihlKXt0aGlzLl9jYWxsYmFja3NbdF0ucHVzaChlKX19KSk7dmFyIGI9bSgib3BlbiIpLHk9bSgiZXJyb3IiKSxfPW0oIm1lc3NhZ2UiKSx3PW0oImNsb3NlIil9LmNhbGwodGhpcyxuKCIyYzlmIiksbigiNDE4YiIpWyJkZWZhdWx0Il0pfSxjODc5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBhfSkpO3ZhciByPW4oIjk3OTgiKSxpPXt9LG89MDtmdW5jdGlvbiBhKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV07bysrO3ZhciBuPW5ldyByWyJhIl0obyx0KTtyZXR1cm4gZSYmKGlbb109biksbn19LGM4ODU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI1YjVmIiksaT1uLm4ocik7aS5hfSxjODhlOmZ1bmN0aW9uKHQsZSl7dmFyIG49WyJiYXNlNjRUb0FycmF5QnVmZmVyIiwiYXJyYXlCdWZmZXJUb0Jhc2U2NCIsImFkZEludGVyY2VwdG9yIiwicmVtb3ZlSW50ZXJjZXB0b3IiLCJpbnRlcmNlcHRvcnMiXSxyPVsicmVxdWVzdCIsInVwbG9hZEZpbGUiLCJkb3dubG9hZEZpbGUiLCJjb25uZWN0U29ja2V0Iiwib25Tb2NrZXRPcGVuIiwib25Tb2NrZXRFcnJvciIsInNlbmRTb2NrZXRNZXNzYWdlIiwib25Tb2NrZXRNZXNzYWdlIiwiY2xvc2VTb2NrZXQiLCJvblNvY2tldENsb3NlIiwiZ2V0VXBkYXRlTWFuYWdlciIsImNvbmZpZ01UTFMiXSxpPVsibmF2aWdhdGVUbyIsInJlZGlyZWN0VG8iLCJyZUxhdW5jaCIsInN3aXRjaFRhYiIsIm5hdmlnYXRlQmFjayJdLG89WyJzZXRTdG9yYWdlIiwic2V0U3RvcmFnZVN5bmMiLCJnZXRTdG9yYWdlIiwiZ2V0U3RvcmFnZVN5bmMiLCJnZXRTdG9yYWdlSW5mbyIsImdldFN0b3JhZ2VJbmZvU3luYyIsInJlbW92ZVN0b3JhZ2UiLCJyZW1vdmVTdG9yYWdlU3luYyIsImNsZWFyU3RvcmFnZSIsImNsZWFyU3RvcmFnZVN5bmMiXSxhPVsiZ2V0TG9jYXRpb24iLCJjaG9vc2VMb2NhdGlvbiIsIm9wZW5Mb2NhdGlvbiIsImNyZWF0ZU1hcENvbnRleHQiLCJvbkxvY2F0aW9uQ2hhbmdlIiwib25Mb2NhdGlvbkNoYW5nZUVycm9yIiwic3RhcnRMb2NhdGlvblVwZGF0ZSIsInN0b3BMb2NhdGlvblVwZGF0ZSIsIm9mZkxvY2F0aW9uQ2hhbmdlIiwib2ZmTG9jYXRpb25DaGFuZ2VFcnJvciJdLHM9WyJjaG9vc2VJbWFnZSIsImNob29zZUZpbGUiLCJwcmV2aWV3SW1hZ2UiLCJjbG9zZVByZXZpZXdJbWFnZSIsImdldEltYWdlSW5mbyIsImdldFZpZGVvSW5mbyIsInNhdmVJbWFnZVRvUGhvdG9zQWxidW0iLCJjb21wcmVzc0ltYWdlIiwiY29tcHJlc3NWaWRlbyIsImdldFJlY29yZGVyTWFuYWdlciIsImdldEJhY2tncm91bmRBdWRpb01hbmFnZXIiLCJjcmVhdGVBdWRpb0NvbnRleHQiLCJjcmVhdGVJbm5lckF1ZGlvQ29udGV4dCIsImNob29zZVZpZGVvIiwic2F2ZVZpZGVvVG9QaG90b3NBbGJ1bSIsImNyZWF0ZVZpZGVvQ29udGV4dCIsImNyZWF0ZUNhbWVyYUNvbnRleHQiLCJjcmVhdGVMaXZlUGxheWVyQ29udGV4dCIsImNyZWF0ZUxpdmVQdXNoZXJDb250ZXh0Il0sYz1bImdldFN5c3RlbUluZm8iLCJnZXRTeXN0ZW1JbmZvU3luYyIsImdldFdpbmRvd0luZm8iLCJnZXREZXZpY2VJbmZvIiwiZ2V0QXBwQmFzZUluZm8iLCJjYW5JVXNlIiwib25NZW1vcnlXYXJuaW5nIiwiZ2V0TmV0d29ya1R5cGUiLCJvbk5ldHdvcmtTdGF0dXNDaGFuZ2UiLCJvZmZOZXR3b3JrU3RhdHVzQ2hhbmdlIiwib25BY2NlbGVyb21ldGVyQ2hhbmdlIiwib2ZmQWNjZWxlcm9tZXRlckNoYW5nZSIsInN0YXJ0QWNjZWxlcm9tZXRlciIsInN0b3BBY2NlbGVyb21ldGVyIiwib25Db21wYXNzQ2hhbmdlIiwib2ZmQ29tcGFzc0NoYW5nZSIsInN0YXJ0Q29tcGFzcyIsInN0b3BDb21wYXNzIiwib25HeXJvc2NvcGVDaGFuZ2UiLCJzdGFydEd5cm9zY29wZSIsInN0b3BHeXJvc2NvcGUiLCJtYWtlUGhvbmVDYWxsIiwic2NhbkNvZGUiLCJzZXRDbGlwYm9hcmREYXRhIiwiZ2V0Q2xpcGJvYXJkRGF0YSIsInNldFNjcmVlbkJyaWdodG5lc3MiLCJnZXRTY3JlZW5CcmlnaHRuZXNzIiwic2V0S2VlcFNjcmVlbk9uIiwib25Vc2VyQ2FwdHVyZVNjcmVlbiIsInZpYnJhdGVMb25nIiwidmlicmF0ZVNob3J0IiwiYWRkUGhvbmVDb250YWN0Iiwib3BlbkJsdWV0b290aEFkYXB0ZXIiLCJzdGFydEJsdWV0b290aERldmljZXNEaXNjb3ZlcnkiLCJvbkJsdWV0b290aERldmljZUZvdW5kIiwic3RvcEJsdWV0b290aERldmljZXNEaXNjb3ZlcnkiLCJvbkJsdWV0b290aEFkYXB0ZXJTdGF0ZUNoYW5nZSIsImdldENvbm5lY3RlZEJsdWV0b290aERldmljZXMiLCJnZXRCbHVldG9vdGhEZXZpY2VzIiwiZ2V0Qmx1ZXRvb3RoQWRhcHRlclN0YXRlIiwiY2xvc2VCbHVldG9vdGhBZGFwdGVyIiwid3JpdGVCTEVDaGFyYWN0ZXJpc3RpY1ZhbHVlIiwicmVhZEJMRUNoYXJhY3RlcmlzdGljVmFsdWUiLCJvbkJMRUNvbm5lY3Rpb25TdGF0ZUNoYW5nZSIsIm9uQkxFQ2hhcmFjdGVyaXN0aWNWYWx1ZUNoYW5nZSIsIm5vdGlmeUJMRUNoYXJhY3RlcmlzdGljVmFsdWVDaGFuZ2UiLCJnZXRCTEVEZXZpY2VTZXJ2aWNlcyIsImdldEJMRURldmljZUNoYXJhY3RlcmlzdGljcyIsImNyZWF0ZUJMRUNvbm5lY3Rpb24iLCJjbG9zZUJMRUNvbm5lY3Rpb24iLCJzZXRCTEVNVFUiLCJnZXRCTEVEZXZpY2VSU1NJIiwib25CZWFjb25TZXJ2aWNlQ2hhbmdlIiwib25CZWFjb25VcGRhdGUiLCJnZXRCZWFjb25zIiwic3RhcnRCZWFjb25EaXNjb3ZlcnkiLCJzdG9wQmVhY29uRGlzY292ZXJ5IiwiY2hlY2tJc1N1cHBvcnRTb3RlckF1dGhlbnRpY2F0aW9uIiwiY2hlY2tJc1NvdGVyRW5yb2xsZWRJbkRldmljZSIsInN0YXJ0U290ZXJBdXRoZW50aWNhdGlvbiIsIm9uVGhlbWVDaGFuZ2UiLCJvZmZUaGVtZUNoYW5nZSIsIm9uVUlTdHlsZUNoYW5nZSIsImdldFN5c3RlbVNldHRpbmciLCJnZXRBcHBBdXRob3JpemVTZXR0aW5nIiwib3BlbkFwcEF1dGhvcml6ZVNldHRpbmciXSx1PVsiaGlkZUtleWJvYXJkIiwib25LZXlib2FyZEhlaWdodENoYW5nZSIsIm9mZktleWJvYXJkSGVpZ2h0Q2hhbmdlIiwiZ2V0U2VsZWN0ZWRUZXh0UmFuZ2UiXSxsPVsic2hvd1RvYXN0IiwiaGlkZVRvYXN0Iiwic2hvd0xvYWRpbmciLCJoaWRlTG9hZGluZyIsInNob3dNb2RhbCIsInNob3dBY3Rpb25TaGVldCIsInNldE5hdmlnYXRpb25CYXJUaXRsZSIsInNldE5hdmlnYXRpb25CYXJDb2xvciIsInNob3dOYXZpZ2F0aW9uQmFyTG9hZGluZyIsImhpZGVOYXZpZ2F0aW9uQmFyTG9hZGluZyIsInNldFRhYkJhckl0ZW0iLCJzZXRUYWJCYXJTdHlsZSIsImhpZGVUYWJCYXIiLCJzaG93VGFiQmFyIiwic2V0VGFiQmFyQmFkZ2UiLCJyZW1vdmVUYWJCYXJCYWRnZSIsInNob3dUYWJCYXJSZWREb3QiLCJoaWRlVGFiQmFyUmVkRG90Iiwib25UYWJCYXJNaWRCdXR0b25UYXAiLCJzZXRCYWNrZ3JvdW5kQ29sb3IiLCJzZXRCYWNrZ3JvdW5kVGV4dFN0eWxlIiwiY3JlYXRlQW5pbWF0aW9uIiwicGFnZVNjcm9sbFRvIiwib25XaW5kb3dSZXNpemUiLCJvZmZXaW5kb3dSZXNpemUiLCJsb2FkRm9udEZhY2UiLCJzdGFydFB1bGxEb3duUmVmcmVzaCIsInN0b3BQdWxsRG93blJlZnJlc2giLCJjcmVhdGVTZWxlY3RvclF1ZXJ5IiwiY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJjcmVhdGVNZWRpYVF1ZXJ5T2JzZXJ2ZXIiLCJnZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0Iiwic2hvd1RvcFdpbmRvdyIsInNob3dMZWZ0V2luZG93Iiwic2hvd1JpZ2h0V2luZG93IiwiaGlkZVRvcFdpbmRvdyIsImhpZGVMZWZ0V2luZG93IiwiaGlkZVJpZ2h0V2luZG93IiwiZ2V0VG9wV2luZG93U3R5bGUiLCJnZXRMZWZ0V2luZG93U3R5bGUiLCJnZXRSaWdodFdpbmRvd1N0eWxlIiwic2V0VG9wV2luZG93U3R5bGUiLCJzZXRMZWZ0V2luZG93U3R5bGUiLCJzZXRSaWdodFdpbmRvd1N0eWxlIiwiZ2V0TG9jYWxlIiwic2V0TG9jYWxlIiwib25Mb2NhbGVDaGFuZ2UiXSxmPVsiJGVtaXQiLCIkb24iLCIkb25jZSIsIiRvZmYiXSxkPVsic2F2ZUZpbGUiLCJnZXRTYXZlZEZpbGVMaXN0IiwiZ2V0U2F2ZWRGaWxlSW5mbyIsInJlbW92ZVNhdmVkRmlsZSIsImdldEZpbGVJbmZvIiwib3BlbkRvY3VtZW50IiwiZ2V0RmlsZVN5c3RlbU1hbmFnZXIiXSxoPVsiY3JlYXRlT2Zmc2NyZWVuQ2FudmFzIiwiY3JlYXRlQ2FudmFzQ29udGV4dCIsImNhbnZhc1RvVGVtcEZpbGVQYXRoIiwiY2FudmFzUHV0SW1hZ2VEYXRhIiwiY2FudmFzR2V0SW1hZ2VEYXRhIl0scD1bImdldFByb3ZpZGVyIiwibG9naW4iLCJjaGVja1Nlc3Npb24iLCJnZXRVc2VySW5mbyIsImdldFVzZXJQcm9maWxlIiwicHJlTG9naW4iLCJjbG9zZUF1dGhWaWV3IiwiZ2V0Q2hlY2tCb3hTdGF0ZSIsImdldFVuaXZlcmlmeU1hbmFnZXIiLCJzaGFyZSIsInNoYXJlV2l0aFN5c3RlbSIsInNob3dTaGFyZU1lbnUiLCJoaWRlU2hhcmVNZW51IiwicmVxdWVzdFBheW1lbnQiLCJzdWJzY3JpYmVQdXNoIiwidW5zdWJzY3JpYmVQdXNoIiwib25QdXNoIiwib2ZmUHVzaCIsInJlcXVpcmVOYXRpdmVQbHVnaW4iLCJ1cHgycHgiLCJyZXN0b3JlR2xvYmFsIiwicmVxdWlyZUdsb2JhbCIsImdldFN1Yk5WdWVCeUlkIiwiZ2V0Q3VycmVudFN1Yk5WdWUiLCJzZXRQYWdlTWV0YSIsIm9uSG9zdEV2ZW50UmVjZWl2ZSIsIm9uTmF0aXZlRXZlbnRSZWNlaXZlIiwic2VuZE5hdGl2ZUV2ZW50IiwicHJlbG9hZFBhZ2UiLCJ1blByZWxvYWRQYWdlIiwibG9hZFN1YlBhY2thZ2UiLCJzZW5kSG9zdEV2ZW50IiwibmF2aWdhdGVUb01pbmlQcm9ncmFtIiwiZ2V0TGF1bmNoT3B0aW9uc1N5bmMiLCJnZXRFbnRlck9wdGlvbnNTeW5jIiwiaW5pdFVUU1Byb3h5Q2xhc3MiLCJpbml0VVRTUHJveHlGdW5jdGlvbiIsImluaXRVVFNJbmRleENsYXNzTmFtZSIsImluaXRVVFNDbGFzc05hbWUiLCJpbml0VVRTUGFja2FnZU5hbWUiLCJyZXF1aXJlVVRTUGx1Z2luIiwicmVnaXN0ZXJVVFNQbHVnaW4iLCJyZWdpc3RlclVUU0ludGVyZmFjZSJdLHY9WyJjcmVhdGVSZXdhcmRlZFZpZGVvQWQiLCJjcmVhdGVGdWxsU2NyZWVuVmlkZW9BZCIsImNyZWF0ZUludGVyc3RpdGlhbEFkIiwiY3JlYXRlSW50ZXJhY3RpdmVBZCJdLGc9WyJpbnZva2VQdXNoQ2FsbGJhY2siLCJnZXRQdXNoQ2xpZW50SWQiLCJvblB1c2hNZXNzYWdlIiwib2ZmUHVzaE1lc3NhZ2UiLCJjcmVhdGVQdXNoTWVzc2FnZSIsImdldENoYW5uZWxNYW5hZ2VyIl0sbT1bXS5jb25jYXQobixyLGksbyxhLHMsYyx1LGwsZixkLGgscCx2LGcpO3QuZXhwb3J0cz1tfSxjOTNmOmZ1bmN0aW9uKHQsZSxuKXt9LGM5ZDU6ZnVuY3Rpb24odCxlLG4pe30sYzlkYTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwiaW50ZXJjZXB0b3JzIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKTt2YXIgcj1uKCJmNDRjIik7bi5kKGUsImFkZEludGVyY2VwdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gclsiYSJdfSkpLG4uZChlLCJyZW1vdmVJbnRlcmNlcHRvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJbImQiXX0pKTt2YXIgaT17cHJvbWlzZUludGVyY2VwdG9yOnJbImMiXX19LGNhMzc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInVuaS1jaGVja2JveCIsdC5fZyh7YXR0cnM6e2lkOnQuaWQsZGlzYWJsZWQ6dC5kaXNhYmxlZH0sb246e2NsaWNrOnQuX29uQ2xpY2t9fSx0LiRsaXN0ZW5lcnMpLFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLWNoZWNrYm94LXdyYXBwZXIiLHN0eWxlOnsiLS1IT1ZFUi1CRC1DT0xPUiI6dC5hY3RpdmVCb3JkZXJDb2xvcn19LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLWNoZWNrYm94LWlucHV0IixjbGFzczp7InVuaS1jaGVja2JveC1pbnB1dC1jaGVja2VkIjp0LmNoZWNrYm94Q2hlY2tlZCwidW5pLWNoZWNrYm94LWlucHV0LWRpc2FibGVkIjp0LmRpc2FibGVkfSxzdHlsZTp0LmNoZWNrYm94U3R5bGV9KSx0Ll90KCJkZWZhdWx0IildLDIpXSl9LGk9W10sbz1uKCI5MDllIiksYT17bmFtZToiQ2hlY2tib3giLG1peGluczpbb1siYSJdLG9bImYiXV0scHJvcHM6e2NoZWNrZWQ6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxpZDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sZGlzYWJsZWQ6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSx2YWx1ZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sY29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiMwMDdhZmYifSxiYWNrZ3JvdW5kQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LGJvcmRlckNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxhY3RpdmVCYWNrZ3JvdW5kQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LGFjdGl2ZUJvcmRlckNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxpY29uQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2NoZWNrYm94Q2hlY2tlZDp0aGlzLmNoZWNrZWQsY2hlY2tib3hWYWx1ZTp0aGlzLnZhbHVlfX0sY29tcHV0ZWQ6e2NoZWNrYm94U3R5bGU6ZnVuY3Rpb24oKXtpZih0aGlzLmRpc2FibGVkKXJldHVybntiYWNrZ3JvdW5kQ29sb3I6IiNFMUUxRTEiLGJvcmRlckNvbG9yOiIjRDFEMUQxIn07dmFyIHQ9e307cmV0dXJuIHRoaXMuY2hlY2tib3hDaGVja2VkPyh0LmNvbG9yPXRoaXMuaWNvbkNvbG9yfHx0aGlzLmNvbG9yLHRoaXMuYWN0aXZlQm9yZGVyQ29sb3ImJih0LmJvcmRlckNvbG9yPXRoaXMuYWN0aXZlQm9yZGVyQ29sb3IpLHRoaXMuYWN0aXZlQmFja2dyb3VuZENvbG9yJiYodC5iYWNrZ3JvdW5kQ29sb3I9dGhpcy5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IpKToodGhpcy5ib3JkZXJDb2xvciYmKHQuYm9yZGVyQ29sb3I9dGhpcy5ib3JkZXJDb2xvciksdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJih0LmJhY2tncm91bmRDb2xvcj10aGlzLmJhY2tncm91bmRDb2xvcikpLHR9fSx3YXRjaDp7Y2hlY2tlZDpmdW5jdGlvbih0KXt0aGlzLmNoZWNrYm94Q2hlY2tlZD10fSx2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmNoZWNrYm94VmFsdWU9dH19LGxpc3RlbmVyczp7ImxhYmVsLWNsaWNrIjoiX29uQ2xpY2siLCJAbGFiZWwtY2xpY2siOiJfb25DbGljayJ9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLiRkaXNwYXRjaCgiQ2hlY2tib3hHcm91cCIsInVuaS1jaGVja2JveC1ncm91cC11cGRhdGUiLHt0eXBlOiJhZGQiLHZtOnRoaXN9KSx0aGlzLiRkaXNwYXRjaCgiRm9ybSIsInVuaS1mb3JtLWdyb3VwLXVwZGF0ZSIse3R5cGU6ImFkZCIsdm06dGhpc30pfSxiZWZvcmVEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy4kZGlzcGF0Y2goIkNoZWNrYm94R3JvdXAiLCJ1bmktY2hlY2tib3gtZ3JvdXAtdXBkYXRlIix7dHlwZToicmVtb3ZlIix2bTp0aGlzfSksdGhpcy4kZGlzcGF0Y2goIkZvcm0iLCJ1bmktZm9ybS1ncm91cC11cGRhdGUiLHt0eXBlOiJyZW1vdmUiLHZtOnRoaXN9KX0sbWV0aG9kczp7X29uQ2xpY2s6ZnVuY3Rpb24odCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMuY2hlY2tib3hDaGVja2VkPSF0aGlzLmNoZWNrYm94Q2hlY2tlZCx0aGlzLiRkaXNwYXRjaCgiQ2hlY2tib3hHcm91cCIsInVuaS1jaGVja2JveC1jaGFuZ2UiLHQpKX0sX3Jlc2V0Rm9ybURhdGE6ZnVuY3Rpb24oKXt0aGlzLmNoZWNrYm94Q2hlY2tlZD0hMX19fSxzPWEsYz0obigiY2IzNSIpLG4oIjg4NDQiKSksdT1PYmplY3QoY1siYSJdKShzLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPXUuZXhwb3J0c30sY2E1NDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImM0OTAiKSxpPW4ubihyKTtpLmF9LGNiMzU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjZGIxIiksaT1uLm4ocik7aS5hfSxjYmQwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZDRmYyIpLGk9bi5uKHIpO2kuYX0sY2JlMjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjY3MjkiKSxpPW4ubihyKTtpLmF9LGNjZGY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsIm9uV2luZG93UmVzaXplIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwib2ZmV2luZG93UmVzaXplIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKTt2YXIgcj1uKCI5MTMxIiksaT1uKCI3NDVhIiksbz1bXTtmdW5jdGlvbiBhKHQpe28ucHVzaCh0KX1mdW5jdGlvbiBzKHQpe28uc3BsaWNlKG8uaW5kZXhPZih0KSwxKX1PYmplY3QoaVsiZCJdKSgib25WaWV3RGlkUmVzaXplIiwoZnVuY3Rpb24odCl7by5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QoclsiYSJdKShlLHQpfSkpfSkpfSxjY2UyOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsImIiLChmdW5jdGlvbigpe3JldHVybiBsfSkpLG4uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gX30pKTt2YXIgcj1uKCIzNDBkIiksaT1uKCIzOGNlIiksbz1uKCI1ODQ0IiksYT1uKCI4ZDdkIik7ZnVuY3Rpb24gcyh0LGUpe3ZhciBuPXtpZDp0LmlkLG9mZnNldExlZnQ6dC5vZmZzZXRMZWZ0LG9mZnNldFRvcDp0Lm9mZnNldFRvcCxkYXRhc2V0Ok9iamVjdChpWyJiIl0pKHQpfTtyZXR1cm4gZSYmT2JqZWN0LmFzc2lnbihuLGUpLG59ZnVuY3Rpb24gYyh0KXtpZih0KXtmb3IodmFyIGU9W10sbj1PYmplY3QoYVsiYSJdKSgpLHI9bi50b3AsaT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgbz10W2ldO2UucHVzaCh7aWRlbnRpZmllcjpvLmlkZW50aWZpZXIscGFnZVg6by5wYWdlWCxwYWdlWTpvLnBhZ2VZLXIsY2xpZW50WDpvLmNsaWVudFgsY2xpZW50WTpvLmNsaWVudFktcixmb3JjZTpvLmZvcmNlfHwwfSl9cmV0dXJuIGV9cmV0dXJuW119ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdC5zdGFydHNXaXRoKCJtb3VzZSIpfHxbImNvbnRleHRtZW51Il0uaW5jbHVkZXModCl9ZnVuY3Rpb24gbCh0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30scj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106e30saT1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06e307aWYoZS5fcHJvY2Vzc2VkKXJldHVybiBlLnR5cGU9bi50eXBlfHx0LGU7aWYoImNsaWNrIj09PXQpe3ZhciBsPU9iamVjdChhWyJhIl0pKCksZj1sLnRvcDtuPXt4OmUueCx5OmUueS1mfSxlLnRvdWNoZXM9ZS5jaGFuZ2VkVG91Y2hlcz1be2ZvcmNlOjEsaWRlbnRpZmllcjowLGNsaWVudFg6ZS5jbGllbnRYLGNsaWVudFk6ZS5jbGllbnRZLHBhZ2VYOmUucGFnZVgscGFnZVk6ZS5wYWdlWX1dfXZhciBkPU9iamVjdChvWyJiIl0pKHt0eXBlOm4udHlwZXx8dCx0aW1lU3RhbXA6ZS50aW1lU3RhbXB8fDAsZGV0YWlsOm4sdGFyZ2V0OnMocixuKSxjdXJyZW50VGFyZ2V0OnMoaSwhMSwhMCksdG91Y2hlczplIGluc3RhbmNlb2YgRXZlbnR8fGUgaW5zdGFuY2VvZiBDdXN0b21FdmVudD9jKGUudG91Y2hlcyk6ZS50b3VjaGVzLGNoYW5nZWRUb3VjaGVzOmUgaW5zdGFuY2VvZiBFdmVudHx8ZSBpbnN0YW5jZW9mIEN1c3RvbUV2ZW50P2MoZS5jaGFuZ2VkVG91Y2hlcyk6ZS5jaGFuZ2VkVG91Y2hlcyxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe30sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7fX0pO2lmKHUodCkpe3ZhciBoPU9iamVjdChhWyJhIl0pKCkscD1oLnRvcDtkLnBhZ2VYPWUucGFnZVgsZC5wYWdlWT1lLnBhZ2VZLXAsZC5jbGllbnRYPWUuY2xpZW50WCxkLmNsaWVudFk9ZS5jbGllbnRZLXB9cmV0dXJuIGR9dmFyIGY9MzUwLGQ9MTAsaD0hIXJbInQiXSYme3Bhc3NpdmU6ITB9LHA9ITE7ZnVuY3Rpb24gdigpe3AmJihjbGVhclRpbWVvdXQocCkscD0hMSl9dmFyIGc9MCxtPTA7ZnVuY3Rpb24gYih0KXtpZih2KCksMT09PXQudG91Y2hlcy5sZW5ndGgpe3ZhciBlPXQudG91Y2hlc1swXSxuPWUucGFnZVgscj1lLnBhZ2VZO2c9bixtPXIscD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3ZhciBlPW5ldyBDdXN0b21FdmVudCgibG9uZ3ByZXNzIix7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLHRhcmdldDp0LnRhcmdldCxjdXJyZW50VGFyZ2V0OnQuY3VycmVudFRhcmdldH0pO2UudG91Y2hlcz10LnRvdWNoZXMsZS5jaGFuZ2VkVG91Y2hlcz10LmNoYW5nZWRUb3VjaGVzLHQudGFyZ2V0LmRpc3BhdGNoRXZlbnQoZSl9KSxmKX19ZnVuY3Rpb24geSh0KXtpZihwKXtpZigxIT09dC50b3VjaGVzLmxlbmd0aClyZXR1cm4gdigpO3ZhciBlPXQudG91Y2hlc1swXSxuPWUucGFnZVgscj1lLnBhZ2VZO3JldHVybiBNYXRoLmFicyhuLWcpPmR8fE1hdGguYWJzKHItbSk+ZD92KCk6dm9pZCAwfX1mdW5jdGlvbiBfKCl7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLGIsaCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIseSxoKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHYsaCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIix2LGgpfX0sY2RiMTpmdW5jdGlvbih0LGUsbil7fSxjZWRjOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJhZGRQaG9uZUNvbnRhY3QiLChmdW5jdGlvbigpe3JldHVybiByfSkpO3ZhciByPXtmaXJzdE5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwLHZhbGlkYXRvcjpmdW5jdGlvbih0KXtpZighdClyZXR1cm4iYWRkUGhvbmVDb250YWN0OmZhaWwgcGFyYW1ldGVyIGVycm9yOiBwYXJhbWV0ZXIuZmlyc3ROYW1lIHNob3VsZCBub3QgYmUgZW1wdHkgU3RyaW5nOyJ9fX19LGNmOTc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsImRvd25sb2FkRmlsZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSk7dmFyIHI9bigiOTEzMSIpLGk9bigiNzQ1YSIpO2Z1bmN0aW9uIG8odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gcyh0LGUsbil7cmV0dXJuIGUmJmEodC5wcm90b3R5cGUsZSksbiYmYSh0LG4pLHR9dmFyIGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7byh0aGlzLHQpLHRoaXMuaWQ9ZSx0aGlzLl9jYWxsYmFja0lkPW4sdGhpcy5fY2FsbGJhY2tzPVtdfXJldHVybiBzKHQsW3trZXk6ImFib3J0Iix2YWx1ZTpmdW5jdGlvbigpe09iamVjdChpWyJjIl0pKCJvcGVyYXRlRG93bmxvYWRUYXNrIix7ZG93bmxvYWRUYXNrSWQ6dGhpcy5pZCxvcGVyYXRpb25UeXBlOiJhYm9ydCJ9KX19LHtrZXk6Im9uUHJvZ3Jlc3NVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpeyJmdW5jdGlvbiI9PT10eXBlb2YgdCYmdGhpcy5fY2FsbGJhY2tzLnB1c2godCl9fSx7a2V5OiJvbkhlYWRlcnNSZWNlaXZlZCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJvZmZQcm9ncmVzc1VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY2FsbGJhY2tzLmluZGV4T2YodCk7ZT49MCYmdGhpcy5fY2FsbGJhY2tzLnNwbGljZShlLDEpfX0se2tleToib2ZmSGVhZGVyc1JlY2VpdmVkIix2YWx1ZTpmdW5jdGlvbigpe319XSksdH0oKSx1PU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gbCh0LGUpe3ZhciBuPU9iamVjdChpWyJjIl0pKCJjcmVhdGVEb3dubG9hZFRhc2siLHQpLHI9bi5kb3dubG9hZFRhc2tJZCxvPW5ldyBjKHIsZSk7cmV0dXJuIHVbcl09byxvfU9iamVjdChpWyJkIl0pKCJvbkRvd25sb2FkVGFza1N0YXRlQ2hhbmdlIiwoZnVuY3Rpb24odCl7dmFyIGU9dC5kb3dubG9hZFRhc2tJZCxuPXQuc3RhdGUsaT10LnRlbXBGaWxlUGF0aCxvPXQuc3RhdHVzQ29kZSxhPXQucHJvZ3Jlc3Mscz10LnRvdGFsQnl0ZXNXcml0dGVuLGM9dC50b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLGw9dC5lcnJNc2csZj11W2VdLGQ9Zi5fY2FsbGJhY2tJZDtzd2l0Y2gobil7Y2FzZSJwcm9ncmVzc1VwZGF0ZSI6Zi5fY2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3Qoe3Byb2dyZXNzOmEsdG90YWxCeXRlc1dyaXR0ZW46cyx0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOmN9KX0pKTticmVhaztjYXNlInN1Y2Nlc3MiOk9iamVjdChyWyJhIl0pKGQse3RlbXBGaWxlUGF0aDppLHN0YXR1c0NvZGU6byxlcnJNc2c6InJlcXVlc3Q6b2sifSk7Y2FzZSJmYWlsIjpPYmplY3QoclsiYSJdKShkLHtlcnJNc2c6InJlcXVlc3Q6ZmFpbCAiK2x9KTtkZWZhdWx0OnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZGVsZXRlIHVbZV19KSwxMDApO2JyZWFrfX0pKX0sY2ZmOTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIGkodCxlLG4pe3JldHVybiB0PXQuJHZtfHx0LHQuX19jYWxsX2hvb2smJnQuX19jYWxsX2hvb2soZSxuKX1mdW5jdGlvbiBvKGUsbixyKXtyZXR1cm4ib25FcnJvciIhPT1uJiZ0LmRlYnVnKCJBcHDvvJoiLmNvbmNhdChuLCIgaGF2ZSBiZWVuIGludm9rZWQiKSsocj8iICIuY29uY2F0KEpTT04uc3RyaW5naWZ5KHIpKToiIikpLGU9ZS4kdm18fGUsZS5fX2NhbGxfaG9vayYmZS5fX2NhbGxfaG9vayhuLHIpfWZ1bmN0aW9uIGEoZSxuLG8pe3JldHVybiJvbkxvYWQiPT09biYmKGUuJG1wLnF1ZXJ5PW8sci5wdWJsaXNoSGFuZGxlcigib25QYWdlTG9hZCIsZSxlLiRwYWdlLmlkKSksIm9uU2hvdyI9PT1uJiYoZS4kcm91dGUubWV0YS5pc1RhYkJhciYmZS4kcm91dGUucGFyYW1zLmRldGFpbCYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyLmVtaXQoIm9uVGFiSXRlbVRhcCIsZS4kcm91dGUucGFyYW1zLmRldGFpbCl9KSwwKSxyLnB1Ymxpc2hIYW5kbGVyKCJvblBhZ2VTaG93IixlLGUuJHBhZ2UuaWQpKSwib25QYWdlU2Nyb2xsIiE9PW4mJnQuZGVidWcoIiIuY29uY2F0KGUuJHBhZ2Uucm91dGUsIlsiKS5jb25jYXQoZS4kcGFnZS5pZCwiXe+8miIpLmNvbmNhdChuLCIgaGF2ZSBiZWVuIGludm9rZWQiKSksaShlLG4sbyl9bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLCJiIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKX0pLmNhbGwodGhpcyxuKCI0MThiIilbImRlZmF1bHQiXSxuKCIyYzlmIikpfSxkMDQyOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe3ZhciByPW4oIjkwOWUiKSxpPW4oIjM0MGQiKSxvPW4oIjZkNGIiKSxhPW4oImU3NmIiKSxzPW4oIjliNmQiKSxjPW4oIjA0ZDQiKSx1PW4oImI0MzUiKTtmdW5jdGlvbiBsKHQsZSxuKXtyZXR1cm4gbD1mKCk/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24odCxlLG4pe3ZhciByPVtudWxsXTtyLnB1c2guYXBwbHkocixlKTt2YXIgaT1GdW5jdGlvbi5iaW5kLmFwcGx5KHQsciksbz1uZXcgaTtyZXR1cm4gbiYmZChvLG4ucHJvdG90eXBlKSxvfSxsLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBmKCl7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSxbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX1mdW5jdGlvbiBkKHQsZSl7cmV0dXJuIGQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9LGQodCxlKX1mdW5jdGlvbiBoKHQsZSxuKXtyZXR1cm4gbmV3IHQuTG5nTGF0KG4sZSl9ZnVuY3Rpb24gcCh0LGUsbil7cmV0dXJuIG5ldyB0LkxhdExuZyhlLG4pfWZ1bmN0aW9uIHYodCxlLG4pe3JldHVybiB1WyJjIl0/aCh0LGUsbik6cCh0LGUsbil9ZnVuY3Rpb24gZyh0KXtyZXR1cm4iZ2V0TGF0ImluIHQ/dC5nZXRMYXQoKTp0LmxhdCgpfWZ1bmN0aW9uIG0odCl7cmV0dXJuImdldExuZyJpbiB0P3QuZ2V0TG5nKCk6dC5sbmcoKX1lWyJhIl09e25hbWU6Ik1hcCIsY29tcG9uZW50czp7bWFwTWFya2VyOmFbImEiXSxtYXBDb250cm9sOnNbImEiXSxtYXBQb2x5Z29uOmNbImEiXX0sbWl4aW5zOltyWyJnIl1dLHByb3BzOntpZDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sbGF0aXR1ZGU6e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6MzkuOTJ9LGxvbmdpdHVkZTp7dHlwZTpbU3RyaW5nLE51bWJlcl0sZGVmYXVsdDoxMTYuNDZ9LHNjYWxlOnt0eXBlOltTdHJpbmcsTnVtYmVyXSxkZWZhdWx0OjE2fSxtYXJrZXJzOnt0eXBlOkFycmF5LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LGNvdmVyczp7dHlwZTpBcnJheSxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuW119fSxpbmNsdWRlUG9pbnRzOnt0eXBlOkFycmF5LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LHBvbHlsaW5lOnt0eXBlOkFycmF5LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LGNpcmNsZXM6e3R5cGU6QXJyYXksZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybltdfX0sY29udHJvbHM6e3R5cGU6QXJyYXksZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybltdfX0sc2hvd0xvY2F0aW9uOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sbGlicmFyaWVzOnt0eXBlOkFycmF5LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LHBvbHlnb25zOnt0eXBlOkFycmF5LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2NlbnRlcjp7bGF0aXR1ZGU6MTE2LjQ2LGxvbmdpdHVkZToxMTYuNDZ9LGlzTWFwUmVhZHk6ITEsaXNCb3VuZHNSZWFkeTohMSxwb2x5bGluZVN5bmM6W10sY2lyY2xlc1N5bmM6W119fSx3YXRjaDp7bGF0aXR1ZGU6ZnVuY3Rpb24oKXt0aGlzLmNlbnRlckNoYW5nZSgpfSxsb25naXR1ZGU6ZnVuY3Rpb24oKXt0aGlzLmNlbnRlckNoYW5nZSgpfSxzY2FsZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMubWFwUmVhZHkoKGZ1bmN0aW9uKCl7ZS5fbWFwLnNldFpvb20oTnVtYmVyKHQpfHwxNil9KSl9LHBvbHlsaW5lOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5tYXBSZWFkeSgoZnVuY3Rpb24oKXtlLmNyZWF0ZVBvbHlsaW5lKCl9KSl9LGNpcmNsZXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMubWFwUmVhZHkoKGZ1bmN0aW9uKCl7dC5jcmVhdGVDaXJjbGVzKCl9KSl9LGluY2x1ZGVQb2ludHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMubWFwUmVhZHkoKGZ1bmN0aW9uKCl7dC5maXRCb3VuZHModC5pbmNsdWRlUG9pbnRzKX0pKX0sc2hvd0xvY2F0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5tYXBSZWFkeSgoZnVuY3Rpb24oKXtlW3Q/ImNyZWF0ZUxvY2F0aW9uIjoicmVtb3ZlTG9jYXRpb24iXSgpfSkpfX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX21hcmtlcnM9e307dmFyIHQ9dGhpcy5sYXRpdHVkZSxlPXRoaXMubG9uZ2l0dWRlO3QmJmUmJih0aGlzLmNlbnRlci5sYXRpdHVkZT10LHRoaXMuY2VudGVyLmxvbmdpdHVkZT1lKX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7T2JqZWN0KG9bImEiXSkodGhpcy5saWJyYXJpZXMsKGZ1bmN0aW9uKGUpe2UuZXZlbnQ9ZS5ldmVudHx8ZS5FdmVudCxlLlBvaW50PWUuUG9pbnR8fGUuQnVyeVBvaW50LHQuX21hcHM9ZSx0LmluaXQoKX0pKX0sYmVmb3JlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMucmVtb3ZlUG9seWxpbmUoKSx0aGlzLnJlbW92ZUNpcmNsZXMoKSx0aGlzLnJlbW92ZUxvY2F0aW9uKCl9LG1ldGhvZHM6e19oYW5kbGVTdWJzY3JpYmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXQudHlwZSxyPXQuZGF0YSxpPXZvaWQgMD09PXI/e306cixvPXRoaXMuX21hcHM7ZnVuY3Rpb24gYSh0LGUpe3Q9dHx8e30sdC5lcnJNc2c9IiIuY29uY2F0KG4sIjoiKS5jb25jYXQoZT8iZmFpbCIrZToib2siKTt2YXIgcj1lP2kuZmFpbDppLnN1Y2Nlc3M7ImZ1bmN0aW9uIj09PXR5cGVvZiByJiZyKHQpLCJmdW5jdGlvbiI9PT10eXBlb2YgaS5jb21wbGV0ZSYmaS5jb21wbGV0ZSh0KX1zd2l0Y2gobil7Y2FzZSJnZXRDZW50ZXJMb2NhdGlvbiI6dGhpcy5tYXBSZWFkeSgoZnVuY3Rpb24oKXt2YXIgdCxuLHI9ZS5fbWFwLmdldENlbnRlcigpO3Q9ZyhyKSxuPW0ociksYSh7bGF0aXR1ZGU6dCxsb25naXR1ZGU6bn0pfSkpO2JyZWFrO2Nhc2UibW92ZVRvTG9jYXRpb24iOnZhciBzPWkubGF0aXR1ZGUsYz1pLmxvbmdpdHVkZSxsPXMmJmM/dihvLHMsYyk6dGhpcy5fbG9jYXRpb25Qb3NpdGlvbjtsJiYodGhpcy5fbWFwLnNldENlbnRlcihsKSxhKHtsYXRpdHVkZTpzLGxvbmdpdHVkZTpjfSkpO2JyZWFrO2Nhc2UidHJhbnNsYXRlTWFya2VyIjp0aGlzLm1hcFJlYWR5KChmdW5jdGlvbigpe3RyeXt2YXIgdD1lLmdldE1hcmtlcihpLm1hcmtlcklkKTt1WyJjIl0mJm8ucGx1Z2luKCJBTWFwLk1vdmVBbmltYXRpb24iLChmdW5jdGlvbigpe30pKTt2YXIgbj1pLmRlc3RpbmF0aW9uLHI9aS5kdXJhdGlvbixzPSEhaS5hdXRvUm90YXRlLGM9TnVtYmVyKGkucm90YXRlKT9pLnJvdGF0ZTowLGw9MDsiZ2V0Um90YXRpb24iaW4gdCYmKGw9dC5nZXRSb3RhdGlvbigpKTt2YXIgZj10LmdldFBvc2l0aW9uKCksZD12KG8sbi5sYXRpdHVkZSxuLmxvbmdpdHVkZSksaD0wO2g9dVsiYyJdP28uR2VvbWV0cnlVdGlsLmRpc3RhbmNlKGYsZCk6by5nZW9tZXRyeS5zcGhlcmljYWwuY29tcHV0ZURpc3RhbmNlQmV0d2VlbihmLGQpLzFlMzt2YXIgcD0oIm51bWJlciI9PT10eXBlb2Ygcj9yOjFlMykvMzZlNSxnPWgvcCxtPW8uZXZlbnQuYWRkTGlzdGVuZXIodCwibW92aW5nIiwoZnVuY3Rpb24oZSl7dmFyIG49ZS5sYXRMbmcscj10LmxhYmVsO3ImJnIuc2V0UG9zaXRpb24obik7dmFyIGk9dC5jYWxsb3V0O2kmJmkuc2V0UG9zaXRpb24obil9KSksYj1vLmV2ZW50LmFkZExpc3RlbmVyKHQsIm1vdmVlbmQiLChmdW5jdGlvbihlKXt1WyJjIl18fChiLnJlbW92ZSgpLG0ucmVtb3ZlKCkpLHQubGFzdFBvc2l0aW9uPWYsdC5zZXRQb3NpdGlvbihkKTt2YXIgbj10LmxhYmVsO24mJm4uc2V0UG9zaXRpb24oZCk7dmFyIHI9dC5jYWxsb3V0O3ImJnIuc2V0UG9zaXRpb24oZCk7dmFyIG89aS5hbmltYXRpb25FbmQ7ImZ1bmN0aW9uIj09PXR5cGVvZiBvJiZvKCl9KSkseT0wO3MmJiF1WyJjIl0mJih0Lmxhc3RQb3NpdGlvbiYmKHk9by5nZW9tZXRyeS5zcGhlcmljYWwuY29tcHV0ZUhlYWRpbmcodC5sYXN0UG9zaXRpb24sZikpLGM9by5nZW9tZXRyeS5zcGhlcmljYWwuY29tcHV0ZUhlYWRpbmcoZixkKS15KSwic2V0Um90YXRpb24iaW4gdCYmdC5zZXRSb3RhdGlvbihsK2MpLCJtb3ZlVG8iaW4gdD91WyJjIl0/dC5tb3ZlVG8oZCx7ZHVyYXRpb246cixhdXRvUm90YXRpb246c30pOnQubW92ZVRvKGQsZyk6KHQuc2V0UG9zaXRpb24oZCksby5ldmVudC50cmlnZ2VyKHQsIm1vdmVlbmQiLHt9KSl9Y2F0Y2goXyl7YShudWxsLF8pfX0pKTticmVhaztjYXNlImluY2x1ZGVQb2ludHMiOnRoaXMuZml0Qm91bmRzKGkucG9pbnRzKTticmVhaztjYXNlImdldFJlZ2lvbiI6dGhpcy5tYXBSZWFkeSgoZnVuY3Rpb24oKXtlLmJvdW5kc1JlYWR5KChmdW5jdGlvbigpe3ZhciB0PWUuX21hcC5nZXRCb3VuZHMoKSxuPXQuZ2V0U291dGhXZXN0KCkscj10LmdldE5vcnRoRWFzdCgpO2Eoe3NvdXRod2VzdDp7bGF0aXR1ZGU6ZyhuKSxsb25naXR1ZGU6bShuKX0sbm9ydGhlYXN0OntsYXRpdHVkZTpnKHIpLGxvbmdpdHVkZTptKHIpfX0pfSkpLHVbImMiXSYmKGUuaXNCb3VuZHNSZWFkeT0hMCxlLiRlbWl0KCJib3VuZHNyZWFkeSIpKX0pKTticmVhaztjYXNlImdldFNjYWxlIjp0aGlzLm1hcFJlYWR5KChmdW5jdGlvbigpe2Eoe3NjYWxlOmUuX21hcC5nZXRab29tKCl9KX0pKTticmVha319LGluaXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fbWFwcyxuPXYoZSx0aGlzLmNlbnRlci5sYXRpdHVkZSx0aGlzLmNlbnRlci5sb25naXR1ZGUpLHI9dGhpcy5fbWFwPW5ldyBlLk1hcCh0aGlzLiRyZWZzLm1hcCx7Y2VudGVyOm4sem9vbTpOdW1iZXIodGhpcy5zY2FsZSksZGlzYWJsZURvdWJsZUNsaWNrWm9vbTohMCxtYXBUeXBlQ29udHJvbDohMSx6b29tQ29udHJvbDohMSxzY2FsZUNvbnRyb2w6ITEscGFuQ29udHJvbDohMSxmdWxsc2NyZWVuQ29udHJvbDohMSxzdHJlZXRWaWV3Q29udHJvbDohMSxrZXlib2FyZFNob3J0Y3V0czohMSxtaW5ab29tOjUsbWF4Wm9vbToxOCxkcmFnZ2FibGU6ITB9KSxpPWUuZXZlbnQuYWRkTGlzdGVuZXIociwiYm91bmRzX2NoYW5nZWQiLChmdW5jdGlvbihlKXtpLnJlbW92ZSgpLHQuaXNCb3VuZHNSZWFkeT0hMCx0LiRlbWl0KCJib3VuZHNyZWFkeSIpfSkpO2Z1bmN0aW9uIG8oKXt2YXIgdD1yLmdldENlbnRlcigpO3JldHVybntzY2FsZTpyLmdldFpvb20oKSxjZW50ZXJMb2NhdGlvbjp7bGF0aXR1ZGU6Zyh0KSxsb25naXR1ZGU6bSh0KX19fWUuZXZlbnQuYWRkTGlzdGVuZXIociwiY2xpY2siLChmdW5jdGlvbihlKXt0LiR0cmlnZ2VyKCJjbGljayIse30se30pfSkpLGUuZXZlbnQuYWRkTGlzdGVuZXIociwiZHJhZ3N0YXJ0IiwoZnVuY3Rpb24oKXt0LiR0cmlnZ2VyKCJyZWdpb25jaGFuZ2UiLHt9LHt0eXBlOiJiZWdpbiIsY2F1c2VkQnk6Imdlc3R1cmUifSl9KSksZS5ldmVudC5hZGRMaXN0ZW5lcihyLCJkcmFnZW5kIiwoZnVuY3Rpb24oKXt0LiR0cmlnZ2VyKCJyZWdpb25jaGFuZ2UiLHt9LE9iamVjdC5hc3NpZ24oe3R5cGU6ImVuZCIsY2F1c2VkQnk6ImRyYWcifSxvKCkpKX0pKTt2YXIgYT1mdW5jdGlvbigpe3QuJGVtaXQoInVwZGF0ZTpzY2FsZSIsci5nZXRab29tKCkpLHQuJHRyaWdnZXIoInJlZ2lvbmNoYW5nZSIse30sT2JqZWN0LmFzc2lnbih7dHlwZToiZW5kIixjYXVzZWRCeToic2NhbGUifSxvKCkpKX07ZS5ldmVudC5hZGRMaXN0ZW5lcihyLCJ6b29tX2NoYW5nZWQiLGEpLGUuZXZlbnQuYWRkTGlzdGVuZXIociwiem9vbWVuZCIsYSksZS5ldmVudC5hZGRMaXN0ZW5lcihyLCJjZW50ZXJfY2hhbmdlZCIsKGZ1bmN0aW9uKCl7dmFyIGUsbixpPXIuZ2V0Q2VudGVyKCk7ZT1nKGkpLG49bShpKSx0LiRlbWl0KCJ1cGRhdGU6bGF0aXR1ZGUiLGUpLHQuJGVtaXQoInVwZGF0ZTpsb25naXR1ZGUiLG4pfSkpLHRoaXMucG9seWxpbmUmJkFycmF5LmlzQXJyYXkodGhpcy5wb2x5bGluZSkmJnRoaXMucG9seWxpbmUubGVuZ3RoJiZ0aGlzLmNyZWF0ZVBvbHlsaW5lKCksdGhpcy5jaXJjbGVzJiZBcnJheS5pc0FycmF5KHRoaXMuY2lyY2xlcykmJnRoaXMuY2lyY2xlcy5sZW5ndGgmJnRoaXMuY3JlYXRlQ2lyY2xlcygpLHRoaXMuc2hvd0xvY2F0aW9uJiZ0aGlzLmNyZWF0ZUxvY2F0aW9uKCksdGhpcy5pbmNsdWRlUG9pbnRzJiZBcnJheS5pc0FycmF5KHRoaXMuaW5jbHVkZVBvaW50cykmJnRoaXMuaW5jbHVkZVBvaW50cy5sZW5ndGgmJnRoaXMuZml0Qm91bmRzKHRoaXMuaW5jbHVkZVBvaW50cywoZnVuY3Rpb24oKXtyLnNldENlbnRlcihuKX0pKSx0aGlzLmlzTWFwUmVhZHk9ITAsdGhpcy4kZW1pdCgibWFwcmVhZHkiKSx0aGlzLiR0cmlnZ2VyKCJ1cGRhdGVkIix7fSx7fSl9LGNlbnRlckNoYW5nZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9tYXBzLG49TnVtYmVyKHRoaXMubGF0aXR1ZGUpLHI9TnVtYmVyKHRoaXMubG9uZ2l0dWRlKTtuPT09dGhpcy5jZW50ZXIubGF0aXR1ZGUmJnI9PT10aGlzLmNlbnRlci5sb25naXR1ZGV8fCh0aGlzLmNlbnRlci5sYXRpdHVkZT1uLHRoaXMuY2VudGVyLmxvbmdpdHVkZT1yLHRoaXMuX21hcCYmdGhpcy5tYXBSZWFkeSgoZnVuY3Rpb24oKXt2YXIgaT12KGUsbixyKTt0Ll9tYXAuc2V0Q2VudGVyKGkpfSkpKX0sY3JlYXRlUG9seWxpbmU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXBzLGU9dGhpcy5fbWFwLG49dGhpcy5wb2x5bGluZVN5bmM7dGhpcy5yZW1vdmVQb2x5bGluZSgpLHRoaXMucG9seWxpbmUuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG89W107ci5wb2ludHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49dVsiYyJdP1tlLmxvbmdpdHVkZSxlLmxhdGl0dWRlXTpwKHQsZS5sYXRpdHVkZSxlLmxvbmdpdHVkZSk7by5wdXNoKG4pfSkpO3ZhciBhPU51bWJlcihyLmJvcmRlcldpZHRoKXx8MCxzPU9iamVjdChpWyJqIl0pKHIuY29sb3IpLGM9cy5yLGw9cy5nLGY9cy5iLGQ9cy5hLGg9T2JqZWN0KGlbImoiXSkoci5ib3JkZXJDb2xvciksdj1oLnIsZz1oLmcsbT1oLmIsYj1oLmEseT17bWFwOmUsY2xpY2thYmxlOiExLHBhdGg6byxzdHJva2VXZWlnaHQ6KE51bWJlcihyLndpZHRoKXx8MCkrYXx8NixzdHJva2VEYXNoU3R5bGU6ci5kb3R0ZWRMaW5lPyJkYXNoIjoic29saWQifTt1WyJjIl0mJih5LnN0cm9rZUNvbG9yPXIuc3Ryb2tlQ29sb3IseS5zdHJva2VTdHlsZT1yLmRvdHRlZExpbmU/ImRhc2hlZCI6InNvbGlkIix5LmlzT3V0bGluZT0hIXIuYm9yZGVyV2lkdGgseS5ib3JkZXJXZWlnaHQ9ci5ib3JkZXJXaWR0aCx5Lm91dGxpbmVDb2xvcj1yLmJvcmRlckNvbG9yKTt2YXIgXz17bWFwOmUsY2xpY2thYmxlOiExLHBhdGg6byxzdHJva2VXZWlnaHQ6ci53aWR0aHx8NixzdHJva2VEYXNoU3R5bGU6ci5kb3R0ZWRMaW5lPyJkYXNoIjoic29saWQifTsiQ29sb3IiaW4gdD8oeS5zdHJva2VDb2xvcj1uZXcgdC5Db2xvcihjLGwsZixkKSxfLnN0cm9rZUNvbG9yPW5ldyB0LkNvbG9yKHYsZyxtLGIpKTooeS5zdHJva2VDb2xvcj0icmdiKCIuY29uY2F0KGMsIiwgIikuY29uY2F0KGwsIiwgIikuY29uY2F0KGYsIikiKSx5LnN0cm9rZU9wYWNpdHk9ZCxfLnN0cm9rZUNvbG9yPSJyZ2IoIi5jb25jYXQodiwiLCAiKS5jb25jYXQoZywiLCAiKS5jb25jYXQobSwiKSIpLF8uc3Ryb2tlT3BhY2l0eT1iKSxhJiZuLnB1c2gobmV3IHQuUG9seWxpbmUoXykpO3ZhciB3PW5ldyB0LlBvbHlsaW5lKHkpO3VbImMiXSYmZS5hZGQodyksbi5wdXNoKHcpfSkpfSxyZW1vdmVQb2x5bGluZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMucG9seWxpbmVTeW5jO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5zZXRNYXAobnVsbCl9KSksdC5zcGxpY2UoMCx0Lmxlbmd0aCl9LGNyZWF0ZUNpcmNsZXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXBzLGU9dGhpcy5fbWFwLG49dGhpcy5jaXJjbGVzU3luYzt0aGlzLnJlbW92ZUNpcmNsZXMoKSx0aGlzLmNpcmNsZXMuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG89dVsiYyJdP1tyLmxvbmdpdHVkZSxyLmxhdGl0dWRlXTpwKHQsci5sYXRpdHVkZSxyLmxvbmdpdHVkZSksYT17bWFwOmUsY2VudGVyOm8sY2xpY2thYmxlOiExLHJhZGl1czpyLnJhZGl1cyxzdHJva2VXZWlnaHQ6TnVtYmVyKHIuc3Ryb2tlV2lkdGgpfHwxLHN0cm9rZURhc2hTdHlsZToic29saWQifSxzPU9iamVjdChpWyJqIl0pKHIuZmlsbENvbG9yfHwiIzAwMDAwMDAwIiksYz1zLnIsbD1zLmcsZj1zLmIsZD1zLmEsaD1PYmplY3QoaVsiaiJdKShyLmNvbG9yfHwiIzAwMDAwMCIpLHY9aC5yLGc9aC5nLG09aC5iLGI9aC5hOyJDb2xvciJpbiB0PyhhLmZpbGxDb2xvcj1uZXcgdC5Db2xvcihjLGwsZixkKSxhLnN0cm9rZUNvbG9yPW5ldyB0LkNvbG9yKHYsZyxtLGIpKTooYS5maWxsQ29sb3I9InJnYigiLmNvbmNhdChjLCIsICIpLmNvbmNhdChsLCIsICIpLmNvbmNhdChmLCIpIiksYS5maWxsT3BhY2l0eT1kLGEuc3Ryb2tlQ29sb3I9InJnYigiLmNvbmNhdCh2LCIsICIpLmNvbmNhdChnLCIsICIpLmNvbmNhdChtLCIpIiksYS5zdHJva2VPcGFjaXR5PWIpO3ZhciB5PW5ldyB0LkNpcmNsZShhKTt1WyJjIl0mJmUuYWRkKHkpLG4ucHVzaCh5KX0pKX0scmVtb3ZlQ2lyY2xlczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY2lyY2xlc1N5bmM7dC5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnNldE1hcChudWxsKX0pKSx0LnNwbGljZSgwLHQubGVuZ3RoKX0sY3JlYXRlTG9jYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dGhpcy5fbWFwcyxyPXRoaXMuX21hcCxpPXRoaXMuX2xvY2F0aW9uO2kmJnRoaXMucmVtb3ZlTG9jYXRpb24oKSx1bmkuZ2V0TG9jYXRpb24oe3R5cGU6ImdjajAyIixzdWNjZXNzOmZ1bmN0aW9uKHQpe2lmKGk9PT1lLl9sb2NhdGlvbil7dmFyIG89dihuLHQubGF0aXR1ZGUsdC5sb25naXR1ZGUpO2lmKHVbImMiXSl7aT1uZXcgbi5NYXJrZXIoe3Bvc2l0aW9uOm8sbWFwOnIsZmxhdDohMCxyb3RhdGlvbjowfSk7dmFyIHM9bmV3IG4uSWNvbih7c2l6ZTpuZXcgbi5TaXplKDQ0LDQ0KSxpbWFnZTp1WyJhIl0saW1hZ2VTaXplOm5ldyBuLlNpemUoNDQsNDQpfSk7aS5zZXRJY29uKHMpLHIuYWRkKGkpfWVsc2UgaT1uZXcgbi5NYXJrZXIoe3Bvc2l0aW9uOm8sbWFwOnIsaWNvbjpuZXcgbi5NYXJrZXJJbWFnZSh1WyJhIl0sbnVsbCxudWxsLG5ldyBuLlBvaW50KDIyLDIyKSxuZXcgbi5TaXplKDQ0LDQ0KSksZmxhdDohMCxyb3RhdGlvbjowfSk7ZS5fbG9jYXRpb249aSxhKCksZS5fX29uQ29tcGFzc0NoYW5nZT1mdW5jdGlvbih0KXsic2V0Um90YXRpb24iaW4gaSYmaS5zZXRSb3RhdGlvbih0LmRpcmVjdGlvbil9LHVuaS5vbkNvbXBhc3NDaGFuZ2UoZS5fX29uQ29tcGFzc0NoYW5nZSl9fSxmYWlsOmZ1bmN0aW9uKGUpe3QuZXJyb3IoZSl9fSk7dmFyIG89dGhpcztmdW5jdGlvbiBhKCl7aT09PW8uX2xvY2F0aW9uJiZzZXRUaW1lb3V0KChmdW5jdGlvbigpe3VuaS5nZXRMb2NhdGlvbih7dHlwZToiZ2NqMDIiLHN1Y2Nlc3M6ZnVuY3Rpb24odCl7dmFyIGU9by5fbG9jYXRpb25Qb3NpdGlvbj12KG4sdC5sYXRpdHVkZSx0LmxvbmdpdHVkZSk7aS5zZXRQb3NpdGlvbihlKX0sZmFpbDpmdW5jdGlvbihlKXt0LmVycm9yKGUpfSxjb21wbGV0ZTpmdW5jdGlvbigpe2EoKX19KX0pLDNlNCl9fSxyZW1vdmVMb2NhdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2xvY2F0aW9uO3QmJih0LnNldE1hcChudWxsKSx0aGlzLl9sb2NhdGlvbj1udWxsLHRoaXMuX2xvY2F0aW9uUG9zaXRpb249bnVsbCx1bmkub2ZmQ29tcGFzc0NoYW5nZSh0aGlzLl9fb25Db21wYXNzQ2hhbmdlKSl9LGZpdEJvdW5kczpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMscj10aGlzLl9tYXBzO3RoaXMuYm91bmRzUmVhZHkoKGZ1bmN0aW9uKCl7dmFyIGk9bi5fbWFwO2lmKHVbImMiXSl7dmFyIG89W107dC5mb3JFYWNoKChmdW5jdGlvbih0KXtvLnB1c2goW3QubG9uZ2l0dWRlLHQubGF0aXR1ZGVdKX0pKTt2YXIgYT1sKHIuQm91bmRzLG8pO2kuc2V0Qm91bmRzKGEpfWVsc2V7dmFyIHM9bmV3IHIuTGF0TG5nQm91bmRzO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5sb25naXR1ZGUsbj10LmxhdGl0dWRlLGk9cChyLG4sZSk7cy5leHRlbmQoaSl9KSksaS5maXRCb3VuZHMocyl9ImZ1bmN0aW9uIj09PXR5cGVvZiBlJiZlKCl9KSksdVsiYyJdJiYodGhpcy5pc0JvdW5kc1JlYWR5PSEwLHRoaXMuJGVtaXQoImJvdW5kc3JlYWR5IikpfSxtYXBSZWFkeTpmdW5jdGlvbih0KXt0aGlzLmlzTWFwUmVhZHk/dCgpOnRoaXMuJG9uY2UoIm1hcHJlYWR5IiwoZnVuY3Rpb24oKXt0KCl9KSl9LGJvdW5kc1JlYWR5OmZ1bmN0aW9uKHQpe3RoaXMuaXNCb3VuZHNSZWFkeT90KCk6dGhpcy4kb25jZSgiYm91bmRzcmVhZHkiLChmdW5jdGlvbigpe3QoKX0pKX0sZ2V0TWFya2VyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcmtlcnNbdF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJ0cmFuc2xhdGVNYXJrZXI6IGZhaWwgY2Fubm90IGZpbmQgbWFya2VyIHdpdGggaWQgIit0KTtyZXR1cm4gZX19fX0pLmNhbGwodGhpcyxuKCI0MThiIilbImRlZmF1bHQiXSl9LGQwYWE6ZnVuY3Rpb24odCxlLG4pe30sZDI4MDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwib3BlbkxvY2F0aW9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKTt2YXIgcj17bGF0aXR1ZGU6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiEwfSxsb25naXR1ZGU6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiEwfSxzY2FsZTp7dHlwZTpOdW1iZXIsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7dD1NYXRoLmZsb29yKHQpLGUuc2NhbGU9dD49NSYmdDw9MTg/dDoxOH0sZGVmYXVsdDoxOH0sbmFtZTp7dHlwZTpTdHJpbmd9LGFkZHJlc3M6e3R5cGU6U3RyaW5nfX19LGQzMzQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSksbi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBofSkpLG4uZChlLCJjIiwoZnVuY3Rpb24oKXtyZXR1cm4gcH0pKSxuLmQoZSwiZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIG19KSk7dmFyIHI9bigiMzQwZCIpLGk9bigiZjQ0YyIpLG89L15cJHxfX2ZfX3xXaW5kb3ckfFdpbmRvd1N0eWxlJHxzZW5kSG9zdEV2ZW50fHNlbmROYXRpdmVFdmVudHxyZXN0b3JlR2xvYmFsfHJlcXVpcmVHbG9iYWx8Z2V0Q3VycmVudFN1Yk5WdWV8Z2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdHxecmVwb3J0fGludGVyY2VwdG9yc3xJbnRlcmNlcHRvciR8Z2V0U3ViTlZ1ZUJ5SWR8cmVxdWlyZU5hdGl2ZVBsdWdpbnxycHgycHh8dXB4MnB4fGhpZGVLZXlib2FyZHxjYW5JVXNlfF5jcmVhdGV8U3luYyR8TWFuYWdlciR8YmFzZTY0VG9BcnJheUJ1ZmZlcnxhcnJheUJ1ZmZlclRvQmFzZTY0fGdldExvY2FsZXxzZXRMb2NhbGV8aW52b2tlUHVzaENhbGxiYWNrfGdldFdpbmRvd0luZm98Z2V0RGV2aWNlSW5mb3xnZXRBcHBCYXNlSW5mb3xnZXRTeXN0ZW1TZXR0aW5nfGdldEFwcEF1dGhvcml6ZVNldHRpbmd8aW5pdFVUU3xyZXF1aXJlVVRTfHJlZ2lzdGVyVVRTLyxhPS9eY3JlYXRlfE1hbmFnZXIkLyxzPVsiY3JlYXRlQkxFQ29ubmVjdGlvbiJdLGM9WyJyZXF1ZXN0IiwiZG93bmxvYWRGaWxlIiwidXBsb2FkRmlsZSIsImNvbm5lY3RTb2NrZXQiXSx1PVsiY3JlYXRlQkxFQ29ubmVjdGlvbiIsImNyZWF0ZVB1c2hNZXNzYWdlIl0sbD0vXm9ufF5vZmYvO2Z1bmN0aW9uIGYodCl7cmV0dXJuIGEudGVzdCh0KSYmLTE9PT1zLmluZGV4T2YodCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gby50ZXN0KHQpJiYtMT09PXUuaW5kZXhPZih0KX1mdW5jdGlvbiBoKHQpe3JldHVybiBsLnRlc3QodCkmJiJvblB1c2giIT09dH1mdW5jdGlvbiBwKHQpe3JldHVybi0xIT09Yy5pbmRleE9mKHQpfWZ1bmN0aW9uIHYodCl7cmV0dXJuIHQudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuW251bGwsdF19KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3JldHVyblt0XX0pKX1mdW5jdGlvbiBnKHQpe3JldHVybiEoZih0KXx8ZCh0KXx8aCh0KSl9ZnVuY3Rpb24gbSh0LGUpe3JldHVybiBnKHQpJiZPYmplY3QoclsiayJdKShlKT9mdW5jdGlvbigpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sbz1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KG8+MT9vLTE6MCkscz0xO3M8bztzKyspYVtzLTFdPWFyZ3VtZW50c1tzXTtyZXR1cm4gT2JqZWN0KHJbImsiXSkobi5zdWNjZXNzKXx8T2JqZWN0KHJbImsiXSkobi5mYWlsKXx8T2JqZWN0KHJbImsiXSkobi5jb21wbGV0ZSk/T2JqZWN0KGlbImUiXSkodCxpWyJiIl0uYXBwbHkodm9pZCAwLFt0LGUsT2JqZWN0LmFzc2lnbih7fSxuKV0uY29uY2F0KGEpKSk6T2JqZWN0KGlbImUiXSkodCx2KG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe2lbImIiXS5hcHBseSh2b2lkIDAsW3QsZSxPYmplY3QuYXNzaWduKHt9LG4se3N1Y2Nlc3M6cixmYWlsOm99KV0uY29uY2F0KGEpKX0pKSkpfTplfVByb21pc2UucHJvdG90eXBlLmZpbmFsbHl8fChQcm9taXNlLnByb3RvdHlwZS5maW5hbGx5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY29uc3RydWN0b3I7cmV0dXJuIHRoaXMudGhlbigoZnVuY3Rpb24obil7cmV0dXJuIGUucmVzb2x2ZSh0KCkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSl9KSwoZnVuY3Rpb24obil7cmV0dXJuIGUucmVzb2x2ZSh0KCkpLnRoZW4oKGZ1bmN0aW9uKCl7dGhyb3cgbn0pKX0pKX0pfSxkMzU5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBjfSkpO3ZhciByPW4oImI0MzUiKTtmdW5jdGlvbiBpKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fWZ1bmN0aW9uIGEodCxlLG4pe3JldHVybiBlJiZvKHQucHJvdG90eXBlLGUpLG4mJm8odCxuKSx0fWZ1bmN0aW9uIHModCxlLG4pe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bix0fWZ1bmN0aW9uIGModCl7ZnVuY3Rpb24gZSgpe3ZhciB0PXRoaXMuZGl2LGU9dGhpcy5nZXRQYW5lcygpO2UuZmxvYXRQYW5lLmFwcGVuZENoaWxkKHQpfWZ1bmN0aW9uIG4oKXt2YXIgdD10aGlzLmRpdi5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcy5kaXYpfWZ1bmN0aW9uIG8oKXt2YXIgZT10aGlzLG49dGhpcy5vcHRpb247dGhpcy5UZXh0PW5ldyB0LlRleHQoe3RleHQ6bi5jb250ZW50LGFuY2hvcjoiYm90dG9tLWNlbnRlciIsb2Zmc2V0Om5ldyB0LlBpeGVsKDAsbi5vZmZzZXRZLTE2KSxzdHlsZTp7cGFkZGluZzoobi5wYWRkaW5nfHw4KSsicHgiLCJsaW5lLWhlaWdodCI6KG4uZm9udFNpemV8fDE0KSsicHgiLCJib3JkZXItcmFkaXVzIjoobi5ib3JkZXJSYWRpdXN8fDApKyJweCIsImJvcmRlci1jb2xvciI6IiIuY29uY2F0KG4uYmdDb2xvcnx8IiNmZmYiLCIgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQiKSwiYmFja2dyb3VuZC1jb2xvciI6bi5iZ0NvbG9yfHwiI2ZmZiIsImJveC1zaGFkb3ciOiIwIDJweCA2cHggMCByZ2JhKDExNCwgMTI0LCAyNDUsIC41KSIsInRleHQtYWxpZ24iOiJjZW50ZXIiLCJmb250LXNpemUiOihuLmZvbnRTaXplfHwxNCkrInB4Iixjb2xvcjpuLmNvbG9yfHwiIzAwMCJ9LHBvc2l0aW9uOm4ucG9zaXRpb259KSx0aGlzLlRleHQuZG9tLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoZnVuY3Rpb24odCl7YyhlLHQpfSkpLHRoaXMuVGV4dC5kb20uYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLChmdW5jdGlvbih0KXtjKGUsdCl9KSksdGhpcy5UZXh0LnNldE1hcChuLm1hcCl9ZnVuY3Rpb24gYyh0LGUpe3QuY2FsbGJhY2soZSx0LnBhcmVudCksZS5zdG9wUHJvcGFnYXRpb24oKX1mdW5jdGlvbiB1KCl7dGhpcy5UZXh0JiZ0aGlzLm9wdGlvbi5tYXAucmVtb3ZlKHRoaXMuVGV4dCl9dmFyIGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGM9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsbD1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMDtpZihpKHRoaXMsdCkscyh0aGlzLCJvcHRpb24iLHZvaWQgMCkscyh0aGlzLCJwb3NpdGlvbiIsdm9pZCAwKSxzKHRoaXMsImluZGV4Iix2b2lkIDApLHModGhpcywidmlzaWJsZSIsdm9pZCAwKSxzKHRoaXMsImFsd2F5c1Zpc2libGUiLHZvaWQgMCkscyh0aGlzLCJkaXYiLHZvaWQgMCkscyh0aGlzLCJ0cmlhbmdsZSIsdm9pZCAwKSxzKHRoaXMsImNhbGxiYWNrIix2b2lkIDApLHModGhpcywicGFyZW50Iix2b2lkIDApLHModGhpcywiVGV4dCIsdm9pZCAwKSxzKHRoaXMsImNyZWF0ZUFNYXBUZXh0IixvKSxzKHRoaXMsInJlbW92ZUFNYXBUZXh0Iix1KSxzKHRoaXMsIm9uQWRkIixlKSxzKHRoaXMsImNvbnN0cnVjdCIsZSkscyh0aGlzLCJvblJlbW92ZSIsbikscyh0aGlzLCJkZXN0cm95IixuKSx0aGlzLm9wdGlvbj1hfHx7fSx0aGlzLnZpc2libGU9dGhpcy5hbHdheXNWaXNpYmxlPSJBTFdBWVMiPT09YS5kaXNwbGF5LHJbImMiXSl0aGlzLmNhbGxiYWNrPWMsdGhpcy5wYXJlbnQ9bCx0aGlzLnZpc2libGUmJnRoaXMuY3JlYXRlQU1hcFRleHQoKTtlbHNle3ZhciBmPWEubWFwO3RoaXMucG9zaXRpb249YS5wb3NpdGlvbix0aGlzLmluZGV4PTE7dmFyIGQ9dGhpcy5kaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksaD1kLnN0eWxlO2gucG9zaXRpb249ImFic29sdXRlIixoLndoaXRlU3BhY2U9Im5vd3JhcCIsaC50cmFuc2Zvcm09InRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtMTAwJSkiLGguekluZGV4PSIxIixoLmJveFNoYWRvdz1hLmJveFNoYWRvd3x8Im5vbmUiLGguZGlzcGxheT10aGlzLnZpc2libGU/ImJsb2NrIjoibm9uZSI7dmFyIHA9dGhpcy50cmlhbmdsZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtwLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJwb3NpdGlvbjogYWJzb2x1dGU7d2hpdGUtc3BhY2U6IG5vd3JhcDtib3JkZXItd2lkdGg6IDRweDtib3JkZXItc3R5bGU6IHNvbGlkO2JvcmRlci1jb2xvcjogI2ZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItaW1hZ2U6IGluaXRpYWw7Zm9udC1zaXplOiAxMnB4O3BhZGRpbmc6IDBweDtiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDt3aWR0aDogMHB4O2hlaWdodDogMHB4O3RyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDEwMCUpO2xlZnQ6IDUwJTtib3R0b206IDA7IiksdGhpcy5zZXRTdHlsZShhKSxkLmFwcGVuZENoaWxkKHApLGYmJnRoaXMuc2V0TWFwKGYpfX1yZXR1cm4gYSh0LFt7a2V5OiJvbmNsaWNrIixzZXQ6ZnVuY3Rpb24odCl7dGhpcy5kaXYub25jbGljaz10fSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXYub25jbGlja319XSksYSh0LFt7a2V5OiJzZXRPcHRpb24iLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9uPXQsIkFMV0FZUyI9PT10LmRpc3BsYXk/dGhpcy5hbHdheXNWaXNpYmxlPXRoaXMudmlzaWJsZT0hMDp0aGlzLmFsd2F5c1Zpc2libGU9ITEsclsiYyJdP3RoaXMudmlzaWJsZSYmdGhpcy5jcmVhdGVBTWFwVGV4dCgpOih0aGlzLnNldFBvc2l0aW9uKHQucG9zaXRpb24pLHRoaXMuc2V0U3R5bGUodCkpfX0se2tleToic2V0U3R5bGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGl2LG49ZS5zdHlsZTtlLmlubmVyVGV4dD10LmNvbnRlbnR8fCIiLG4ubGluZUhlaWdodD0odC5mb250U2l6ZXx8MTQpKyJweCIsbi5mb250U2l6ZT0odC5mb250U2l6ZXx8MTQpKyJweCIsbi5wYWRkaW5nPSh0LnBhZGRpbmd8fDgpKyJweCIsbi5jb2xvcj10LmNvbG9yfHwiIzAwMCIsbi5ib3JkZXJSYWRpdXM9KHQuYm9yZGVyUmFkaXVzfHwwKSsicHgiLG4uYmFja2dyb3VuZENvbG9yPXQuYmdDb2xvcnx8IiNmZmYiLG4ubWFyZ2luVG9wPSItIisoKHQudG9wfHwwKSs1KSsicHgiLHRoaXMudHJpYW5nbGUuc3R5bGUuYm9yZGVyQ29sb3I9IiIuY29uY2F0KHQuYmdDb2xvcnx8IiNmZmYiLCIgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQiKX19LHtrZXk6InNldFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnBvc2l0aW9uPXQsdGhpcy5kcmF3KCl9fSx7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0UHJvamVjdGlvbigpO2lmKHRoaXMucG9zaXRpb24mJnRoaXMuZGl2JiZ0KXt2YXIgZT10LmZyb21MYXRMbmdUb0RpdlBpeGVsKHRoaXMucG9zaXRpb24pLG49dGhpcy5kaXYuc3R5bGU7bi5sZWZ0PWUueCsicHgiLG4udG9wPWUueSsicHgifX19LHtrZXk6ImNoYW5nZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kaXYuc3R5bGU7dC5kaXNwbGF5PXRoaXMudmlzaWJsZT8iYmxvY2siOiJub25lIn19XSksdH0oKTtpZighclsiYyJdKXt2YXIgZj1sLnByb3RvdHlwZSxkPW5ldyh0Lk92ZXJsYXlWaWV3fHx0Lk92ZXJsYXkpO2Zvcih2YXIgaCBpbiBkKWggaW4gZnx8KGZbaF09ZFtoXSl9cmV0dXJuIGx9fSxkNGM5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXt0aGlzLl9kcmFnPXQsdGhpcy5fZHJhZ0xvZz1NYXRoLmxvZyh0KSx0aGlzLl94PTAsdGhpcy5fdj0wLHRoaXMuX3N0YXJ0VGltZT0wfW4uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKSxyLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt0aGlzLl94PXQsdGhpcy5fdj1lLHRoaXMuX3N0YXJ0VGltZT0obmV3IERhdGUpLmdldFRpbWUoKX0sci5wcm90b3R5cGUuc2V0VmVsb2NpdHlCeUVuZD1mdW5jdGlvbih0KXt0aGlzLl92PSh0LXRoaXMuX3gpKnRoaXMuX2RyYWdMb2cvKE1hdGgucG93KHRoaXMuX2RyYWcsMTAwKS0xKX0sci5wcm90b3R5cGUueD1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9KChuZXcgRGF0ZSkuZ2V0VGltZSgpLXRoaXMuX3N0YXJ0VGltZSkvMWUzKSxlPXQ9PT10aGlzLl9kdCYmdGhpcy5fcG93RHJhZ0R0P3RoaXMuX3Bvd0RyYWdEdDp0aGlzLl9wb3dEcmFnRHQ9TWF0aC5wb3codGhpcy5fZHJhZyx0KSx0aGlzLl9kdD10LHRoaXMuX3grdGhpcy5fdiplL3RoaXMuX2RyYWdMb2ctdGhpcy5fdi90aGlzLl9kcmFnTG9nfSxyLnByb3RvdHlwZS5keD1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9KChuZXcgRGF0ZSkuZ2V0VGltZSgpLXRoaXMuX3N0YXJ0VGltZSkvMWUzKSxlPXQ9PT10aGlzLl9kdCYmdGhpcy5fcG93RHJhZ0R0P3RoaXMuX3Bvd0RyYWdEdDp0aGlzLl9wb3dEcmFnRHQ9TWF0aC5wb3codGhpcy5fZHJhZyx0KSx0aGlzLl9kdD10LHRoaXMuX3YqZX0sci5wcm90b3R5cGUuZG9uZT1mdW5jdGlvbigpe3JldHVybiBNYXRoLmFicyh0aGlzLmR4KCkpPDN9LHIucHJvdG90eXBlLnJlY29uZmlndXJlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMueCgpLG49dGhpcy5keCgpO3RoaXMuX2RyYWc9dCx0aGlzLl9kcmFnTG9nPU1hdGgubG9nKHQpLHRoaXMuc2V0KGUsbil9LHIucHJvdG90eXBlLmNvbmZpZ3VyYXRpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVyblt7bGFiZWw6IkZyaWN0aW9uIixyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIHQuX2RyYWd9LHdyaXRlOmZ1bmN0aW9uKGUpe3QucmVjb25maWd1cmUoZSl9LG1pbjouMDAxLG1heDouMSxzdGVwOi4wMDF9XX19LGQ0ZWU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe2lmKHQpcmV0dXJuIHQuJGhvbGRlcjt2YXIgZT1nZXRDdXJyZW50UGFnZXMoKSxuPWUubGVuZ3RoO3JldHVybiBuP2Vbbi0xXS4kaG9sZGVyOnZvaWQgMH1mdW5jdGlvbiBpKHQpe3ZhciBlPWdldEN1cnJlbnRQYWdlcygpLG49ZS5sZW5ndGg7cmV0dXJuISFuJiZlW24tMV0uJGhvbGRlcj09PXR9bi5yKGUpLG4uZChlLCJnZXRQYWdlSG9sZGVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKSxuLmQoZSwiaXNDdXJyZW50UGFnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSl9LGQ0ZmM6ZnVuY3Rpb24odCxlLG4pe30sZDUxNDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbigidW5pLWNoZWNrYm94LWdyb3VwIix0Ll9nKHt9LHQuJGxpc3RlbmVycyksW3QuX3QoImRlZmF1bHQiKV0sMil9LGk9W10sbz1uKCI5MDllIiksYT17bmFtZToiQ2hlY2tib3hHcm91cCIsbWl4aW5zOltvWyJhIl0sb1siZiJdXSxwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57Y2hlY2tib3hMaXN0OltdfX0sbGlzdGVuZXJzOnsiQGNoZWNrYm94LWNoYW5nZSI6Il9jaGFuZ2VIYW5kbGVyIiwiQGNoZWNrYm94LWdyb3VwLXVwZGF0ZSI6Il9jaGVja2JveEdyb3VwVXBkYXRlSGFuZGxlciJ9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLiRkaXNwYXRjaCgiRm9ybSIsInVuaS1mb3JtLWdyb3VwLXVwZGF0ZSIse3R5cGU6ImFkZCIsdm06dGhpc30pfSxiZWZvcmVEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy4kZGlzcGF0Y2goIkZvcm0iLCJ1bmktZm9ybS1ncm91cC11cGRhdGUiLHt0eXBlOiJyZW1vdmUiLHZtOnRoaXN9KX0sbWV0aG9kczp7X2NoYW5nZUhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9W107dGhpcy5jaGVja2JveExpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jaGVja2JveENoZWNrZWQmJmUucHVzaCh0LnZhbHVlKX0pKSx0aGlzLiR0cmlnZ2VyKCJjaGFuZ2UiLHQse3ZhbHVlOmV9KX0sX2NoZWNrYm94R3JvdXBVcGRhdGVIYW5kbGVyOmZ1bmN0aW9uKHQpe2lmKCJhZGQiPT09dC50eXBlKXRoaXMuY2hlY2tib3hMaXN0LnB1c2godC52bSk7ZWxzZXt2YXIgZT10aGlzLmNoZWNrYm94TGlzdC5pbmRleE9mKHQudm0pO3RoaXMuY2hlY2tib3hMaXN0LnNwbGljZShlLDEpfX0sX2dldEZvcm1EYXRhOmZ1bmN0aW9uKCl7dmFyIHQ9e307aWYoIiIhPT10aGlzLm5hbWUpe3ZhciBlPVtdO3RoaXMuY2hlY2tib3hMaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuY2hlY2tib3hDaGVja2VkJiZlLnB1c2godC52YWx1ZSl9KSksdC52YWx1ZT1lLHQua2V5PXRoaXMubmFtZX1yZXR1cm4gdH19fSxzPWEsYz0obigiNzZkNyIpLG4oIjg4NDQiKSksdT1PYmplY3QoY1siYSJdKShzLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPXUuZXhwb3J0c30sZDU1ZjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbigidW5pLWF1ZGlvIix0Ll9nKHthdHRyczp7aWQ6dC5pZCxjb250cm9sczohIXQuY29udHJvbHN9fSx0LiRsaXN0ZW5lcnMpLFtuKCJhdWRpbyIse3JlZjoiYXVkaW8iLHN0YXRpY1N0eWxlOntkaXNwbGF5OiJub25lIn0sYXR0cnM6e2xvb3A6dC5sb29wfX0pLG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktYXVkaW8tZGVmYXVsdCJ9LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLWF1ZGlvLWxlZnQiLHN0eWxlOiJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIit0LiRnZXRSZWFsUGF0aCh0LnBvc3RlcikrIik7In0sW24oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktYXVkaW8tYnV0dG9uIixjbGFzczp7cGxheTohdC5wbGF5aW5nLHBhdXNlOnQucGxheWluZ30sb246e2NsaWNrOnQudHJpZ2dlcn19KV0pLG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktYXVkaW8tcmlnaHQifSxbbigiZGl2Iix7c3RhdGljQ2xhc3M6InVuaS1hdWRpby10aW1lIn0sW3QuX3YoIiAiK3QuX3ModC5jdXJyZW50VGltZSkrIiAiKV0pLG4oImRpdiIse3N0YXRpY0NsYXNzOiJ1bmktYXVkaW8taW5mbyJ9LFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLWF1ZGlvLW5hbWUifSxbdC5fdigiICIrdC5fcyh0Lm5hbWUpKyIgIildKSxuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLWF1ZGlvLWF1dGhvciJ9LFt0Ll92KCIgIit0Ll9zKHQuYXV0aG9yKSsiICIpXSldKV0pXSldKX0saT1bXSxvPW4oIjkwOWUiKSxhPXtuYW1lOiJBdWRpbyIsbWl4aW5zOltvWyJnIl1dLHByb3BzOntpZDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sc3JjOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxsb29wOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sY29udHJvbHM6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxwb3N0ZXI6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LG5hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LGF1dGhvcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57cGxheWluZzohMSxjdXJyZW50VGltZTp0aGlzLmdldFRpbWUoMCl9fSx3YXRjaDp7c3JjOmZ1bmN0aW9uKHQpe3RoaXMuJHJlZnMuYXVkaW8mJih0aGlzLiRyZWZzLmF1ZGlvLnNyYz10aGlzLiRnZXRSZWFsUGF0aCh0KSl9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuJHJlZnMuYXVkaW87ZS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKGZ1bmN0aW9uKGUpe3QucGxheWluZz0hMSx0LiR0cmlnZ2VyKCJlcnJvciIsZSx7fSl9KSksZS5hZGRFdmVudExpc3RlbmVyKCJwbGF5IiwoZnVuY3Rpb24oZSl7dC5wbGF5aW5nPSEwLHQuJHRyaWdnZXIoInBsYXkiLGUse30pfSkpLGUuYWRkRXZlbnRMaXN0ZW5lcigicGF1c2UiLChmdW5jdGlvbihlKXt0LnBsYXlpbmc9ITEsdC4kdHJpZ2dlcigicGF1c2UiLGUse30pfSkpLGUuYWRkRXZlbnRMaXN0ZW5lcigiZW5kZWQiLChmdW5jdGlvbihlKXt0LnBsYXlpbmc9ITEsdC4kdHJpZ2dlcigiZW5kZWQiLGUse30pfSkpLGUuYWRkRXZlbnRMaXN0ZW5lcigidGltZXVwZGF0ZSIsKGZ1bmN0aW9uKG4pe3ZhciByPWUuY3VycmVudFRpbWU7dC5jdXJyZW50VGltZT10LmdldFRpbWUocik7dmFyIGk9ZS5kdXJhdGlvbjt0LiR0cmlnZ2VyKCJ0aW1ldXBkYXRlIixuLHtjdXJyZW50VGltZTpyLGR1cmF0aW9uOml9KX0pKSxlLnNyYz10aGlzLiRnZXRSZWFsUGF0aCh0aGlzLnNyYyl9LG1ldGhvZHM6e19oYW5kbGVTdWJzY3JpYmU6ZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLG49dC5kYXRhLHI9dm9pZCAwPT09bj97fTpuLGk9dGhpcy4kcmVmcy5hdWRpbztzd2l0Y2goZSl7Y2FzZSJzZXRTcmMiOmkuc3JjPXRoaXMuJGdldFJlYWxQYXRoKHIuc3JjKSx0aGlzLiRlbWl0KCJ1cGRhdGU6c3JjIixyLnNyYyk7YnJlYWs7Y2FzZSJwbGF5IjppLnBsYXkoKTticmVhaztjYXNlInBhdXNlIjppLnBhdXNlKCk7YnJlYWs7Y2FzZSJzZWVrIjppLmN1cnJlbnRUaW1lPXIucG9zaXRpb247YnJlYWt9fSx0cmlnZ2VyOmZ1bmN0aW9uKCl7dGhpcy5wbGF5aW5nP3RoaXMuJHJlZnMuYXVkaW8ucGF1c2UoKTp0aGlzLiRyZWZzLmF1ZGlvLnBsYXkoKX0sZ2V0VGltZTpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLmZsb29yKHQvMzYwMCksbj1NYXRoLmZsb29yKHQlMzYwMC82MCkscj1NYXRoLmZsb29yKHQlMzYwMCU2MCk7ZT0oZTwxMD8iMCI6IiIpK2Usbj0objwxMD8iMCI6IiIpK24scj0ocjwxMD8iMCI6IiIpK3I7dmFyIGk9bisiOiIrcjtyZXR1cm4iMDAiIT09ZSYmKGk9ZSsiOiIraSksaX19fSxzPWEsYz0obigiY2JlMiIpLG4oIjg4NDQiKSksdT1PYmplY3QoY1siYSJdKShzLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPXUuZXhwb3J0c30sZDYzODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjEzMzIiKSxpPW4ubihyKTtpLmF9LGQ2NjE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCxyKXtuLmQoZSwiYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSksbi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBsfSkpLG4oImE3NzAiKTt2YXIgaT1uKCIzOGNlIiksbz1uKCIwZGIzIik7ZnVuY3Rpb24gYSh0KXtyZXR1cm57Ym90dG9tOnQuYm90dG9tLGhlaWdodDp0LmhlaWdodCxsZWZ0OnQubGVmdCxyaWdodDp0LnJpZ2h0LHRvcDp0LnRvcCx3aWR0aDp0LndpZHRofX1mdW5jdGlvbiBzKHQpe3ZhciBlPXQuaW50ZXJzZWN0aW9uUmF0aW8sbj10LmJvdW5kaW5nQ2xpZW50UmVjdCxyPW4uaGVpZ2h0LGk9bi53aWR0aCxvPXQuaW50ZXJzZWN0aW9uUmVjdCxhPW8uaGVpZ2h0LHM9by53aWR0aDtyZXR1cm4gMCE9PWU/ZTphPT09cj9zL2k6YS9yfXZhciBjPXt9O2Z1bmN0aW9uIHUoZSxuKXt2YXIgdSxsPWUucmVxSWQsZj1lLmNvbXBvbmVudCxkPWUub3B0aW9ucztpZihuLl9pc1Z1ZSl1PW47ZWxzZXt2YXIgaD1nZXRDdXJyZW50UGFnZXMoKSxwPWguZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuJHBhZ2UuaWQ9PT1ufSkpO2lmKCFwKXRocm93IG5ldyBFcnJvcigiTm90IEZvdW5k77yaUGFnZVsiLmNvbmNhdChuLCJdIikpO3U9cC4kdm19dmFyIHY9T2JqZWN0KG9bImIiXSkoZix1KSxnPWQucmVsYXRpdmVUb1NlbGVjdG9yP3YucXVlcnlTZWxlY3RvcihkLnJlbGF0aXZlVG9TZWxlY3Rvcik6bnVsbCxtPWNbbF09bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChmdW5jdGlvbihlLG4pe2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5wdWJsaXNoSGFuZGxlcigib25SZXF1ZXN0Q29tcG9uZW50T2JzZXJ2ZXIiLHtyZXFJZDpsLHJlczp7aW50ZXJzZWN0aW9uUmF0aW86cyhlKSxpbnRlcnNlY3Rpb25SZWN0OmEoZS5pbnRlcnNlY3Rpb25SZWN0KSxib3VuZGluZ0NsaWVudFJlY3Q6YShlLmJvdW5kaW5nQ2xpZW50UmVjdCkscmVsYXRpdmVSZWN0OmEoZS5yb290Qm91bmRzKSx0aW1lOkRhdGUubm93KCksZGF0YXNldDpPYmplY3QoaVsiYiJdKShlLnRhcmdldCksaWQ6ZS50YXJnZXQuaWR9fSl9KSl9KSx7cm9vdDpnLHJvb3RNYXJnaW46ZC5yb290TWFyZ2luLHRocmVzaG9sZDpkLnRocmVzaG9sZHN9KTtpZihkLm9ic2VydmVBbGwpbS5VU0VfTVVUQVRJT05fT0JTRVJWRVI9ITAsQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKHYucXVlcnlTZWxlY3RvckFsbChkLnNlbGVjdG9yKSwoZnVuY3Rpb24odCl7dD9tLm9ic2VydmUodCk6ci53YXJuKCJOb2RlICIuY29uY2F0KGQuc2VsZWN0b3IsIiBpcyBub3QgZm91bmQuIEludGVyc2VjdGlvbiBvYnNlcnZlciB3aWxsIG5vdCB0cmlnZ2VyLiIpKX0pKTtlbHNle20uVVNFX01VVEFUSU9OX09CU0VSVkVSPSExO3ZhciBiPXYubWF0Y2hlcyhkLnNlbGVjdG9yKT92OnYucXVlcnlTZWxlY3RvcihkLnNlbGVjdG9yKTtpZighYilyZXR1cm4gdm9pZCByLndhcm4oIk5vZGUgIi5jb25jYXQoZC5zZWxlY3RvciwiIGlzIG5vdCBmb3VuZC4gSW50ZXJzZWN0aW9uIG9ic2VydmVyIHdpbGwgbm90IHRyaWdnZXIuIikpO20ub2JzZXJ2ZShiKX19ZnVuY3Rpb24gbChlKXt2YXIgbj1lLnJlcUlkLHI9Y1tuXTtyJiYoci5kaXNjb25uZWN0KCksZGVsZXRlIGNbbl0sdC5wdWJsaXNoSGFuZGxlcigib25SZXF1ZXN0Q29tcG9uZW50T2JzZXJ2ZXIiLHtyZXFJZDpuLHJlcUVuZDohMH0pKX19KS5jYWxsKHRoaXMsbigiMzFkMiIpLG4oIjQxOGIiKVsiZGVmYXVsdCJdKX0sZDZmYjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuKCIwMzcyIik7dmFyIHIsaSxvPW4oIjkwOWUiKSxhPXtuYW1lOiJCdXR0b24iLG1peGluczpbb1siYyJdLG9bImEiXSxvWyJmIl1dLHByb3BzOntob3ZlckNsYXNzOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJidXR0b24taG92ZXIifSxkaXNhYmxlZDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LGlkOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxob3ZlclN0b3BQcm9wYWdhdGlvbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGhvdmVyU3RhcnRUaW1lOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjIwfSxob3ZlclN0YXlUaW1lOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjcwfSxmb3JtVHlwZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIix2YWxpZGF0b3I6ZnVuY3Rpb24odCl7cmV0dXJuflsiIiwic3VibWl0IiwicmVzZXQiXS5pbmRleE9mKHQpfX0sb3BlblR5cGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2NsaWNrRnVuY3Rpb246bnVsbH19LG1ldGhvZHM6e19vbkNsaWNrOmZ1bmN0aW9uKHQsZSl7dGhpcy5kaXNhYmxlZHx8KGUmJnRoaXMuJGVsLmNsaWNrKCksdGhpcy5mb3JtVHlwZT90aGlzLiRkaXNwYXRjaCgiRm9ybSIsInN1Ym1pdCI9PT10aGlzLmZvcm1UeXBlPyJ1bmktZm9ybS1zdWJtaXQiOiJ1bmktZm9ybS1yZXNldCIse3R5cGU6dGhpcy5mb3JtVHlwZX0pOnRoaXMub3BlblR5cGUpfSxfYmluZE9iamVjdExpc3RlbmVyczpmdW5jdGlvbih0LGUpe2lmKGUpZm9yKHZhciBuIGluIGUpe3ZhciByPXQub25bbl0saT1lW25dO3Qub25bbl09cj9bXS5jb25jYXQocixpKTppfXJldHVybiB0fX0scmVuZGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiB0aGlzLiRsaXN0ZW5lcnMmJk9iamVjdC5rZXlzKHRoaXMuJGxpc3RlbmVycykuZm9yRWFjaCgoZnVuY3Rpb24odCl7KCFlLmRpc2FibGVkfHwiY2xpY2siIT09dCYmInRhcCIhPT10KSYmKG5bdF09ZS4kbGlzdGVuZXJzW3RdKX0pKSx0aGlzLmhvdmVyQ2xhc3MmJiJub25lIiE9PXRoaXMuaG92ZXJDbGFzcz90KCJ1bmktYnV0dG9uIix0aGlzLl9iaW5kT2JqZWN0TGlzdGVuZXJzKHtjbGFzczpbdGhpcy5ob3ZlcmluZz90aGlzLmhvdmVyQ2xhc3M6IiJdLGF0dHJzOntkaXNhYmxlZDp0aGlzLmRpc2FibGVkLGlkOnRoaXMuaWR9LG9uOnt0b3VjaHN0YXJ0OnRoaXMuX2hvdmVyVG91Y2hTdGFydCx0b3VjaGVuZDp0aGlzLl9ob3ZlclRvdWNoRW5kLHRvdWNoY2FuY2VsOnRoaXMuX2hvdmVyVG91Y2hDYW5jZWwsbW91c2Vkb3duOnRoaXMuX2hvdmVyTW91c2Vkb3duLG1vdXNldXA6dGhpcy5faG92ZXJNb3VzZXVwLGNsaWNrOnRoaXMuX29uQ2xpY2t9fSxuKSx0aGlzLiRzbG90cy5kZWZhdWx0KTp0KCJ1bmktYnV0dG9uIix0aGlzLl9iaW5kT2JqZWN0TGlzdGVuZXJzKHtjbGFzczpbdGhpcy5ob3ZlcmluZz90aGlzLmhvdmVyQ2xhc3M6IiJdLGF0dHJzOntkaXNhYmxlZDp0aGlzLmRpc2FibGVkLGlkOnRoaXMuaWR9LG9uOntjbGljazp0aGlzLl9vbkNsaWNrfX0sbiksdGhpcy4kc2xvdHMuZGVmYXVsdCl9LGxpc3RlbmVyczp7ImxhYmVsLWNsaWNrIjoiX29uQ2xpY2siLCJAbGFiZWwtY2xpY2siOiJfb25DbGljayJ9fSxzPWEsYz0obigiM2U5MiIpLG4oIjg4NDQiKSksdT1PYmplY3QoY1siYSJdKShzLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPXUuZXhwb3J0c30sZDkxYTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwiZ2V0UmVjb3JkZXJNYW5hZ2VyIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKTt2YXIgcj1uKCI3NDVhIik7ZnVuY3Rpb24gaSh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8odCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX1mdW5jdGlvbiBhKHQsZSxuKXtyZXR1cm4gZSYmbyh0LnByb3RvdHlwZSxlKSxuJiZvKHQsbiksdH12YXIgcyxjPXtwYXVzZTpudWxsLHJlc3VtZTpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsLGVycm9yOm51bGx9LHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7aSh0aGlzLHQpLE9iamVjdChyWyJkIl0pKCJvblJlY29yZGVyU3RhdGVDaGFuZ2UiLChmdW5jdGlvbih0KXt2YXIgZT10LnN0YXRlO2RlbGV0ZSB0LnN0YXRlLGRlbGV0ZSB0LmVyck1zZywiZnVuY3Rpb24iPT09dHlwZW9mIGNbZV0mJmNbZV0odCl9KSl9cmV0dXJuIGEodCxbe2tleToib25FcnJvciIsdmFsdWU6ZnVuY3Rpb24odCl7Yy5lcnJvcj10fX0se2tleToib25GcmFtZVJlY29yZGVkIix2YWx1ZTpmdW5jdGlvbih0KXt9fSx7a2V5OiJvbkludGVycnVwdGlvbkJlZ2luIix2YWx1ZTpmdW5jdGlvbih0KXt9fSx7a2V5OiJvbkludGVycnVwdGlvbkVuZCIsdmFsdWU6ZnVuY3Rpb24odCl7fX0se2tleToib25QYXVzZSIsdmFsdWU6ZnVuY3Rpb24odCl7Yy5wYXVzZT10fX0se2tleToib25SZXN1bWUiLHZhbHVlOmZ1bmN0aW9uKHQpe2MucmVzdW1lPXR9fSx7a2V5OiJvblN0YXJ0Iix2YWx1ZTpmdW5jdGlvbih0KXtjLnN0YXJ0PXR9fSx7a2V5OiJvblN0b3AiLHZhbHVlOmZ1bmN0aW9uKHQpe2Muc3RvcD10fX0se2tleToicGF1c2UiLHZhbHVlOmZ1bmN0aW9uKCl7T2JqZWN0KHJbImMiXSkoIm9wZXJhdGVSZWNvcmRlciIse29wZXJhdGlvblR5cGU6InBhdXNlIn0pfX0se2tleToicmVzdW1lIix2YWx1ZTpmdW5jdGlvbigpe09iamVjdChyWyJjIl0pKCJvcGVyYXRlUmVjb3JkZXIiLHtvcGVyYXRpb25UeXBlOiJyZXN1bWUifSl9fSx7a2V5OiJzdGFydCIsdmFsdWU6ZnVuY3Rpb24odCl7T2JqZWN0KHJbImMiXSkoIm9wZXJhdGVSZWNvcmRlciIsT2JqZWN0LmFzc2lnbih7fSx0LHtvcGVyYXRpb25UeXBlOiJzdGFydCJ9KSl9fSx7a2V5OiJzdG9wIix2YWx1ZTpmdW5jdGlvbigpe09iamVjdChyWyJjIl0pKCJvcGVyYXRlUmVjb3JkZXIiLHtvcGVyYXRpb25UeXBlOiJzdG9wIn0pfX1dKSx0fSgpO2Z1bmN0aW9uIGwoKXtyZXR1cm4gc3x8KHM9bmV3IHUpfX0sZDkzNzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjc4MjEiKSxpPW4ubihyKTtpLmF9LGQ5N2Q6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSk7dmFyIHI9L148KFstQS1aYS16MC05X10rKSgoPzpccytbYS16QS1aXzpdWy1hLXpBLVowLTlfOi5dKig/OlxzKj1ccyooPzooPzoiW14iXSoiKXwoPzonW14nXSonKXxbXj5cc10rKSk/KSopXHMqKFwvPyk+LyxpPS9ePFwvKFstQS1aYS16MC05X10rKVtePl0qPi8sbz0vKFthLXpBLVpfOl1bLWEtekEtWjAtOV86Ll0qKSg/OlxzKj1ccyooPzooPzoiKCg/OlxcLnxbXiJdKSopIil8KD86JygoPzpcXC58W14nXSkqKScpfChbXj5cc10rKSkpPy9nLGE9aCgiYXJlYSxiYXNlLGJhc2Vmb250LGJyLGNvbCxmcmFtZSxocixpbWcsaW5wdXQsbGluayxtZXRhLHBhcmFtLGVtYmVkLGNvbW1hbmQsa2V5Z2VuLHNvdXJjZSx0cmFjayx3YnIiKSxzPWgoImEsYWRkcmVzcyxhcnRpY2xlLGFwcGxldCxhc2lkZSxhdWRpbyxibG9ja3F1b3RlLGJ1dHRvbixjYW52YXMsY2VudGVyLGRkLGRlbCxkaXIsZGl2LGRsLGR0LGZpZWxkc2V0LGZpZ2NhcHRpb24sZmlndXJlLGZvb3Rlcixmb3JtLGZyYW1lc2V0LGgxLGgyLGgzLGg0LGg1LGg2LGhlYWRlcixoZ3JvdXAsaHIsaWZyYW1lLGlzaW5kZXgsbGksbWFwLG1lbnUsbm9mcmFtZXMsbm9zY3JpcHQsb2JqZWN0LG9sLG91dHB1dCxwLHByZSxzZWN0aW9uLHNjcmlwdCx0YWJsZSx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0cix1bCx2aWRlbyIpLGM9aCgiYWJicixhY3JvbnltLGFwcGxldCxiLGJhc2Vmb250LGJkbyxiaWcsYnIsYnV0dG9uLGNpdGUsY29kZSxkZWwsZGZuLGVtLGZvbnQsaSxpZnJhbWUsaW1nLGlucHV0LGlucyxrYmQsbGFiZWwsbWFwLG9iamVjdCxxLHMsc2FtcCxzY3JpcHQsc2VsZWN0LHNtYWxsLHNwYW4sc3RyaWtlLHN0cm9uZyxzdWIsc3VwLHRleHRhcmVhLHR0LHUsdmFyIiksdT1oKCJjb2xncm91cCxkZCxkdCxsaSxvcHRpb25zLHAsdGQsdGZvb3QsdGgsdGhlYWQsdHIiKSxsPWgoImNoZWNrZWQsY29tcGFjdCxkZWNsYXJlLGRlZmVyLGRpc2FibGVkLGlzbWFwLG11bHRpcGxlLG5vaHJlZixub3Jlc2l6ZSxub3NoYWRlLG5vd3JhcCxyZWFkb25seSxzZWxlY3RlZCIpLGY9aCgic2NyaXB0LHN0eWxlIik7ZnVuY3Rpb24gZCh0LGUpe3ZhciBuLGQsaCxwPVtdLHY9dDtwLmxhc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t0aGlzLmxlbmd0aC0xXX07d2hpbGUodCl7aWYoZD0hMCxwLmxhc3QoKSYmZltwLmxhc3QoKV0pdD10LnJlcGxhY2UobmV3IFJlZ0V4cCgiKFtcXHNcXFNdKj8pPC8iK3AubGFzdCgpKyJbXj5dKj4iKSwoZnVuY3Rpb24odCxuKXtyZXR1cm4gbj1uLnJlcGxhY2UoLzwhLS0oW1xzXFNdKj8pLS0+fDwhXFtDREFUQVxbKFtcc1xTXSo/KV1dPi9nLCIkMSQyIiksZS5jaGFycyYmZS5jaGFycyhuKSwiIn0pKSxiKCIiLHAubGFzdCgpKTtlbHNlIGlmKDA9PXQuaW5kZXhPZigiXHgzYyEtLSIpPyhuPXQuaW5kZXhPZigiLS1ceDNlIiksbj49MCYmKGUuY29tbWVudCYmZS5jb21tZW50KHQuc3Vic3RyaW5nKDQsbikpLHQ9dC5zdWJzdHJpbmcobiszKSxkPSExKSk6MD09dC5pbmRleE9mKCI8LyIpPyhoPXQubWF0Y2goaSksaCYmKHQ9dC5zdWJzdHJpbmcoaFswXS5sZW5ndGgpLGhbMF0ucmVwbGFjZShpLGIpLGQ9ITEpKTowPT10LmluZGV4T2YoIjwiKSYmKGg9dC5tYXRjaChyKSxoJiYodD10LnN1YnN0cmluZyhoWzBdLmxlbmd0aCksaFswXS5yZXBsYWNlKHIsbSksZD0hMSkpLGQpe249dC5pbmRleE9mKCI8Iik7dmFyIGc9bjwwP3Q6dC5zdWJzdHJpbmcoMCxuKTt0PW48MD8iIjp0LnN1YnN0cmluZyhuKSxlLmNoYXJzJiZlLmNoYXJzKGcpfWlmKHQ9PXYpdGhyb3ciUGFyc2UgRXJyb3I6ICIrdDt2PXR9ZnVuY3Rpb24gbSh0LG4scixpKXtpZihuPW4udG9Mb3dlckNhc2UoKSxzW25dKXdoaWxlKHAubGFzdCgpJiZjW3AubGFzdCgpXSliKCIiLHAubGFzdCgpKTtpZih1W25dJiZwLmxhc3QoKT09biYmYigiIixuKSxpPWFbbl18fCEhaSxpfHxwLnB1c2gobiksZS5zdGFydCl7dmFyIGY9W107ci5yZXBsYWNlKG8sKGZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTphcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOmFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06bFtlXT9lOiIiO2YucHVzaCh7bmFtZTplLHZhbHVlOm4sZXNjYXBlZDpuLnJlcGxhY2UoLyhefFteXFxdKSIvZywnJDFcXCInKX0pfSkpLGUuc3RhcnQmJmUuc3RhcnQobixmLGkpfX1mdW5jdGlvbiBiKHQsbil7aWYobil7Zm9yKHI9cC5sZW5ndGgtMTtyPj0wO3ItLSlpZihwW3JdPT1uKWJyZWFrfWVsc2UgdmFyIHI9MDtpZihyPj0wKXtmb3IodmFyIGk9cC5sZW5ndGgtMTtpPj1yO2ktLSllLmVuZCYmZS5lbmQocFtpXSk7cC5sZW5ndGg9cn19YigpfWZ1bmN0aW9uIGgodCl7Zm9yKHZhciBlPXt9LG49dC5zcGxpdCgiLCIpLHI9MDtyPG4ubGVuZ3RoO3IrKyllW25bcl1dPSEwO3JldHVybiBlfX0sZGE5ZDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LiRjcmVhdGVFbGVtZW50LG49dC5fc2VsZi5fY3x8ZTtyZXR1cm4gbigidW5pLXRleHRhcmVhIix0Ll9nKHt9LHQuJGxpc3RlbmVycyksW24oImRpdiIse3JlZjoid3JhcHBlciIsc3RhdGljQ2xhc3M6InVuaS10ZXh0YXJlYS13cmFwcGVyIn0sW24oImRpdiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOiEodC5jb21wb3Npbmd8fHQudmFsdWVTeW5jLmxlbmd0aCksZXhwcmVzc2lvbjoiIShjb21wb3NpbmcgfHwgdmFsdWVTeW5jLmxlbmd0aCkifV0scmVmOiJwbGFjZWhvbGRlciIsc3RhdGljQ2xhc3M6InVuaS10ZXh0YXJlYS1wbGFjZWhvbGRlciIsY2xhc3M6dC5wbGFjZWhvbGRlckNsYXNzLHN0eWxlOnQucGxhY2Vob2xkZXJTdHlsZSxkb21Qcm9wczp7dGV4dENvbnRlbnQ6dC5fcyh0LnBsYWNlaG9sZGVyKX19KSxuKCJkaXYiLHtyZWY6ImxpbmUiLHN0YXRpY0NsYXNzOiJ1bmktdGV4dGFyZWEtbGluZSIsZG9tUHJvcHM6e3RleHRDb250ZW50OnQuX3MoIiAiKX19KSxuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLXRleHRhcmVhLWNvbXB1dGUiLGNsYXNzOnsidW5pLXRleHRhcmVhLWNvbXB1dGUtYXV0by1oZWlnaHQiOnQuYXV0b0hlaWdodH19LFt0Ll9sKHQudmFsdWVDb21wdXRlLChmdW5jdGlvbihlLHIpe3JldHVybiBuKCJkaXYiLHtrZXk6cixkb21Qcm9wczp7dGV4dENvbnRlbnQ6dC5fcyhlLnRyaW0oKT9lOiIuIil9fSl9KSksbigidi11bmktcmVzaXplLXNlbnNvciIse3JlZjoic2Vuc29yIixvbjp7cmVzaXplOnQuX3Jlc2l6ZX19KV0sMiksdC5kaXNhYmxlZCYmdC5maXhDb2xvcj90Ll9lKCk6bigidGV4dGFyZWEiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOnQudmFsdWVTeW5jLGV4cHJlc3Npb246InZhbHVlU3luYyJ9LHtuYW1lOiJrZXlib2FyZCIscmF3TmFtZToidi1rZXlib2FyZCJ9LHtuYW1lOiJmaWVsZCIscmF3TmFtZToidi1maWVsZCJ9XSxyZWY6InRleHRhcmVhIixzdGF0aWNDbGFzczoidW5pLXRleHRhcmVhLXRleHRhcmVhIixjbGFzczp7InVuaS10ZXh0YXJlYS10ZXh0YXJlYS1maXgtbWFyZ2luIjp0LmZpeE1hcmdpbn0sc3R5bGU6T2JqZWN0LmFzc2lnbih7fSx7Im92ZXJmbG93LXkiOnQuYXV0b0hlaWdodD8iaGlkZGVuIjoiYXV0byJ9LHQuY3Vyc29yQ29sb3ImJntjYXJldENvbG9yOnQuY3Vyc29yQ29sb3J9KSxhdHRyczp7ZGlzYWJsZWQ6dC5kaXNhYmxlZCxtYXhsZW5ndGg6dC5tYXhsZW5ndGhOdW1iZXIsZW50ZXJrZXloaW50OnQuY29uZmlybVR5cGUsaW5wdXRtb2RlOnQuaW5wdXRtb2RlfSxkb21Qcm9wczp7dmFsdWU6dC52YWx1ZVN5bmN9LG9uOntjaGFuZ2U6ZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKX0sY29tcG9zaXRpb25zdGFydDpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKSx0Ll9vbkNvbXBvc2l0aW9uKGUpfSxjb21wb3NpdGlvbmVuZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKSx0Ll9vbkNvbXBvc2l0aW9uKGUpfSxjb21wb3NpdGlvbnVwZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKSx0Ll9vbkNvbXBvc2l0aW9uKGUpfSxpbnB1dDpbZnVuY3Rpb24oZSl7ZS50YXJnZXQuY29tcG9zaW5nfHwodC52YWx1ZVN5bmM9ZS50YXJnZXQudmFsdWUpfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKSx0Ll9vbklucHV0KGUpfV0sZm9jdXM6dC5fb25Gb2N1cyxibHVyOnQuX29uQmx1ciwiJnRvdWNoc3RhcnQiOmZ1bmN0aW9uKGUpe3JldHVybiB0Ll9vblRvdWNoc3RhcnQoZSl9LGtleXVwOmZ1bmN0aW9uKGUpe3JldHVybiFlLnR5cGUuaW5kZXhPZigia2V5IikmJnQuX2soZS5rZXlDb2RlLCJlbnRlciIsMTMsZS5rZXksIkVudGVyIik/bnVsbDp0Ll9vbktleVVwRW50ZXIoZSl9LGtleWRvd246ZnVuY3Rpb24oZSl7cmV0dXJuIWUudHlwZS5pbmRleE9mKCJrZXkiKSYmdC5fayhlLmtleUNvZGUsImVudGVyIiwxMyxlLmtleSwiRW50ZXIiKT9udWxsOnQuX29uS2V5RG93bkVudGVyKGUpfX19KSx0Ll92KCIgIiksdC5kaXNhYmxlZCYmdC5maXhDb2xvcj9uKCJ0ZXh0YXJlYSIse3JlZjoidGV4dGFyZWEiLHN0YXRpY0NsYXNzOiJ1bmktdGV4dGFyZWEtdGV4dGFyZWEiLGNsYXNzOnsidW5pLXRleHRhcmVhLXRleHRhcmVhLWZpeC1tYXJnaW4iOnQuZml4TWFyZ2lufSxzdHlsZTpPYmplY3QuYXNzaWduKHt9LHsib3ZlcmZsb3cteSI6dC5hdXRvSGVpZ2h0PyJoaWRkZW4iOiJhdXRvIn0sdC5jdXJzb3JDb2xvciYme2NhcmV0Q29sb3I6dC5jdXJzb3JDb2xvcn0pLGF0dHJzOnt0YWJpbmRleDoiLTEiLHJlYWRvbmx5OnQuZGlzYWJsZWQsbWF4bGVuZ3RoOnQubWF4bGVuZ3RoTnVtYmVyfSxkb21Qcm9wczp7dmFsdWU6dC52YWx1ZVN5bmN9LG9uOntmb2N1czpmdW5jdGlvbih0KXtyZXR1cm4gdC50YXJnZXQuYmx1cigpfX19KTp0Ll9lKCldKV0pfSxpPVtdLG89bigiOTA5ZSIpLGE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiLHM9WyJkb25lIiwiZ28iLCJuZXh0Iiwic2VhcmNoIiwic2VuZCJdLGM9WyJub25lIiwidGV4dCIsImRlY2ltYWwiLCJudW1lcmljIiwidGVsIiwic2VhcmNoIiwiZW1haWwiLCJ1cmwiXSx1PXtuYW1lOiJUZXh0YXJlYSIsbWl4aW5zOltvWyJiIl1dLHByb3BzOntuYW1lOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxtYXhsZW5ndGg6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MTQwfSxwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sZGlzYWJsZWQ6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxwbGFjZWhvbGRlckNsYXNzOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJ0ZXh0YXJlYS1wbGFjZWhvbGRlciJ9LHBsYWNlaG9sZGVyU3R5bGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LGF1dG9IZWlnaHQ6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxjb25maXJtVHlwZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoicmV0dXJuIix2YWxpZGF0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHMuY29uY2F0KCJyZXR1cm4iKS5pbmNsdWRlcyh0KX19LGlucHV0bW9kZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDAsdmFsaWRhdG9yOmZ1bmN0aW9uKHQpe3JldHVybiEhfmMuaW5kZXhPZih0KX19LGN1cnNvckNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifX0sZGF0YTpmdW5jdGlvbigpe3JldHVybnt2YWx1ZUNvbXBvc2l0aW9uOiIiLGhlaWdodDowLGZvY3VzQ2hhbmdlU291cmNlOiIiLGZpeE1hcmdpbjowPT09U3RyaW5nKG5hdmlnYXRvci5wbGF0Zm9ybSkuaW5kZXhPZigiaVAiKSYmMD09PVN0cmluZyhuYXZpZ2F0b3IudmVuZG9yKS5pbmRleE9mKCJBcHBsZSIpJiZ3aW5kb3cubWF0Y2hNZWRpYShhKS5tZWRpYSE9PWF9fSxjb21wdXRlZDp7bWF4bGVuZ3RoTnVtYmVyOmZ1bmN0aW9uKCl7dmFyIHQ9TnVtYmVyKHRoaXMubWF4bGVuZ3RoKTtyZXR1cm4gaXNOYU4odCk/MTQwOnR9LHZhbHVlQ29tcHV0ZTpmdW5jdGlvbigpe3JldHVybih0aGlzLmNvbXBvc2luZz90aGlzLnZhbHVlQ29tcG9zaXRpb246dGhpcy52YWx1ZVN5bmMpLnNwbGl0KCJcbiIpfSxpc0RvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gcy5pbmNsdWRlcyh0aGlzLmNvbmZpcm1UeXBlKX19LHdhdGNoOntmb2N1czpmdW5jdGlvbih0KXt0JiYodGhpcy5mb2N1c0NoYW5nZVNvdXJjZT0iZm9jdXMiKX0saGVpZ2h0OmZ1bmN0aW9uKHQpe3ZhciBlPXBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLiRlbCkubGluZUhlaWdodCk7aXNOYU4oZSkmJihlPXRoaXMuJHJlZnMubGluZS5vZmZzZXRIZWlnaHQpO3ZhciBuPU1hdGgucm91bmQodC9lKTt0aGlzLiR0cmlnZ2VyKCJsaW5lY2hhbmdlIix7fSx7aGVpZ2h0OnQsaGVpZ2h0UnB4Ojc1MC93aW5kb3cuaW5uZXJXaWR0aCp0LGxpbmVDb3VudDpufSksdGhpcy5hdXRvSGVpZ2h0JiYodGhpcy4kZWwuc3R5bGUuaGVpZ2h0PSJhdXRvIix0aGlzLiRyZWZzLndyYXBwZXIuc3R5bGUuaGVpZ2h0PXRoaXMuaGVpZ2h0KyJweCIpfX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuJGRpc3BhdGNoKCJGb3JtIiwidW5pLWZvcm0tZ3JvdXAtdXBkYXRlIix7dHlwZToiYWRkIix2bTp0aGlzfSl9LG1vdW50ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9yZXNpemUoe2hlaWdodDp0aGlzLiRyZWZzLnNlbnNvci4kZWwub2Zmc2V0SGVpZ2h0fSk7dmFyIHQ9dGhpczt3aGlsZSh0KXt2YXIgZT10LiRvcHRpb25zLl9zY29wZUlkO2UmJnRoaXMuJHJlZnMucGxhY2Vob2xkZXIuc2V0QXR0cmlidXRlKGUsIiIpLHQ9dC4kcGFyZW50fX0sYmVmb3JlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuJGRpc3BhdGNoKCJGb3JtIiwidW5pLWZvcm0tZ3JvdXAtdXBkYXRlIix7dHlwZToicmVtb3ZlIix2bTp0aGlzfSl9LG1ldGhvZHM6e19vbktleURvd25FbnRlcjpmdW5jdGlvbih0KXt0aGlzLmlzRG9uZSYmdC5wcmV2ZW50RGVmYXVsdCgpfSxfb25LZXlVcEVudGVyOmZ1bmN0aW9uKHQpe3RoaXMuaXNEb25lJiYodGhpcy5fY29uZmlybSh0KSwhdGhpcy5jb25maXJtSG9sZCYmdGhpcy4kcmVmcy50ZXh0YXJlYS5ibHVyKCkpfSxfb25Db21wb3NpdGlvbjpmdW5jdGlvbih0KXtzd2l0Y2godC50eXBlKXtjYXNlImNvbXBvc2l0aW9uc3RhcnQiOnRoaXMuY29tcG9zaW5nPSEwO2JyZWFrO2Nhc2UiY29tcG9zaXRpb25lbmQiOnRoaXMuY29tcG9zaW5nJiYodGhpcy5jb21wb3Npbmc9ITEsdGhpcy5fb25JbnB1dCh0KSk7YnJlYWt9IXRoaXMuaWdub3JlQ29tcG9zaXRpb25FdmVudCYmdGhpcy4kdHJpZ2dlcih0LnR5cGUsdCx7ZGF0YTp0LmRhdGF9KX0sX2NvbmZpcm06ZnVuY3Rpb24odCl7dGhpcy4kdHJpZ2dlcigiY29uZmlybSIsdCx7dmFsdWU6dGhpcy52YWx1ZVN5bmN9KX0sX2xpbmVjaGFuZ2U6ZnVuY3Rpb24odCl7dGhpcy4kdHJpZ2dlcigibGluZWNoYW5nZSIsdCx7dmFsdWU6dGhpcy52YWx1ZVN5bmN9KX0sX29uVG91Y2hzdGFydDpmdW5jdGlvbigpe3RoaXMuZm9jdXNDaGFuZ2VTb3VyY2U9InRvdWNoIn0sX3Jlc2l6ZTpmdW5jdGlvbih0KXt2YXIgZT10LmhlaWdodDt0aGlzLmhlaWdodD1lfSxfb25JbnB1dDpmdW5jdGlvbih0LGUpe3RoaXMuY29tcG9zaW5nJiZ0aGlzLmlnbm9yZUNvbXBvc2l0aW9uRXZlbnQ/dGhpcy52YWx1ZUNvbXBvc2l0aW9uPXQudGFyZ2V0LnZhbHVlOih0aGlzLmlnbm9yZUNvbXBvc2l0aW9uRXZlbnR8fCh0aGlzLnZhbHVlU3luYz10aGlzLiRyZWZzLnRleHRhcmVhLnZhbHVlKSx0aGlzLiR0cmlnZ2VySW5wdXQodCx7dmFsdWU6dGhpcy52YWx1ZVN5bmMsY3Vyc29yOnRoaXMuJHJlZnMudGV4dGFyZWEuc2VsZWN0aW9uRW5kfSxlKSl9LF9nZXRGb3JtRGF0YTpmdW5jdGlvbigpe3JldHVybnt2YWx1ZTp0aGlzLnZhbHVlU3luYyxrZXk6dGhpcy5uYW1lfX0sX3Jlc2V0Rm9ybURhdGE6ZnVuY3Rpb24oKXt0aGlzLnZhbHVlU3luYz0iIn19fSxsPXUsZj0obigiM2M1ZiIpLG4oIjg4NDQiKSksZD1PYmplY3QoZlsiYSJdKShsLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPWQuZXhwb3J0c30sZGFjOTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwiY2hvb3NlSW1hZ2UiLChmdW5jdGlvbigpe3JldHVybiBvfSkpO3ZhciByPVsib3JpZ2luYWwiLCJjb21wcmVzc2VkIl0saT1bImFsYnVtIiwiY2FtZXJhIl0sbz17Y291bnQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6OSx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXt0PD0wJiYoZS5jb3VudD05KX19LHNpemVUeXBlOnt0eXBlOltBcnJheSxTdHJpbmddLHJlcXVpcmVkOiExLGRlZmF1bHQ6cix2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXt0PSJzdHJpbmciPT09dHlwZW9mIHQ/W3RdOnQsdD10LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHIuaW5jbHVkZXModCl9KSksZS5zaXplVHlwZT10Lmxlbmd0aD90OnJ9fSxzb3VyY2VUeXBlOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExLGRlZmF1bHQ6aSx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXt0PXQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gaS5pbmNsdWRlcyh0KX0pKSxlLnNvdXJjZVR5cGU9dC5sZW5ndGg/dDppfX0sZXh0ZW5zaW9uOnt0eXBlOkFycmF5LGRlZmF1bHQ6WyIqIl0sdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7aWYoMD09PXQubGVuZ3RoKXJldHVybiJwYXJhbSBleHRlbnNpb24gc2hvdWxkIG5vdCBiZSBlbXB0eS4ifX19fSxkYWQ2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe3ZhciByPW4oImE0MDkiKTtlWyJhIl09e25hbWU6IlRvYXN0IixtaXhpbnM6W3JbImRlZmF1bHQiXV0scHJvcHM6e3RpdGxlOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxpY29uOntkZWZhdWx0OiJzdWNjZXNzIix2YWxpZGF0b3I6ZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1bInN1Y2Nlc3MiLCJsb2FkaW5nIiwiZXJyb3IiLCJub25lIl0uaW5kZXhPZih0KX19LGltYWdlOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxkdXJhdGlvbjp7dHlwZTpOdW1iZXIsZGVmYXVsdDoxNTAwfSxtYXNrOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdmlzaWJsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxjb21wdXRlZDp7aWNvbkNsYXNzOmZ1bmN0aW9uKCl7cmV0dXJuInN1Y2Nlc3MiPT09dGhpcy5pY29uPyJ1bmktaWNvbi1zdWNjZXNzLW5vLWNpcmNsZSI6ImxvYWRpbmciPT09dGhpcy5pY29uPyJ1bmktbG9hZGluZyI6ImVycm9yIj09PXRoaXMuaWNvbj8idW5pLWljb24tZXJyb3IiOiIifX0sYmVmb3JlVXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy52aXNpYmxlJiYodGhpcy50aW1lb3V0SWQmJmNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJZCksdGhpcy50aW1lb3V0SWQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LmVtaXQoIm9uSGlkZVRvYXN0Iil9KSx0aGlzLmR1cmF0aW9uKSl9fX0pLmNhbGwodGhpcyxuKCIyYzlmIikpfSxkYjg3OmZ1bmN0aW9uKHQsZSxuKXt9LGRiZTg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9bigiMzQwZCIpLGk9bigiNmY3NSIpO2Z1bmN0aW9uIG8odCl7cmV0dXJuIE1hdGguc3FydCh0LngqdC54K3QueSp0LnkpfXZhciBhLHMsYz17bmFtZToiTW92YWJsZUFyZWEiLHByb3BzOntzY2FsZUFyZWE6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybnt3aWR0aDowLGhlaWdodDowLGl0ZW1zOltdfX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuZ2FwVj17eDpudWxsLHk6bnVsbH0sdGhpcy5waW5jaFN0YXJ0TGVuPW51bGx9LG1vdW50ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9yZXNpemUoKSxPYmplY3QoaVsiYiJdKSgpfSxtZXRob2RzOntfcmVzaXplOmZ1bmN0aW9uKCl7dGhpcy5fZ2V0V0goKSx0aGlzLml0ZW1zLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5jb21wb25lbnRJbnN0YW5jZS5zZXRQYXJlbnQoKX0pKX0sX2ZpbmQ6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMuaXRlbXMsbj10aGlzLiRlbDtmdW5jdGlvbiByKHQpe2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldO2lmKHQ9PT1vLmNvbXBvbmVudEluc3RhbmNlLiRlbClyZXR1cm4gb31yZXR1cm4gdD09PW58fHQ9PT1kb2N1bWVudC5ib2R5fHx0PT09ZG9jdW1lbnQ/bnVsbDpyKHQucGFyZW50Tm9kZSl9cmV0dXJuIHIodCl9LF90b3VjaHN0YXJ0OmZ1bmN0aW9uKHQpe09iamVjdChpWyJhIl0pKHtkaXNhYmxlOiEwfSk7dmFyIGU9dC50b3VjaGVzO2lmKGUmJmUubGVuZ3RoPjEpe3ZhciBuPXt4OmVbMV0ucGFnZVgtZVswXS5wYWdlWCx5OmVbMV0ucGFnZVktZVswXS5wYWdlWX07aWYodGhpcy5waW5jaFN0YXJ0TGVuPW8obiksdGhpcy5nYXBWPW4sIXRoaXMuc2NhbGVBcmVhKXt2YXIgcj10aGlzLl9maW5kKGVbMF0udGFyZ2V0KSxhPXRoaXMuX2ZpbmQoZVsxXS50YXJnZXQpO3RoaXMuX3NjYWxlTW92YWJsZVZpZXc9ciYmcj09PWE/cjpudWxsfX19LF90b3VjaG1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dC50b3VjaGVzO2lmKGUmJmUubGVuZ3RoPjEpe3QucHJldmVudERlZmF1bHQoKTt2YXIgbj17eDplWzFdLnBhZ2VYLWVbMF0ucGFnZVgseTplWzFdLnBhZ2VZLWVbMF0ucGFnZVl9O2lmKG51bGwhPT10aGlzLmdhcFYueCYmdGhpcy5waW5jaFN0YXJ0TGVuPjApe3ZhciByPW8obikvdGhpcy5waW5jaFN0YXJ0TGVuO3RoaXMuX3VwZGF0ZVNjYWxlKHIpfXRoaXMuZ2FwVj1ufX0sX3RvdWNoZW5kOmZ1bmN0aW9uKHQpe09iamVjdChpWyJhIl0pKHtkaXNhYmxlOiExfSk7dmFyIGU9dC50b3VjaGVzO2UmJmUubGVuZ3RofHx0LmNoYW5nZWRUb3VjaGVzJiYodGhpcy5nYXBWLng9MCx0aGlzLmdhcFYueT0wLHRoaXMucGluY2hTdGFydExlbj1udWxsLHRoaXMuc2NhbGVBcmVhP3RoaXMuaXRlbXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jb21wb25lbnRJbnN0YW5jZS5fZW5kU2NhbGUoKX0pKTp0aGlzLl9zY2FsZU1vdmFibGVWaWV3JiZ0aGlzLl9zY2FsZU1vdmFibGVWaWV3LmNvbXBvbmVudEluc3RhbmNlLl9lbmRTY2FsZSgpKX0sX3VwZGF0ZVNjYWxlOmZ1bmN0aW9uKHQpe3QmJjEhPT10JiYodGhpcy5zY2FsZUFyZWE/dGhpcy5pdGVtcy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmNvbXBvbmVudEluc3RhbmNlLl9zZXRTY2FsZSh0KX0pKTp0aGlzLl9zY2FsZU1vdmFibGVWaWV3JiZ0aGlzLl9zY2FsZU1vdmFibGVWaWV3LmNvbXBvbmVudEluc3RhbmNlLl9zZXRTY2FsZSh0KSl9LF9nZXRXSDpmdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuJGVsKSxlPXRoaXMuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMud2lkdGg9ZS53aWR0aC1bIkxlZnQiLCJSaWdodCJdLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZStwYXJzZUZsb2F0KHRbImJvcmRlciIrbisiV2lkdGgiXSkrcGFyc2VGbG9hdCh0WyJwYWRkaW5nIituXSl9KSwwKSx0aGlzLmhlaWdodD1lLmhlaWdodC1bIlRvcCIsIkJvdHRvbSJdLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZStwYXJzZUZsb2F0KHRbImJvcmRlciIrbisiV2lkdGgiXSkrcGFyc2VGbG9hdCh0WyJwYWRkaW5nIituXSl9KSwwKX19LHJlbmRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49W10saT10aGlzLiRzbG90cy5kZWZhdWx0JiZPYmplY3QoclsiZiJdKSh0aGlzLiRzbG90cy5kZWZhdWx0LHQpO2kmJmkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jb21wb25lbnRPcHRpb25zJiYidi11bmktbW92YWJsZS12aWV3Ij09PXQuY29tcG9uZW50T3B0aW9ucy50YWcmJm4ucHVzaCh0KX0pKSx0aGlzLml0ZW1zPW47dmFyIG89T2JqZWN0LmFzc2lnbih7fSx0aGlzLiRsaXN0ZW5lcnMpLGE9WyJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hlbmQiXTtyZXR1cm4gYS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj1vW3RdLHI9ZVsiXyIuY29uY2F0KHQpXTtvW3RdPW4/W10uY29uY2F0KG4scik6cn0pKSx0KCJ1bmktbW92YWJsZS1hcmVhIix7b246b30sW3QoInYtdW5pLXJlc2l6ZS1zZW5zb3IiLHtvbjp7cmVzaXplOnRoaXMuX3Jlc2l6ZX19KSxpXSl9fSx1PWMsbD0obigiOTU5MyIpLG4oIjg4NDQiKSksZj1PYmplY3QobFsiYSJdKSh1LGEscywhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPWYuZXhwb3J0c30sZGMwMjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwicmVxdWVzdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSk7dmFyIHI9bigiMzQwZCIpLGk9bigiOTEzMSIpLG89bigiNzQ1YSIpO2Z1bmN0aW9uIGEodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBzKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gYyh0LGUsbil7cmV0dXJuIGUmJnModC5wcm90b3R5cGUsZSksbiYmcyh0LG4pLHR9dmFyIHU9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBsKHQsZSl7aWYoInN0cmluZyI9PT10eXBlb2YgdC5kYXRhJiY2NTI3OT09PXQuZGF0YS5jaGFyQ29kZUF0KDApJiYodC5kYXRhPXQuZGF0YS5zdWJzdHIoMSkpLHQuc3RhdHVzQ29kZT1wYXJzZUludCh0LnN0YXR1c0NvZGUsMTApLE9iamVjdChyWyJsIl0pKHQuaGVhZGVyKSYmKHQuaGVhZGVyPU9iamVjdC5rZXlzKHQuaGVhZGVyKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7dmFyIHI9dC5oZWFkZXJbbl07cmV0dXJuIEFycmF5LmlzQXJyYXkocik/ZVtuXT1yLmpvaW4oIiwiKToic3RyaW5nIj09PXR5cGVvZiByJiYoZVtuXT1yKSxlfSkse30pKSxlLmRhdGFUeXBlJiYianNvbiI9PT1lLmRhdGFUeXBlLnRvTG93ZXJDYXNlKCkpdHJ5e3QuZGF0YT1KU09OLnBhcnNlKHQuZGF0YSl9Y2F0Y2gobil7fXJldHVybiB0fU9iamVjdChvWyJkIl0pKCJvblJlcXVlc3RUYXNrU3RhdGVDaGFuZ2UiLChmdW5jdGlvbih0KXt2YXIgZT10LnJlcXVlc3RUYXNrSWQsbj10LnN0YXRlLHI9dC5kYXRhLG89dC5zdGF0dXNDb2RlLGE9dC5oZWFkZXIscz10LmVyck1zZyxjPXQuY29va2llcyxmPXVbZV18fHt9LGQ9Zi5hcmdzLGg9Zi5jYWxsYmFja0lkO2lmKGgpc3dpdGNoKGRlbGV0ZSB1W2VdLG4pe2Nhc2Uic3VjY2VzcyI6T2JqZWN0KGlbImEiXSkoaCxsKHtkYXRhOnIsc3RhdHVzQ29kZTpvLGhlYWRlcjphLGVyck1zZzoicmVxdWVzdDpvayIsY29va2llczpjfSxkKSk7YnJlYWs7Y2FzZSJmYWlsIjpPYmplY3QoaVsiYSJdKShoLHtlcnJNc2c6InJlcXVlc3Q6ZmFpbCAiK3N9KTticmVha319KSk7dmFyIGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmlkPWV9cmV0dXJuIGModCxbe2tleToiYWJvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7T2JqZWN0KG9bImMiXSkoIm9wZXJhdGVSZXF1ZXN0VGFzayIse3JlcXVlc3RUYXNrSWQ6dGhpcy5pZCxvcGVyYXRpb25UeXBlOiJhYm9ydCJ9KX19LHtrZXk6Im9mZkhlYWRlcnNSZWNlaXZlZCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJvbkhlYWRlcnNSZWNlaXZlZCIsdmFsdWU6ZnVuY3Rpb24oKXt9fV0pLHR9KCk7ZnVuY3Rpb24gZCh0LGUpe3ZhciBuO2Zvcih2YXIgaSBpbiB0LmhlYWRlcilpZigiY29udGVudC10eXBlIj09PWkudG9Mb3dlckNhc2UoKSl7bj10LmhlYWRlcltpXTticmVha30iR0VUIiE9PXQubWV0aG9kJiYwPT09bi5pbmRleE9mKCJhcHBsaWNhdGlvbi9qc29uIikmJk9iamVjdChyWyJsIl0pKHQuZGF0YSkmJih0LmRhdGE9SlNPTi5zdHJpbmdpZnkodC5kYXRhKSk7dmFyIGE9T2JqZWN0KG9bImMiXSkoImNyZWF0ZVJlcXVlc3RUYXNrIix0KSxzPWEucmVxdWVzdFRhc2tJZDtyZXR1cm4gdVtzXT17YXJnczp0LGNhbGxiYWNrSWQ6ZX0sbmV3IGYocyl9fSxkZTQzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJ1bmktbWFwIix0Ll9nKHtyZWY6Im1hcENvbnRhaW5lciIsYXR0cnM6e2lkOnQuaWR9fSx0LiRsaXN0ZW5lcnMpLFt0Ll9sKHQubWFya2VycywoZnVuY3Rpb24oZSl7cmV0dXJuIG4oIm1hcC1tYXJrZXIiLHQuX2Ioe2tleTplLmlkfSwibWFwLW1hcmtlciIsZSwhMSkpfSkpLHQuX2wodC5jb250cm9scywoZnVuY3Rpb24oZSxyKXtyZXR1cm4gbigibWFwLWNvbnRyb2wiLHQuX2Ioe2tleTplLmlkfHxyfSwibWFwLWNvbnRyb2wiLGUsITEpKX0pKSx0Ll9sKHQucG9seWdvbnMsKGZ1bmN0aW9uKGUpe3JldHVybiBuKCJtYXAtcG9seWdvbiIsdC5fYih7a2V5OkpTT04uc3RyaW5naWZ5KGUucG9pbnRzKX0sIm1hcC1wb2x5Z29uIixlLCExKSl9KSksbigiZGl2Iix7cmVmOiJtYXAiLHN0YXRpY1N0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixwb3NpdGlvbjoicmVsYXRpdmUiLG92ZXJmbG93OiJoaWRkZW4ifSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKX19fSksbigiZGl2Iix7c3RhdGljU3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiIwIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoiaGlkZGVuIiwicG9pbnRlci1ldmVudHMiOiJub25lIn19LFt0Ll90KCJkZWZhdWx0IildLDIpXSwyKX0saT1bXSxvPW4oImQwNDIiKSxhPW9bImEiXSxzPShuKCIwNjcxIiksbigiODg0NCIpKSxjPU9iamVjdChzWyJhIl0pKGEscixpLCExLG51bGwsbnVsbCxudWxsKTtlWyJkZWZhdWx0Il09Yy5leHBvcnRzfSxkZjUwOmZ1bmN0aW9uKHQsZSxuKXt9LGRmNWE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKHQpe3JldHVybiBpPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXIoU3ltYm9sLml0ZXJhdG9yKT9mdW5jdGlvbih0KXtyZXR1cm4gcih0KX06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjpyKHQpfSxpKHQpfWZ1bmN0aW9uIG8odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBhKHQsZSl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiZzKHQsZSl9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSxzKHQsZSl9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZSxuPWQodCk7aWYoZigpKXt2YXIgcj1kKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMscil9ZWxzZSBlPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB1KHRoaXMsZSl9fWZ1bmN0aW9uIHUodCxlKXtyZXR1cm4hZXx8Im9iamVjdCIhPT1pKGUpJiYiZnVuY3Rpb24iIT09dHlwZW9mIGU/bCh0KTplfWZ1bmN0aW9uIGwodCl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiB0fWZ1bmN0aW9uIGYoKXtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2godCl7cmV0dXJuITF9fWZ1bmN0aW9uIGQodCl7cmV0dXJuIGQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX0sZCh0KX1uLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEd9KSk7dmFyIGg9ZnVuY3Rpb24odCl7dmFyIGU9dC5pbXBvcnQoImJsb3RzL2Jsb2NrL2VtYmVkIiksbj1mdW5jdGlvbih0KXthKG4sdCk7dmFyIGU9YyhuKTtmdW5jdGlvbiBuKCl7cmV0dXJuIG8odGhpcyxuKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gbn0oZSk7cmV0dXJuIG4uYmxvdE5hbWU9ImRpdmlkZXIiLG4udGFnTmFtZT0iSFIiLHsiZm9ybWF0cy9kaXZpZGVyIjpufX07ZnVuY3Rpb24gcCh0KXtyZXR1cm4gcD0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT1yKFN5bWJvbC5pdGVyYXRvcik/ZnVuY3Rpb24odCl7cmV0dXJuIHIodCl9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6cih0KX0scCh0KX1mdW5jdGlvbiB2KHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZyh0LGUpe2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmbSh0LGUpfWZ1bmN0aW9uIG0odCxlKXtyZXR1cm4gbT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0sbSh0LGUpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGUsbj1TKHQpO2lmKHcoKSl7dmFyIHI9Uyh0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLHIpfWVsc2UgZT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4geSh0aGlzLGUpfX1mdW5jdGlvbiB5KHQsZSl7cmV0dXJuIWV8fCJvYmplY3QiIT09cChlKSYmImZ1bmN0aW9uIiE9PXR5cGVvZiBlP18odCk6ZX1mdW5jdGlvbiBfKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gdH1mdW5jdGlvbiB3KCl7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSxbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX1mdW5jdGlvbiBTKHQpe3JldHVybiBTPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9LFModCl9dmFyIHg9ZnVuY3Rpb24odCl7dmFyIGU9dC5pbXBvcnQoImJsb3RzL2lubGluZSIpLG49ZnVuY3Rpb24odCl7ZyhuLHQpO3ZhciBlPWIobik7ZnVuY3Rpb24gbigpe3JldHVybiB2KHRoaXMsbiksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIG59KGUpO3JldHVybiBuLmJsb3ROYW1lPSJpbnMiLG4udGFnTmFtZT0iSU5TIix7ImZvcm1hdHMvaW5zIjpufX0saz1mdW5jdGlvbih0KXt2YXIgZT10LmltcG9ydCgicGFyY2htZW50Iiksbj1lLlNjb3BlLHI9ZS5BdHRyaWJ1dG9yLGk9e3Njb3BlOm4uQkxPQ0ssd2hpdGVsaXN0OlsibGVmdCIsInJpZ2h0IiwiY2VudGVyIiwianVzdGlmeSJdfSxvPW5ldyByLlN0eWxlKCJhbGlnbiIsInRleHQtYWxpZ24iLGkpO3JldHVybnsiZm9ybWF0cy9hbGlnbiI6b319LEM9ZnVuY3Rpb24odCl7dmFyIGU9dC5pbXBvcnQoInBhcmNobWVudCIpLG49ZS5TY29wZSxyPWUuQXR0cmlidXRvcixpPXtzY29wZTpuLkJMT0NLLHdoaXRlbGlzdDpbInJ0bCJdfSxvPW5ldyByLlN0eWxlKCJkaXJlY3Rpb24iLCJkaXJlY3Rpb24iLGkpO3JldHVybnsiZm9ybWF0cy9kaXJlY3Rpb24iOm99fTtmdW5jdGlvbiBUKHQpe3JldHVybiBUPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXIoU3ltYm9sLml0ZXJhdG9yKT9mdW5jdGlvbih0KXtyZXR1cm4gcih0KX06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjpyKHQpfSxUKHQpfWZ1bmN0aW9uIE8odCxlLG4pe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bix0fWZ1bmN0aW9uIEEodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBFKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gaih0LGUsbil7cmV0dXJuIGUmJkUodC5wcm90b3R5cGUsZSksbiYmRSh0LG4pLHR9ZnVuY3Rpb24gTSh0LGUpe2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmSSh0LGUpfWZ1bmN0aW9uIEkodCxlKXtyZXR1cm4gST1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0sSSh0LGUpfWZ1bmN0aW9uIFAodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGUsbj1CKHQpO2lmKFIoKSl7dmFyIHI9Qih0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLHIpfWVsc2UgZT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gJCh0aGlzLGUpfX1mdW5jdGlvbiAkKHQsZSl7cmV0dXJuIWV8fCJvYmplY3QiIT09VChlKSYmImZ1bmN0aW9uIiE9PXR5cGVvZiBlP0wodCk6ZX1mdW5jdGlvbiBMKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gdH1mdW5jdGlvbiBSKCl7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSxbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX1mdW5jdGlvbiBOKHQsZSxuKXtyZXR1cm4gTj0idW5kZWZpbmVkIiE9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldDpmdW5jdGlvbih0LGUsbil7dmFyIHI9RCh0LGUpO2lmKHIpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKTtyZXR1cm4gaS5nZXQ/aS5nZXQuY2FsbChuKTppLnZhbHVlfX0sTih0LGUsbnx8dCl9ZnVuY3Rpb24gRCh0LGUpe3doaWxlKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKSlpZih0PUIodCksbnVsbD09PXQpYnJlYWs7cmV0dXJuIHR9ZnVuY3Rpb24gQih0KXtyZXR1cm4gQj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpfSxCKHQpfXZhciBGPWZ1bmN0aW9uKHQpe3ZhciBlPXQuaW1wb3J0KCJwYXJjaG1lbnQiKSxuPXQuaW1wb3J0KCJibG90cy9jb250YWluZXIiKSxyPXQuaW1wb3J0KCJmb3JtYXRzL2xpc3QvaXRlbSIpLGk9ZnVuY3Rpb24odCl7TShpLHQpO3ZhciBuPVAoaSk7ZnVuY3Rpb24gaSh0KXt2YXIgcjtBKHRoaXMsaSkscj1uLmNhbGwodGhpcyx0KTt2YXIgbz1mdW5jdGlvbihuKXtpZihuLnRhcmdldC5wYXJlbnROb2RlPT09dCl7dmFyIGk9ci5zdGF0aWNzLmZvcm1hdHModCksbz1lLmZpbmQobi50YXJnZXQpOyJjaGVja2VkIj09PWk/by5mb3JtYXQoImxpc3QiLCJ1bmNoZWNrZWQiKToidW5jaGVja2VkIj09PWkmJm8uZm9ybWF0KCJsaXN0IiwiY2hlY2tlZCIpfX07cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLG8pLHJ9cmV0dXJuIGooaSxudWxsLFt7a2V5OiJjcmVhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSJvcmRlcmVkIj09PXQ/Ik9MIjoiVUwiLG49TihCKGkpLCJjcmVhdGUiLHRoaXMpLmNhbGwodGhpcyxlKTtyZXR1cm4iY2hlY2tlZCIhPT10JiYidW5jaGVja2VkIiE9PXR8fG4uc2V0QXR0cmlidXRlKCJkYXRhLWNoZWNrZWQiLCJjaGVja2VkIj09PXQpLG59fSx7a2V5OiJmb3JtYXRzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4iT0wiPT09dC50YWdOYW1lPyJvcmRlcmVkIjoiVUwiPT09dC50YWdOYW1lP3QuaGFzQXR0cmlidXRlKCJkYXRhLWNoZWNrZWQiKT8idHJ1ZSI9PT10LmdldEF0dHJpYnV0ZSgiZGF0YS1jaGVja2VkIik/ImNoZWNrZWQiOiJ1bmNoZWNrZWQiOiJidWxsZXQiOnZvaWQgMH19XSksaihpLFt7a2V5OiJmb3JtYXQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5jaGlsZHJlbi5sZW5ndGg+MCYmdGhpcy5jaGlsZHJlbi50YWlsLmZvcm1hdCh0LGUpfX0se2tleToiZm9ybWF0cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gTyh7fSx0aGlzLnN0YXRpY3MuYmxvdE5hbWUsdGhpcy5zdGF0aWNzLmZvcm1hdHModGhpcy5kb21Ob2RlKSl9fSx7a2V5OiJpbnNlcnRCZWZvcmUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYodCBpbnN0YW5jZW9mIHIpTihCKGkucHJvdG90eXBlKSwiaW5zZXJ0QmVmb3JlIix0aGlzKS5jYWxsKHRoaXMsdCxlKTtlbHNle3ZhciBuPW51bGw9PWU/dGhpcy5sZW5ndGgoKTplLm9mZnNldCh0aGlzKSxvPXRoaXMuc3BsaXQobik7by5wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsbyl9fX0se2tleToib3B0aW1pemUiLHZhbHVlOmZ1bmN0aW9uKHQpe04oQihpLnByb3RvdHlwZSksIm9wdGltaXplIix0aGlzKS5jYWxsKHRoaXMsdCk7dmFyIGU9dGhpcy5uZXh0O251bGwhPWUmJmUucHJldj09PXRoaXMmJmUuc3RhdGljcy5ibG90TmFtZT09PXRoaXMuc3RhdGljcy5ibG90TmFtZSYmZS5kb21Ob2RlLnRhZ05hbWU9PT10aGlzLmRvbU5vZGUudGFnTmFtZSYmZS5kb21Ob2RlLmdldEF0dHJpYnV0ZSgiZGF0YS1jaGVja2VkIik9PT10aGlzLmRvbU5vZGUuZ2V0QXR0cmlidXRlKCJkYXRhLWNoZWNrZWQiKSYmKGUubW92ZUNoaWxkcmVuKHRoaXMpLGUucmVtb3ZlKCkpfX0se2tleToicmVwbGFjZSIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodC5zdGF0aWNzLmJsb3ROYW1lIT09dGhpcy5zdGF0aWNzLmJsb3ROYW1lKXt2YXIgbj1lLmNyZWF0ZSh0aGlzLnN0YXRpY3MuZGVmYXVsdENoaWxkKTt0Lm1vdmVDaGlsZHJlbihuKSx0aGlzLmFwcGVuZENoaWxkKG4pfU4oQihpLnByb3RvdHlwZSksInJlcGxhY2UiLHRoaXMpLmNhbGwodGhpcyx0KX19XSksaX0obik7cmV0dXJuIGkuYmxvdE5hbWU9Imxpc3QiLGkuc2NvcGU9ZS5TY29wZS5CTE9DS19CTE9ULGkudGFnTmFtZT1bIk9MIiwiVUwiXSxpLmRlZmF1bHRDaGlsZD0ibGlzdC1pdGVtIixpLmFsbG93ZWRDaGlsZHJlbj1bcl0seyJmb3JtYXRzL2xpc3QiOml9fSx6PWZ1bmN0aW9uKHQpe3ZhciBlPXQuaW1wb3J0KCJwYXJjaG1lbnQiKSxuPWUuU2NvcGUscj10LmltcG9ydCgiZm9ybWF0cy9iYWNrZ3JvdW5kIiksaT1uZXcgci5jb25zdHJ1Y3RvcigiYmFja2dyb3VuZENvbG9yIiwiYmFja2dyb3VuZC1jb2xvciIse3Njb3BlOm4uSU5MSU5FfSk7cmV0dXJueyJmb3JtYXRzL2JhY2tncm91bmRDb2xvciI6aX19LFc9bigiMzQwZCIpLEg9ZnVuY3Rpb24odCl7dmFyIGU9dC5pbXBvcnQoInBhcmNobWVudCIpLG49ZS5TY29wZSxyPWUuQXR0cmlidXRvcixpPXtzY29wZTpuLkJMT0NLfSxvPVsibWFyZ2luIiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0Il0sYT1bInBhZGRpbmciLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0Il0scz17fTtyZXR1cm4gby5jb25jYXQoYSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7c1siZm9ybWF0cy8iLmNvbmNhdCh0KV09bmV3IHIuU3R5bGUodCxPYmplY3QoV1sibiJdKSh0KSxpKX0pKSxzfSxVPWZ1bmN0aW9uKHQpe3ZhciBlPXQuaW1wb3J0KCJwYXJjaG1lbnQiKSxuPWUuU2NvcGUscj1lLkF0dHJpYnV0b3IsaT17c2NvcGU6bi5JTkxJTkV9LG89WyJmb250IiwiZm9udFNpemUiLCJmb250U3R5bGUiLCJmb250VmFyaWFudCIsImZvbnRXZWlnaHQiLCJmb250RmFtaWx5Il0sYT17fTtyZXR1cm4gby5mb3JFYWNoKChmdW5jdGlvbih0KXthWyJmb3JtYXRzLyIuY29uY2F0KHQpXT1uZXcgci5TdHlsZSh0LE9iamVjdChXWyJuIl0pKHQpLGkpfSkpLGF9LHE9ZnVuY3Rpb24odCl7dmFyIGU9dC5pbXBvcnQoInBhcmNobWVudCIpLG49ZS5TY29wZSxyPWUuQXR0cmlidXRvcixpPVt7bmFtZToibGluZUhlaWdodCIsc2NvcGU6bi5CTE9DS30se25hbWU6ImxldHRlclNwYWNpbmciLHNjb3BlOm4uSU5MSU5FfSx7bmFtZToidGV4dERlY29yYXRpb24iLHNjb3BlOm4uSU5MSU5FfSx7bmFtZToidGV4dEluZGVudCIsc2NvcGU6bi5CTE9DS31dLG89e307cmV0dXJuIGkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5uYW1lLG49dC5zY29wZTtvWyJmb3JtYXRzLyIuY29uY2F0KGUpXT1uZXcgci5TdHlsZShlLE9iamVjdChXWyJuIl0pKGUpLHtzY29wZTpufSl9KSksb30sVj1uKCI0NzM4IiksWT1mdW5jdGlvbih0KXt2YXIgZT10LmltcG9ydCgiZm9ybWF0cy9pbWFnZSIpLG49WyJhbHQiLCJoZWlnaHQiLCJ3aWR0aCIsImRhdGEtY3VzdG9tIiwiY2xhc3MiLCJkYXRhLWxvY2FsIl07ZS5zYW5pdGl6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdD9PYmplY3QoVlsiYSJdKSh0KTp0fSxlLmZvcm1hdHM9ZnVuY3Rpb24odCl7cmV0dXJuIG4ucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiB0Lmhhc0F0dHJpYnV0ZShuKSYmKGVbbl09dC5nZXRBdHRyaWJ1dGUobikpLGV9KSx7fSl9O3ZhciByPWUucHJvdG90eXBlLmZvcm1hdDtlLnByb3RvdHlwZS5mb3JtYXQ9ZnVuY3Rpb24odCxlKXtuLmluZGV4T2YodCk+LTE/ZT90aGlzLmRvbU5vZGUuc2V0QXR0cmlidXRlKHQsZSk6dGhpcy5kb21Ob2RlLnJlbW92ZUF0dHJpYnV0ZSh0KTpyLmNhbGwodGhpcyx0LGUpfX0sWD1mdW5jdGlvbih0KXt2YXIgZT10LmltcG9ydCgiZm9ybWF0cy9saW5rIik7ZS5zYW5pdGl6ZT1mdW5jdGlvbih0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7bi5ocmVmPXQ7dmFyIHI9bi5ocmVmLnNsaWNlKDAsbi5ocmVmLmluZGV4T2YoIjoiKSk7cmV0dXJuIGUuUFJPVE9DT0xfV0hJVEVMSVNULmNvbmNhdCgiZmlsZSIpLmluZGV4T2Yocik+LTE/dDplLlNBTklUSVpFRF9VUkx9fTtmdW5jdGlvbiBHKHQpe3ZhciBlPXtkaXZpZGVyOmgsaW5zOngsYWxpZ246ayxkaXJlY3Rpb246QyxsaXN0OkYsYmFja2dyb3VuZDp6LGJveDpILGZvbnQ6VSx0ZXh0OnEsaW1hZ2U6WSxsaW5rOlh9LG49e307T2JqZWN0LnZhbHVlcyhlKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuLGUodCkpfSkpLHQucmVnaXN0ZXIobiwhMCl9fSxkZmE3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUsbil7bihudWxsLHQpfW4uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKX0sZTA1MzpmdW5jdGlvbih0LGUsbil7fSxlMDc5OmZ1bmN0aW9uKHQsZSxuKXt9LGUwZTE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIG4oInVuaS1pbnB1dCIsdC5fZyh7fSx0LiRsaXN0ZW5lcnMpLFtuKCJkaXYiLHtyZWY6IndyYXBwZXIiLHN0YXRpY0NsYXNzOiJ1bmktaW5wdXQtd3JhcHBlciJ9LFtuKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTp0LnNob3dQbGFjZWhvbGRlcixleHByZXNzaW9uOiJzaG93UGxhY2Vob2xkZXIifV0scmVmOiJwbGFjZWhvbGRlciIsc3RhdGljQ2xhc3M6InVuaS1pbnB1dC1wbGFjZWhvbGRlciIsY2xhc3M6dC5wbGFjZWhvbGRlckNsYXNzLHN0eWxlOnQucGxhY2Vob2xkZXJTdHlsZSxkb21Qcm9wczp7dGV4dENvbnRlbnQ6dC5fcyh0LnBsYWNlaG9sZGVyKX19KSwiY2hlY2tib3giIT09dC5pbnB1dFR5cGV8fHQuZGlzYWJsZWQmJnQuZml4Q29sb3I/InJhZGlvIiE9PXQuaW5wdXRUeXBlfHx0LmRpc2FibGVkJiZ0LmZpeENvbG9yP3QuZGlzYWJsZWQmJnQuZml4Q29sb3I/dC5fZSgpOm4oImlucHV0Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1lOiJ2LW1vZGVsIix2YWx1ZTp0LnZhbHVlU3luYyxleHByZXNzaW9uOiJ2YWx1ZVN5bmMifSx7bmFtZToia2V5Ym9hcmQiLHJhd05hbWU6InYta2V5Ym9hcmQifSx7bmFtZToiZmllbGQiLHJhd05hbWU6InYtZmllbGQifV0scmVmOiJpbnB1dCIsc3RhdGljQ2xhc3M6InVuaS1pbnB1dC1pbnB1dCIsc3R5bGU6dC5jdXJzb3JDb2xvcj97Y2FyZXRDb2xvcjp0LmN1cnNvckNvbG9yfTp7fSxhdHRyczp7ZGlzYWJsZWQ6dC5kaXNhYmxlZCxtYXhsZW5ndGg6dC5tYXhsZW5ndGgsc3RlcDp0Ll9zdGVwLGVudGVya2V5aGludDp0LmNvbmZpcm1UeXBlLHBhdHRlcm46Im51bWJlciI9PT10LnR5cGU/IlswLTldKiI6bnVsbCxhdXRvY29tcGxldGU6dC5hdXRvY29tcGxldGUsaW5wdXRtb2RlOnQuaW5wdXRtb2RlLHR5cGU6dC5pbnB1dFR5cGV9LGRvbVByb3BzOnt2YWx1ZTp0LnZhbHVlU3luY30sb246e2NoYW5nZTpmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpfSxmb2N1czp0Ll9vbkZvY3VzLGJsdXI6dC5fb25CbHVyLGlucHV0OltmdW5jdGlvbihlKXtlLnRhcmdldC5jb21wb3Npbmd8fCh0LnZhbHVlU3luYz1lLnRhcmdldC52YWx1ZSl9LGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpLHQuX29uSW5wdXQoZSl9XSxjb21wb3NpdGlvbnN0YXJ0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpLHQuX29uQ29tcG9zaXRpb24oZSl9LGNvbXBvc2l0aW9uZW5kOmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpLHQuX29uQ29tcG9zaXRpb24oZSl9LGNvbXBvc2l0aW9udXBkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpLHQuX29uQ29tcG9zaXRpb24oZSl9LGtleXVwOmZ1bmN0aW9uKGUpe3JldHVybiFlLnR5cGUuaW5kZXhPZigia2V5IikmJnQuX2soZS5rZXlDb2RlLCJlbnRlciIsMTMsZS5rZXksIkVudGVyIik/bnVsbDooZS5zdG9wUHJvcGFnYXRpb24oKSx0Ll9vbktleXVwKGUpKX19fSk6bigiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOnQudmFsdWVTeW5jLGV4cHJlc3Npb246InZhbHVlU3luYyJ9LHtuYW1lOiJrZXlib2FyZCIscmF3TmFtZToidi1rZXlib2FyZCJ9LHtuYW1lOiJmaWVsZCIscmF3TmFtZToidi1maWVsZCJ9XSxyZWY6ImlucHV0IixzdGF0aWNDbGFzczoidW5pLWlucHV0LWlucHV0IixzdHlsZTp0LmN1cnNvckNvbG9yP3tjYXJldENvbG9yOnQuY3Vyc29yQ29sb3J9Ont9LGF0dHJzOntkaXNhYmxlZDp0LmRpc2FibGVkLG1heGxlbmd0aDp0Lm1heGxlbmd0aCxzdGVwOnQuX3N0ZXAsZW50ZXJrZXloaW50OnQuY29uZmlybVR5cGUscGF0dGVybjoibnVtYmVyIj09PXQudHlwZT8iWzAtOV0qIjpudWxsLGF1dG9jb21wbGV0ZTp0LmF1dG9jb21wbGV0ZSxpbnB1dG1vZGU6dC5pbnB1dG1vZGUsdHlwZToicmFkaW8ifSxkb21Qcm9wczp7Y2hlY2tlZDp0Ll9xKHQudmFsdWVTeW5jLG51bGwpfSxvbjp7Y2hhbmdlOltmdW5jdGlvbihlKXt0LnZhbHVlU3luYz1udWxsfSxmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpfV0sZm9jdXM6dC5fb25Gb2N1cyxibHVyOnQuX29uQmx1cixpbnB1dDpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKSx0Ll9vbklucHV0KGUpfSxjb21wb3NpdGlvbnN0YXJ0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpLHQuX29uQ29tcG9zaXRpb24oZSl9LGNvbXBvc2l0aW9uZW5kOmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpLHQuX29uQ29tcG9zaXRpb24oZSl9LGNvbXBvc2l0aW9udXBkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpLHQuX29uQ29tcG9zaXRpb24oZSl9LGtleXVwOmZ1bmN0aW9uKGUpe3JldHVybiFlLnR5cGUuaW5kZXhPZigia2V5IikmJnQuX2soZS5rZXlDb2RlLCJlbnRlciIsMTMsZS5rZXksIkVudGVyIik/bnVsbDooZS5zdG9wUHJvcGFnYXRpb24oKSx0Ll9vbktleXVwKGUpKX19fSk6bigiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOnQudmFsdWVTeW5jLGV4cHJlc3Npb246InZhbHVlU3luYyJ9LHtuYW1lOiJrZXlib2FyZCIscmF3TmFtZToidi1rZXlib2FyZCJ9LHtuYW1lOiJmaWVsZCIscmF3TmFtZToidi1maWVsZCJ9XSxyZWY6ImlucHV0IixzdGF0aWNDbGFzczoidW5pLWlucHV0LWlucHV0IixzdHlsZTp0LmN1cnNvckNvbG9yP3tjYXJldENvbG9yOnQuY3Vyc29yQ29sb3J9Ont9LGF0dHJzOntkaXNhYmxlZDp0LmRpc2FibGVkLG1heGxlbmd0aDp0Lm1heGxlbmd0aCxzdGVwOnQuX3N0ZXAsZW50ZXJrZXloaW50OnQuY29uZmlybVR5cGUscGF0dGVybjoibnVtYmVyIj09PXQudHlwZT8iWzAtOV0qIjpudWxsLGF1dG9jb21wbGV0ZTp0LmF1dG9jb21wbGV0ZSxpbnB1dG1vZGU6dC5pbnB1dG1vZGUsdHlwZToiY2hlY2tib3gifSxkb21Qcm9wczp7Y2hlY2tlZDpBcnJheS5pc0FycmF5KHQudmFsdWVTeW5jKT90Ll9pKHQudmFsdWVTeW5jLG51bGwpPi0xOnQudmFsdWVTeW5jfSxvbjp7Y2hhbmdlOltmdW5jdGlvbihlKXt2YXIgbj10LnZhbHVlU3luYyxyPWUudGFyZ2V0LGk9ISFyLmNoZWNrZWQ7aWYoQXJyYXkuaXNBcnJheShuKSl7dmFyIG89bnVsbCxhPXQuX2kobixvKTtyLmNoZWNrZWQ/YTwwJiYodC52YWx1ZVN5bmM9bi5jb25jYXQoW29dKSk6YT4tMSYmKHQudmFsdWVTeW5jPW4uc2xpY2UoMCxhKS5jb25jYXQobi5zbGljZShhKzEpKSl9ZWxzZSB0LnZhbHVlU3luYz1pfSxmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpfV0sZm9jdXM6dC5fb25Gb2N1cyxibHVyOnQuX29uQmx1cixpbnB1dDpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKSx0Ll9vbklucHV0KGUpfSxjb21wb3NpdGlvbnN0YXJ0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpLHQuX29uQ29tcG9zaXRpb24oZSl9LGNvbXBvc2l0aW9uZW5kOmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpLHQuX29uQ29tcG9zaXRpb24oZSl9LGNvbXBvc2l0aW9udXBkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpLHQuX29uQ29tcG9zaXRpb24oZSl9LGtleXVwOmZ1bmN0aW9uKGUpe3JldHVybiFlLnR5cGUuaW5kZXhPZigia2V5IikmJnQuX2soZS5rZXlDb2RlLCJlbnRlciIsMTMsZS5rZXksIkVudGVyIik/bnVsbDooZS5zdG9wUHJvcGFnYXRpb24oKSx0Ll9vbktleXVwKGUpKX19fSksdC5kaXNhYmxlZCYmdC5maXhDb2xvcj9uKCJpbnB1dCIse3JlZjoiaW5wdXQiLHN0YXRpY0NsYXNzOiJ1bmktaW5wdXQtaW5wdXQiLHN0eWxlOnQuY3Vyc29yQ29sb3I/e2NhcmV0Q29sb3I6dC5jdXJzb3JDb2xvcn06e30sYXR0cnM6e3RhYmluZGV4OiItMSIscmVhZG9ubHk6dC5kaXNhYmxlZCx0eXBlOnQuaW5wdXRUeXBlLG1heGxlbmd0aDp0Lm1heGxlbmd0aCxzdGVwOnQuX3N0ZXB9LGRvbVByb3BzOnt2YWx1ZTp0LnZhbHVlU3luY30sb246e2ZvY3VzOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRhcmdldC5ibHVyKCl9fX0pOnQuX2UoKV0pXSl9LGk9W10sbz1uKCI5MDllIiksYT1uKCIzNDBkIikscz1bInRleHQiLCJudW1iZXIiLCJpZGNhcmQiLCJkaWdpdCIsInBhc3N3b3JkIiwidGVsIl0sYz1bIm51bWJlciIsImRpZ2l0Il0sdT1bIm9mZiIsIm9uZS10aW1lLWNvZGUiXSxsPVsibm9uZSIsInRleHQiLCJkZWNpbWFsIiwibnVtZXJpYyIsInRlbCIsInNlYXJjaCIsImVtYWlsIiwidXJsIl0sZj1PYmplY3QoYVsicCJdKSgoZnVuY3Rpb24oKXt2YXIgdD1uYXZpZ2F0b3IudXNlckFnZW50LGU9IiIsbj10Lm1hdGNoKC9PU1xzKFtcd19dKylcc2xpa2UvKTtpZihuKWU9blsxXS5yZXBsYWNlKC9fL2csIi4iKTtlbHNlIGlmKC9NYWNpbnRvc2h8TWFjL2kudGVzdCh0KSYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPjApe3ZhciByPXQubWF0Y2goL1ZlcnNpb25cLyhcUyopXGIvKTtyJiYoZT1yWzFdKX1yZXR1cm4hIWUmJnBhcnNlSW50KGUpPj0xNiYmcGFyc2VGbG9hdChlKTwxNy4yfSkpLGQ9e25hbWU6IklucHV0IixtaXhpbnM6W29bImIiXV0scHJvcHM6e25hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LHR5cGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6InRleHQifSxwYXNzd29yZDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxwbGFjZWhvbGRlclN0eWxlOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxwbGFjZWhvbGRlckNsYXNzOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJpbnB1dC1wbGFjZWhvbGRlciJ9LGRpc2FibGVkOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sbWF4bGVuZ3RoOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjE0MH0sY29uZmlybVR5cGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6ImRvbmUifSx0ZXh0Q29udGVudFR5cGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LHN0ZXA6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IjAuMDAwMDAwMDAwMDAwMDAwMDAxIn0saW5wdXRtb2RlOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCx2YWxpZGF0b3I6ZnVuY3Rpb24odCl7cmV0dXJuISF+bC5pbmRleE9mKHQpfX0sY3Vyc29yQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3dyYXBwZXJIZWlnaHQ6MCxjYWNoZWRWYWx1ZToiIn19LGNvbXB1dGVkOntpbnB1dFR5cGU6ZnVuY3Rpb24oKXt2YXIgdD0iIjtzd2l0Y2godGhpcy50eXBlKXtjYXNlInRleHQiOnQ9InRleHQiLCJzZWFyY2giPT09dGhpcy5jb25maXJtVHlwZSYmKHQ9InNlYXJjaCIpO2JyZWFrO2Nhc2UiaWRjYXJkIjp0PSJ0ZXh0IjticmVhaztjYXNlImRpZ2l0Ijp0PSJudW1iZXIiO2JyZWFrO2RlZmF1bHQ6dD1+cy5pbmRleE9mKHRoaXMudHlwZSk/dGhpcy50eXBlOiJ0ZXh0IjticmVha31yZXR1cm4gdGhpcy5wYXNzd29yZD8icGFzc3dvcmQiOnR9LF9zdGVwOmZ1bmN0aW9uKCl7cmV0dXJufmMuaW5kZXhPZih0aGlzLnR5cGUpP3RoaXMuc3RlcDoiIn0sYXV0b2NvbXBsZXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dS5pbmRleE9mKHRoaXMudGV4dENvbnRlbnRUeXBlKSxlPXUuaW5kZXhPZihPYmplY3QoYVsibiJdKSh0aGlzLnRleHRDb250ZW50VHlwZSkpLG49LTEhPT10P3Q6LTEhPT1lP2U6MDtyZXR1cm4gdVtuXX0sc2hvd1BsYWNlaG9sZGVyOmZ1bmN0aW9uKCl7dmFyIHQ9ImRpZ2l0Ij09PXRoaXMudHlwZT90aGlzLmNhY2hlZFZhbHVlLmluZGV4T2YoIi4iKTotMTtyZXR1cm4hKHRoaXMuY29tcG9zaW5nfHx0aGlzLnZhbHVlU3luYy5sZW5ndGh8fCItIj09PXRoaXMuY2FjaGVkVmFsdWV8fC0xIT09dCYmdD09PXRoaXMuY2FjaGVkVmFsdWUubGVuZ3RoLTEpfX0sd2F0Y2g6e21heGxlbmd0aDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnZhbHVlU3luYy5zbGljZSgwLHBhcnNlSW50KHQsMTApKTtlIT09dGhpcy52YWx1ZVN5bmMmJih0aGlzLnZhbHVlU3luYz1lKX0sdmFsdWVTeW5jOmZ1bmN0aW9uKHQpeyJudW1iZXIiIT09dGhpcy50eXBlfHwiLSI9PT10aGlzLmNhY2hlZFZhbHVlJiYiIj09PXR8fCh0aGlzLmNhY2hlZFZhbHVlPXQudG9TdHJpbmcoKSl9LHZhbHVlOmZ1bmN0aW9uKHQpeyJudW1iZXIiPT09dGhpcy5pbnB1dFR5cGUmJnQmJih0aGlzLmNhY2hlZFZhbHVlPXQudG9TdHJpbmcoKSl9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy4kZGlzcGF0Y2goIkZvcm0iLCJ1bmktZm9ybS1ncm91cC11cGRhdGUiLHt0eXBlOiJhZGQiLHZtOnRoaXN9KSwibnVtYmVyIj09PXRoaXMuaW5wdXRUeXBlJiYidW5kZWZpbmVkIiE9PXR5cGVvZiB0aGlzLnZhbHVlJiZudWxsIT09dGhpcy52YWx1ZSYmKHRoaXMuY2FjaGVkVmFsdWU9dGhpcy52YWx1ZS50b1N0cmluZygpKX0sbW91bnRlZDpmdW5jdGlvbigpe2lmKCJzZWFyY2giPT09dGhpcy5jb25maXJtVHlwZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpO3QuYWN0aW9uPSIiLHQub25zdWJtaXQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sdC5jbGFzc05hbWU9InVuaS1pbnB1dC1mb3JtIix0LmFwcGVuZENoaWxkKHRoaXMuJHJlZnMuaW5wdXQpLHRoaXMuJHJlZnMud3JhcHBlci5hcHBlbmRDaGlsZCh0KX12YXIgZT10aGlzO3doaWxlKGUpe3ZhciBuPWUuJG9wdGlvbnMuX3Njb3BlSWQ7biYmdGhpcy4kcmVmcy5wbGFjZWhvbGRlci5zZXRBdHRyaWJ1dGUobiwiIiksZT1lLiRwYXJlbnR9fSxiZWZvcmVEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy4kZGlzcGF0Y2goIkZvcm0iLCJ1bmktZm9ybS1ncm91cC11cGRhdGUiLHt0eXBlOiJyZW1vdmUiLHZtOnRoaXN9KX0sbWV0aG9kczp7X29uS2V5dXA6ZnVuY3Rpb24odCl7dmFyIGU9dC50YXJnZXQ7dGhpcy4kdHJpZ2dlcigiY29uZmlybSIsdCx7dmFsdWU6ZS52YWx1ZX0pLHRoaXMuY29uZmlybUhvbGR8fGUuYmx1cigpfSxfcmVzb2x2ZURpZ2l0RGVjaW1hbFBvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztpZih0aGlzLmNhY2hlZFZhbHVlKWlmKCIuIj09PXQuZGF0YSl7aWYoIi4iPT09dGhpcy5jYWNoZWRWYWx1ZS5zbGljZSgtMSkpcmV0dXJuIHRoaXMudmFsdWVTeW5jPXQudGFyZ2V0LnZhbHVlPXRoaXMuY2FjaGVkVmFsdWU9dGhpcy5jYWNoZWRWYWx1ZS5zbGljZSgwLC0xKSwhMTtpZighdGhpcy5jYWNoZWRWYWx1ZS5pbmNsdWRlcygiLiIpKXJldHVybiB0aGlzLmNhY2hlZFZhbHVlKz0iLiIsdGhpcy5fX2NsZWFyQ2FjaGVkVmFsdWU9ZnVuY3Rpb24oKXtuLmNhY2hlZFZhbHVlPW4udmFsdWVTeW5jPXQudGFyZ2V0LnZhbHVlPW4uY2FjaGVkVmFsdWUuc2xpY2UoMCwtMSksdC50YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsbi5fX2NsZWFyQ2FjaGVkVmFsdWUpfSx0LnRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9fY2xlYXJDYWNoZWRWYWx1ZSksITF9ZWxzZSBpZigiZGVsZXRlQ29udGVudEJhY2t3YXJkIj09PXQuaW5wdXRUeXBlJiZmKCkmJiIuIj09PXRoaXMuY2FjaGVkVmFsdWUuc2xpY2UoLTIsLTEpKXJldHVybiB0aGlzLmNhY2hlZFZhbHVlPXRoaXMudmFsdWVTeW5jPXQudGFyZ2V0LnZhbHVlPXRoaXMuY2FjaGVkVmFsdWUuc2xpY2UoMCwtMiksdGhpcy4kdHJpZ2dlcklucHV0KHQse3ZhbHVlOnRoaXMudmFsdWVTeW5jfSxlKSwhMX0sX29uSW5wdXQ6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9ITE7aWYoIXRoaXMuY29tcG9zaW5nfHwhdGhpcy5pZ25vcmVDb21wb3NpdGlvbkV2ZW50KXtpZigibnVtYmVyIj09PXRoaXMuaW5wdXRUeXBlKXt2YXIgaT1wYXJzZUludCh0aGlzLm1heGxlbmd0aCwxMCk7aWYoaT4wJiZ0LnRhcmdldC52YWx1ZS5sZW5ndGg+aSl7dC50YXJnZXQudmFsdWU9dC50YXJnZXQudmFsdWUuc2xpY2UoMCxpKSx0aGlzLnZhbHVlU3luYz10LnRhcmdldC52YWx1ZTt2YXIgbz1udWxsIT09dGhpcy52YWx1ZSYmdm9pZCAwIT09dGhpcy52YWx1ZT90aGlzLnZhbHVlLnRvU3RyaW5nKCk6IiI7bz09PXQudGFyZ2V0LnZhbHVlJiYocj0hMCl9aWYodGhpcy5fX2NsZWFyQ2FjaGVkVmFsdWUmJnQudGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX19jbGVhckNhY2hlZFZhbHVlKSx0LnRhcmdldC52YWxpZGl0eSYmIXQudGFyZ2V0LnZhbGlkaXR5LnZhbGlkKXtpZigoIXRoaXMuY2FjaGVkVmFsdWV8fCF0LnRhcmdldC52YWx1ZSkmJiItIj09PXQuZGF0YXx8Ii0iPT09dGhpcy5jYWNoZWRWYWx1ZVswXSYmImRlbGV0ZUNvbnRlbnRCYWNrd2FyZCI9PT10LmlucHV0VHlwZSl7dGhpcy5jYWNoZWRWYWx1ZT0iLSIsdGhpcy52YWx1ZVN5bmM9IiI7dmFyIGE9dGhpcy5fX2NsZWFyQ2FjaGVkVmFsdWU9ZnVuY3Rpb24oKXtuLmNhY2hlZFZhbHVlPXQudGFyZ2V0LnZhbHVlPSIifTtyZXR1cm4gdm9pZCB0LnRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJibHVyIixhKX12YXIgcz10aGlzLl9yZXNvbHZlRGlnaXREZWNpbWFsUG9pbnQodCxlKTtyZXR1cm4iYm9vbGVhbiI9PT10eXBlb2Ygcz9zOnZvaWQodGhpcy5jYWNoZWRWYWx1ZT10aGlzLnZhbHVlU3luYz10LnRhcmdldC52YWx1ZT0iLSI9PT10aGlzLmNhY2hlZFZhbHVlPyIiOnRoaXMuY2FjaGVkVmFsdWUpfXZhciBjPXRoaXMuX3Jlc29sdmVEaWdpdERlY2ltYWxQb2ludCh0LGUpO2lmKCJib29sZWFuIj09PXR5cGVvZiBjKXJldHVybiBjO3RoaXMuY2FjaGVkVmFsdWU9dGhpcy52YWx1ZVN5bmN9cnx8KHRoaXMudmFsdWVTeW5jPXRoaXMuJHJlZnMuaW5wdXQudmFsdWUsdGhpcy4kdHJpZ2dlcklucHV0KHQse3ZhbHVlOnRoaXMudmFsdWVTeW5jfSxlKSl9fSxfb25Db21wb3NpdGlvbjpmdW5jdGlvbih0KXtzd2l0Y2godC50eXBlKXtjYXNlImNvbXBvc2l0aW9uc3RhcnQiOnRoaXMuY29tcG9zaW5nPSEwO2JyZWFrO2Nhc2UiY29tcG9zaXRpb25lbmQiOnRoaXMuY29tcG9zaW5nJiYodGhpcy5jb21wb3Npbmc9ITEsdGhpcy5fb25JbnB1dCh0KSk7YnJlYWt9IXRoaXMuaWdub3JlQ29tcG9zaXRpb25FdmVudCYmdGhpcy4kdHJpZ2dlcih0LnR5cGUsdCx7ZGF0YTp0LmRhdGF9KX0sX3Jlc2V0Rm9ybURhdGE6ZnVuY3Rpb24oKXt0aGlzLnZhbHVlU3luYz0iIn0sX2dldEZvcm1EYXRhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZT97dmFsdWU6dGhpcy52YWx1ZVN5bmMsa2V5OnRoaXMubmFtZX06e319fX0saD1kLHA9KG4oImMwODEiKSxuKCI4ODQ0IikpLHY9T2JqZWN0KHBbImEiXSkoaCxyLGksITEsbnVsbCxudWxsLG51bGwpO2VbImRlZmF1bHQiXT12LmV4cG9ydHN9LGUwZWM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe2UmJihuW3RdPU1hdGgucm91bmQoZSkpfX1uLnIoZSksbi5kKGUsImNhbnZhc0dldEltYWdlRGF0YSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKGUsImNhbnZhc1B1dEltYWdlRGF0YSIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSksbi5kKGUsImNhbnZhc1RvVGVtcEZpbGVQYXRoIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKSxuLmQoZSwiZHJhd0NhbnZhcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSk7dmFyIGk9e2NhbnZhc0lkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0seDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITAsdmFsaWRhdG9yOnIoIngiKX0seTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITAsdmFsaWRhdG9yOnIoInkiKX0sd2lkdGg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiEwLHZhbGlkYXRvcjpyKCJ3aWR0aCIpfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiEwLHZhbGlkYXRvcjpyKCJoZWlnaHQiKX19LG89e2NhbnZhc0lkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sZGF0YTp7dHlwZTpVaW50OENsYW1wZWRBcnJheSxyZXF1aXJlZDohMH0seDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITAsdmFsaWRhdG9yOnIoIngiKX0seTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITAsdmFsaWRhdG9yOnIoInkiKX0sd2lkdGg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiEwLHZhbGlkYXRvcjpyKCJ3aWR0aCIpfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHZhbGlkYXRvcjpyKCJoZWlnaHQiKX19LGE9e1BORzoicG5nIixKUEc6ImpwZyIsSlBFRzoianBnIn0scz17eDp7dHlwZTpOdW1iZXIsZGVmYXVsdDowLHZhbGlkYXRvcjpyKCJ4Iil9LHk6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MCx2YWxpZGF0b3I6cigieSIpfSx3aWR0aDp7dHlwZTpOdW1iZXIsdmFsaWRhdG9yOnIoIndpZHRoIil9LGhlaWdodDp7dHlwZTpOdW1iZXIsdmFsaWRhdG9yOnIoImhlaWdodCIpfSxkZXN0V2lkdGg6e3R5cGU6TnVtYmVyLHZhbGlkYXRvcjpyKCJkZXN0V2lkdGgiKX0sZGVzdEhlaWdodDp7dHlwZTpOdW1iZXIsdmFsaWRhdG9yOnIoImRlc3RIZWlnaHQiKX0sY2FudmFzSWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxmaWxlVHlwZTp7dHlwZTpTdHJpbmcsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7dD0odHx8IiIpLnRvVXBwZXJDYXNlKCksZS5maWxlVHlwZT10IGluIGE/YVt0XTphLlBOR319LHF1YWxpdHk6e3R5cGU6TnVtYmVyLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe2UucXVhbGl0eT10PjAmJnQ8MT90OjF9fX0sYz17Y2FudmFzSWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxhY3Rpb25zOnt0eXBlOkFycmF5LHJlcXVpcmVkOiEwfSxyZXNlcnZlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX19fSxlMGY5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJnZXRMb2NhdGlvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSk7dmFyIHI9WyJ3Z3M4NCIsImdjajAyIl0saT17dHlwZTp7dHlwZTpTdHJpbmcsdmFsaWRhdG9yOmZ1bmN0aW9uKHQsZSl7dD0odHx8IiIpLnRvTG93ZXJDYXNlKCksZS50eXBlPXIuaW5kZXhPZih0KTwwP3JbMF06dH19LGFsdGl0dWRlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX19fSxlMTZlOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe3ZhciByLGk9bigiOTUxYyIpLG89bi5uKGkpLGE9bigiMzQwZCIpLHM9bigiYzgwYyIpLGM9WyJ0b3AiLCJsZWZ0IiwicmlnaHQiXSx1PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtmdW5jdGlvbiBsKHQsZSl7cnx8KHI9dS5zdHlsZSksci5zZXRQcm9wZXJ0eSh0LGUpfWZ1bmN0aW9uIGYodCl7dmFyIGU9d2luZG93LnNjcmVlbixuPVt3aW5kb3cub3V0ZXJXaWR0aCx3aW5kb3cub3V0ZXJIZWlnaHQsZS53aWR0aCxlLmhlaWdodCx1LmNsaWVudFdpZHRoLHUuY2xpZW50SGVpZ2h0XTtyZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCxuKT50fWVbImEiXT17bmFtZToiTGF5b3V0Iixwcm9wczp7cm91dGVyS2V5Ont0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxrZWVwQWxpdmVJbmNsdWRlOnt0eXBlOkFycmF5LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue21hcmdpbldpZHRoOjAsbGVmdFdpbmRvd1N0eWxlOiIiLHJpZ2h0V2luZG93U3R5bGU6IiIsdG9wV2luZG93U3R5bGU6IiIsdG9wV2luZG93TWVkaWFRdWVyeTohMSxsZWZ0V2luZG93TWVkaWFRdWVyeTohMSxyaWdodFdpbmRvd01lZGlhUXVlcnk6ITEsdG9wV2luZG93SGVpZ2h0OiIwcHgiLGFwaVNob3dUb3BXaW5kb3c6ITEsYXBpU2hvd0xlZnRXaW5kb3c6ITEsYXBpU2hvd1JpZ2h0V2luZG93OiExLG5hdmlnYXRpb25CYXJUaXRsZVRleHQ6IiIsbWF4V2lkdGhNZWlkYVF1ZXJ5OiExfX0sY29tcHV0ZWQ6e2JpbmRXaW5kb3c6ZnVuY3Rpb24oKXtyZXR1cm57bWF0Y2hUb3BXaW5kb3c6dGhpcy50b3BXaW5kb3dNZWRpYVF1ZXJ5LHNob3dUb3BXaW5kb3c6dGhpcy5zaG93VG9wV2luZG93fHx0aGlzLmFwaVNob3dUb3BXaW5kb3csbWF0Y2hMZWZ0V2luZG93OnRoaXMubGVmdFdpbmRvd01lZGlhUXVlcnksc2hvd0xlZnRXaW5kb3c6dGhpcy5zaG93TGVmdFdpbmRvd3x8dGhpcy5hcGlTaG93TGVmdFdpbmRvdyxtYXRjaFJpZ2h0V2luZG93OnRoaXMucmlnaHRXaW5kb3dNZWRpYVF1ZXJ5LHNob3dSaWdodFdpbmRvdzp0aGlzLnNob3dSaWdodFdpbmRvd3x8dGhpcy5hcGlTaG93UmlnaHRXaW5kb3d9fSxzaG93TGF5b3V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hvd1RvcFdpbmRvd3x8dGhpcy5zaG93TGVmdFdpbmRvd3x8dGhpcy5zaG93UmlnaHRXaW5kb3d9LHNob3dUb3BXaW5kb3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXNldEFwaVNob3dXaW5kb3coKSwhMSE9PXRoaXMuJHJvdXRlLm1ldGEudG9wV2luZG93JiZ0aGlzLnRvcFdpbmRvd01lZGlhUXVlcnl9LHNob3dMZWZ0V2luZG93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzZXRBcGlTaG93V2luZG93KCksITEhPT10aGlzLiRyb3V0ZS5tZXRhLmxlZnRXaW5kb3cmJnRoaXMubGVmdFdpbmRvd01lZGlhUXVlcnl9LHNob3dSaWdodFdpbmRvdzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlc2V0QXBpU2hvd1dpbmRvdygpLCExIT09dGhpcy4kcm91dGUubWV0YS5yaWdodFdpbmRvdyYmdGhpcy5yaWdodFdpbmRvd01lZGlhUXVlcnl9fSx3YXRjaDp7JHJvdXRlOmZ1bmN0aW9uKCl7dGhpcy5jaGVja01heFdpZHRoKCl9LHNob3dMYXlvdXQ6ZnVuY3Rpb24oKXt0aGlzLmNoZWNrTGF5b3V0KCl9LHNob3dUb3BXaW5kb3c6ZnVuY3Rpb24odCxlKXt0P3RoaXMuJG5leHRUaWNrKHRoaXMub25Ub3BXaW5kb3dJbml0KTpsKCItLXRvcC13aW5kb3ctaGVpZ2h0IiwiMHB4Iil9LHNob3dMZWZ0V2luZG93OmZ1bmN0aW9uKHQsZSl7dD90aGlzLiRuZXh0VGljayh0aGlzLm9uTGVmdFdpbmRvd0luaXQpOmwoIi0td2luZG93LWxlZnQiLCIwcHgiKX0sc2hvd1JpZ2h0V2luZG93OmZ1bmN0aW9uKHQsZSl7dD90aGlzLiRuZXh0VGljayh0aGlzLm9uUmlnaHRXaW5kb3dJbml0KTpsKCItLXdpbmRvdy1yaWdodCIsIjBweCIpfSxtYXJnaW5XaWR0aDpmdW5jdGlvbih0KXtsKCItLXdpbmRvdy1tYXJnaW4iLHQrInB4Iil9fSxiZWZvcmVDcmVhdGU6ZnVuY3Rpb24oKXtsKCItLXRvcC13aW5kb3ctaGVpZ2h0IiwiMHB4IiksbCgiLS13aW5kb3ctbGVmdCIsIjBweCIpLGwoIi0td2luZG93LXJpZ2h0IiwiMHB4IiksbCgiLS13aW5kb3ctbWFyZ2luIiwiMHB4Iil9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMudG9wV2luZG93PW8uYS5jb21wb25lbnQoIlZVbmlUb3BXaW5kb3ciKSx0aGlzLmxlZnRXaW5kb3c9by5hLmNvbXBvbmVudCgiVlVuaUxlZnRXaW5kb3ciKSx0aGlzLnJpZ2h0V2luZG93PW8uYS5jb21wb25lbnQoIlZVbmlSaWdodFdpbmRvdyIpLCh0aGlzLnRvcFdpbmRvd3x8dGhpcy5sZWZ0V2luZG93fHx0aGlzLnJpZ2h0V2luZG93KSYmdW5pLmNhbklVc2UoImNzcy52YXIiKSYmd2luZG93Lm1hdGNoTWVkaWEmJihjLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLmluaXRXaW5kb3dNaW5XaWR0aCh0KX0pKSx0aGlzLnJlc3BvbnNpdmU9Zih0aGlzLm1pbldpZHRoKSx0aGlzLnJlc3BvbnNpdmUmJih0aGlzLnRvcFdpbmRvdyYmdGhpcy50b3BXaW5kb3cub3B0aW9ucy5zdHlsZSYmKHRoaXMudG9wV2luZG93U3R5bGU9dGhpcy50b3BXaW5kb3cub3B0aW9ucy5zdHlsZSksdGhpcy5sZWZ0V2luZG93JiZ0aGlzLmxlZnRXaW5kb3cub3B0aW9ucy5zdHlsZSYmKHRoaXMubGVmdFdpbmRvd1N0eWxlPXRoaXMubGVmdFdpbmRvdy5vcHRpb25zLnN0eWxlKSx0aGlzLnJpZ2h0V2luZG93JiZ0aGlzLnJpZ2h0V2luZG93Lm9wdGlvbnMuc3R5bGUmJih0aGlzLnJpZ2h0V2luZG93U3R5bGU9dGhpcy5yaWdodFdpbmRvdy5vcHRpb25zLnN0eWxlKSxjLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLmluaXRNZWRpYVF1ZXJ5KHQpfSkpLHQub24oIm9uTmF2aWdhdGlvbkJhckNoYW5nZSIsKGZ1bmN0aW9uKHQpe2UubmF2aWdhdGlvbkJhclRpdGxlVGV4dD10LnRpdGxlVGV4dH0pKSkpLHRoaXMuaW5pdE1heFdpZHRoKCl9LG1vdW50ZWQ6ZnVuY3Rpb24oKXt0aGlzLmNoZWNrTGF5b3V0KCksdGhpcy5jaGVja01heFdpZHRoKCl9LG1ldGhvZHM6e3Jlc2V0QXBpU2hvd1dpbmRvdzpmdW5jdGlvbigpe3RoaXMuYXBpU2hvd0xlZnRXaW5kb3c9ITEsdGhpcy5hcGlTaG93UmlnaHRXaW5kb3c9ITF9LHNob3dXaW5kb3c6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTtpZighdGhpc1t0KyJXaW5kb3ciXSlyZXR1cm4gdCsiV2luZG93IG5vdCBmb3VuZCI7dmFyIG49T2JqZWN0KGFbImMiXSkodCk7aWYoIXRoaXNbInNob3ciK24rIldpbmRvdyJdKXt2YXIgcj0iYXBpU2hvdyIrbisiV2luZG93Ijt0aGlzW3JdIT09ZSYmKHRoaXNbcl09ZSwidG9wIj09PXQmJihlP3RoaXMuJG5leHRUaWNrKHRoaXMub25Ub3BXaW5kb3dJbml0KTpsKCItLXRvcC13aW5kb3ctaGVpZ2h0IiwiMHB4IikpKX19LGdldFdpbmRvd1N0eWxlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzW3QrIldpbmRvdyJdKXJldHVybiB0KyJXaW5kb3cgbm90IGZvdW5kIjt2YXIgZT1PYmplY3QuYXNzaWduKHt9LHRoaXNbdCsiV2luZG93U3R5bGUiXSk7cmV0dXJuIGV9LHNldFdpbmRvd1N0eWxlOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXNbdCsiV2luZG93Il0pcmV0dXJuIHQrIldpbmRvdyBub3QgZm91bmQiO2UmJih0aGlzW3QrIldpbmRvd1N0eWxlIl09ZSx0aGlzLiRuZXh0VGljayh0aGlzWyJvbiIrT2JqZWN0KGFbImMiXSkodCkrIldpbmRvd0luaXQiXSkpfSxpbml0TWF4V2lkdGg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLChmdW5jdGlvbigpe3QuY2hlY2tNYXhXaWR0aCgpfSkpfSxjaGVja0xheW91dDpmdW5jdGlvbigpe3RoaXMuJGVtaXQoImxheW91dCIsdGhpcy5zaG93TGF5b3V0KX0sY2hlY2tNYXhXaWR0aDpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoLG49cGFyc2VJbnQodGhpcy4kcm91dGUubWV0YS5tYXhXaWR0aCkscj0hMTtyPWU+bix0aGlzLiRlbWl0KCJtYXhXaWR0aCIsciksdGhpcy4kY29udGFpbmVyRWxlbXx8KHRoaXMuJGNvbnRhaW5lckVsZW09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigidW5pLWFwcCIpKSx0aGlzLiRjb250YWluZXJFbGVtJiYociYmbj8odGhpcy5tYXJnaW5XaWR0aD0oZS1uKS8yLHRoaXMuJG5leHRUaWNrKChmdW5jdGlvbigpe3Qub25MZWZ0V2luZG93SW5pdCgpLHQub25SaWdodFdpbmRvd0luaXQoKSx0LiRjb250YWluZXJFbGVtLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJtYXgtd2lkdGg6IituKyJweDttYXJnaW46MCBhdXRvOyIpfSkpKToodGhpcy5tYXJnaW5XaWR0aD0wLHRoaXMuJG5leHRUaWNrKChmdW5jdGlvbigpe3Qub25MZWZ0V2luZG93SW5pdCgpLHQub25SaWdodFdpbmRvd0luaXQoKSx0LiRjb250YWluZXJFbGVtLnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKX0pKSkpfSxpbml0V2luZG93TWluV2lkdGg6ZnVuY3Rpb24odCl7dmFyIGU9dCsiV2luZG93IjtpZih0aGlzW2VdKXt2YXIgbj10KyJXaW5kb3dNaW5XaWR0aCI7dGhpc1tuXT1zWyJjIl07dmFyIHI9X191bmlDb25maWdbZV07ciYmci5tYXRjaE1lZGlhJiZPYmplY3QoYVsiaSJdKShyLm1hdGNoTWVkaWEsIm1pbldpZHRoIikmJih0aGlzW25dPXIubWF0Y2hNZWRpYS5taW5XaWR0aCksKCJ1bmRlZmluZWQiPT09dHlwZW9mIHRoaXMubWluV2lkdGh8fHRoaXMubWluV2lkdGg+dGhpc1tuXSkmJih0aGlzLm1pbldpZHRoPXRoaXNbbl0pfX0saW5pdE1lZGlhUXVlcnk6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0aGlzW3QrIldpbmRvdyJdKXt2YXIgbj10KyJXaW5kb3dNZWRpYVF1ZXJ5IixyPXdpbmRvdy5tYXRjaE1lZGlhKCIobWluLXdpZHRoOiAiK3RoaXNbdCsiV2luZG93TWluV2lkdGgiXSsicHgpIik7ci5hZGRMaXN0ZW5lcigoZnVuY3Rpb24ocil7ZVtuXT1yLm1hdGNoZXMsZS4kbmV4dFRpY2soKGZ1bmN0aW9uKCl7ZVsib24iK09iamVjdChhWyJjIl0pKHQpKyJXaW5kb3dJbml0Il0oKX0pKX0pKSx0aGlzW25dPXIubWF0Y2hlc319LG9uVG9wV2luZG93SW5pdDpmdW5jdGlvbigpe2lmKHRoaXMucmVzcG9uc2l2ZSYmdGhpcy50b3BXaW5kb3cpe3ZhciB0PSIwcHgiO3Q9dGhpcy50b3BXaW5kb3dTdHlsZSYmdGhpcy50b3BXaW5kb3dTdHlsZS5oZWlnaHQ/dGhpcy4kcmVmcy50b3BXaW5kb3cub2Zmc2V0SGVpZ2h0KyJweCI6dGhpcy4kcmVmcy50b3AuJGVsLm9mZnNldEhlaWdodCsicHgiLHRoaXMudG9wV2luZG93SGVpZ2h0PXQsbCgiLS10b3Atd2luZG93LWhlaWdodCIsdCl9fSxvbkxlZnRXaW5kb3dJbml0OmZ1bmN0aW9uKCl7dGhpcy5yZXNwb25zaXZlJiZ0aGlzLmxlZnRXaW5kb3c/dGhpcy5sZWZ0V2luZG93U3R5bGUmJnRoaXMubGVmdFdpbmRvd1N0eWxlLndpZHRoP2woIi0td2luZG93LWxlZnQiLHRoaXMuJHJlZnMubGVmdFdpbmRvdy5vZmZzZXRXaWR0aCt0aGlzLm1hcmdpbldpZHRoKyJweCIpOmwoIi0td2luZG93LWxlZnQiLHRoaXMuJHJlZnMubGVmdC4kZWwub2Zmc2V0V2lkdGgrdGhpcy5tYXJnaW5XaWR0aCsicHgiKTpsKCItLXdpbmRvdy1sZWZ0Iix0aGlzLm1hcmdpbldpZHRoKyJweCIpfSxvblJpZ2h0V2luZG93SW5pdDpmdW5jdGlvbigpe3RoaXMucmVzcG9uc2l2ZSYmdGhpcy5yaWdodFdpbmRvdz90aGlzLnJpZ2h0V2luZG93U3R5bGUmJnRoaXMucmlnaHRXaW5kb3dTdHlsZS53aWR0aD9sKCItLXdpbmRvdy1yaWdodCIsdGhpcy4kcmVmcy5yaWdodFdpbmRvdy5vZmZzZXRXaWR0aCt0aGlzLm1hcmdpbldpZHRoKyJweCIpOmwoIi0td2luZG93LXJpZ2h0Iix0aGlzLiRyZWZzLnJpZ2h0LiRlbC5vZmZzZXRXaWR0aCt0aGlzLm1hcmdpbldpZHRoKyJweCIpOmwoIi0td2luZG93LXJpZ2h0Iix0aGlzLm1hcmdpbldpZHRoKyJweCIpfX19fSkuY2FsbCh0aGlzLG4oIjJjOWYiKSl9LGUxYjA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZnVuY3Rpb24odCl7bi5kKGUsInJlcXVlc3RDb21wb25lbnRJbmZvIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKTt2YXIgcj1uKCI3NTUzIiksaT1uKCIwNzk1Iiksbz1PYmplY3QoclsiYSJdKSgicmVxdWVzdENvbXBvbmVudEluZm8iKTtmdW5jdGlvbiBhKGUsbixyKXt0LnB1Ymxpc2hIYW5kbGVyKCJyZXF1ZXN0Q29tcG9uZW50SW5mbyIse3JlcUlkOm8ucHVzaChyKSxyZXFzOm59LE9iamVjdChpWyJhIl0pKGUpP2U6ZS4kcGFnZS5pZCl9fS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sZTI4MzpmdW5jdGlvbih0LGUsbil7fSxlMzJlOmZ1bmN0aW9uKHQsZSxuKXt9LGU0NDQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZnVuY3Rpb24odCl7dmFyIHI7bi5kKGUsInN0YXJ0QWNjZWxlcm9tZXRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSksbi5kKGUsInN0b3BBY2NlbGVyb21ldGVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwib25BY2NlbGVyb21ldGVyQ2hhbmdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKSxuLmQoZSwib2ZmQWNjZWxlcm9tZXRlckNoYW5nZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSk7dmFyIGk9W107ZnVuY3Rpb24gbyhlLG4pe3ZhciBvPXQsYT1vLmludm9rZUNhbGxiYWNrSGFuZGxlcjtpZighd2luZG93LkRldmljZU1vdGlvbkV2ZW50KXJldHVybntlcnJNc2c6InN0YXJ0QWNjZWxlcm9tZXRlcjpmYWlsIn07ZnVuY3Rpb24gcygpe3I9ZnVuY3Rpb24odCl7dmFyIGU9dC5hY2NlbGVyYXRpb258fHQuYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eTtpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2EodCx7eDplLnh8fDAseTplLnl8fDAsejplLnp8fDB9KX0pKX0sd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImRldmljZW1vdGlvbiIsciwhMSl9aWYoIXIpe2lmKERldmljZU1vdGlvbkV2ZW50LnJlcXVlc3RQZXJtaXNzaW9uKXJldHVybiB2b2lkIERldmljZU1vdGlvbkV2ZW50LnJlcXVlc3RQZXJtaXNzaW9uKCkudGhlbigoZnVuY3Rpb24odCl7ImdyYW50ZWQiPT09dD8ocygpLGEobix7ZXJyTXNnOiJzdGFydEFjY2VsZXJvbWV0ZXI6b2sifSkpOmEobix7ZXJyTXNnOiJzdGFydEFjY2VsZXJvbWV0ZXI6ZmFpbCAiLmNvbmNhdCh0KX0pfSkpLmNhdGNoKChmdW5jdGlvbih0KXthKG4se2Vyck1zZzoic3RhcnRBY2NlbGVyb21ldGVyOmZhaWwgIi5jb25jYXQodCl9KX0pKTtzKCl9cmV0dXJue319ZnVuY3Rpb24gYSgpe3JldHVybiByJiYod2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImRldmljZW1vdGlvbiIsciwhMSkscj1udWxsKSx7fX1mdW5jdGlvbiBzKHQpe2kubGVuZ3RofHxvKCksaS5wdXNoKHQpfWZ1bmN0aW9uIGModCl7aWYodCl7dmFyIGU9aS5pbmRleE9mKHQpO2U+PTAmJmkuc3BsaWNlKGUsMSl9aS5sZW5ndGh8fGEoKX19LmNhbGwodGhpcyxuKCIyYzlmIikpfSxlNTEwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPW4oIjM5YmQiKSxpPW4oImM3MDAiKSxvPW4oImQ0YzkiKSxhPW4oIjRiYTYiKSxzPW4oIjZmNzUiKTtmdW5jdGlvbiBjKHQpe3ZhciBlPTIwLG49MCxyPTA7dC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwoZnVuY3Rpb24odCl7dmFyIGU9dC5jaGFuZ2VkVG91Y2hlc1swXTtuPWUuY2xpZW50WCxyPWUuY2xpZW50WX0pKSx0LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwoZnVuY3Rpb24odCl7dmFyIGk9dC5jaGFuZ2VkVG91Y2hlc1swXTtpZihNYXRoLmFicyhpLmNsaWVudFgtbik8ZSYmTWF0aC5hYnMoaS5jbGllbnRZLXIpPGUpe3ZhciBvPW5ldyBDdXN0b21FdmVudCgiY2xpY2siLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsdGFyZ2V0OnQudGFyZ2V0LGN1cnJlbnRUYXJnZXQ6dC5jdXJyZW50VGFyZ2V0fSk7WyJzY3JlZW5YIiwic2NyZWVuWSIsImNsaWVudFgiLCJjbGllbnRZIiwicGFnZVgiLCJwYWdlWSJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe29bdF09aVt0XX0pKSx0LnRhcmdldC5kaXNwYXRjaEV2ZW50KG8pfX0pKX12YXIgdSxsLGY9e25hbWU6IlBpY2tlclZpZXdDb2x1bW4iLG1peGluczpbclsiYSJdLGlbImEiXV0sZGF0YTpmdW5jdGlvbigpe3JldHVybntzY29wZToicGlja2VyLXZpZXctY29sdW1uLSIuY29uY2F0KERhdGUubm93KCkpLGluaXRlZDohMSxpbmRpY2F0b3JTdHlsZToiIixpbmRpY2F0b3JDbGFzczoiIixpbmRpY2F0b3JIZWlnaHQ6MzQsbWFza1N0eWxlOiIiLG1hc2tDbGFzczoiIixjdXJyZW50OnRoaXMuJHBhcmVudC5nZXRJdGVtVmFsdWUodGhpcyksbGVuZ3RoOjB9fSxjb21wdXRlZDp7aGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHBhcmVudC5oZWlnaHR9LG1hc2tTaXplOmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuaGVpZ2h0LXRoaXMuaW5kaWNhdG9ySGVpZ2h0KS8yfX0sd2F0Y2g6e2luZGljYXRvckhlaWdodDpmdW5jdGlvbih0KXt0aGlzLl9zZXRJdGVtSGVpZ2h0KHQpLHRoaXMuaW5pdGVkJiZ0aGlzLnVwZGF0ZSgpfSxjdXJyZW50OmZ1bmN0aW9uKHQpe3RoaXMuJHBhcmVudC5zZXRJdGVtVmFsdWUodGhpcyx0KX0sbGVuZ3RoOmZ1bmN0aW9uKHQpe3RoaXMuaW5pdGVkJiZ0aGlzLnVwZGF0ZSh0KX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRwYXJlbnQ7dGhpcy5pbmRpY2F0b3JTdHlsZT10LmluZGljYXRvclN0eWxlLHRoaXMuaW5kaWNhdG9yQ2xhc3M9dC5pbmRpY2F0b3JDbGFzcyx0aGlzLm1hc2tTdHlsZT10Lm1hc2tTdHlsZSx0aGlzLm1hc2tDbGFzcz10Lm1hc2tDbGFzcyx0aGlzLmRlbHRhWT0wfSxtb3VudGVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLnRvdWNodHJhY2sodGhpcy4kcmVmcy5tYWluLCJfaGFuZGxlVHJhY2siLCEwKSx0aGlzLnNldEN1cnJlbnQodGhpcy5jdXJyZW50KSx0aGlzLiRuZXh0VGljaygoZnVuY3Rpb24oKXt0LmluaXQoKSx0LnVwZGF0ZSgpfSkpLGModGhpcy4kZWwpLE9iamVjdChzWyJiIl0pKCk7dmFyIGU9dGhpczt3aGlsZShlKXt2YXIgbj1lLiRvcHRpb25zLl9zY29wZUlkO24mJnRoaXMuJHJlZnMuaW5kaWNhdG9yLnNldEF0dHJpYnV0ZShuLCIiKSxlPWUuJHBhcmVudH19LG1ldGhvZHM6e19zZXRJdGVtSGVpZ2h0OmZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS5pbm5lclRleHQ9Ii51bmktcGlja2VyLXZpZXctY29udGVudC4iLmNvbmNhdCh0aGlzLnNjb3BlLCI+KntoZWlnaHQ6ICIpLmNvbmNhdCh0LCJweDtvdmVyZmxvdzogaGlkZGVuO30iKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGUpfSxfaGFuZGxlVHJhY2s6ZnVuY3Rpb24odCl7aWYodGhpcy5fc2Nyb2xsZXIpc3dpdGNoKHQuZGV0YWlsLnN0YXRlKXtjYXNlInN0YXJ0Ijp0aGlzLl9oYW5kbGVUb3VjaFN0YXJ0KHQpLE9iamVjdChzWyJhIl0pKHtkaXNhYmxlOiEwfSk7YnJlYWs7Y2FzZSJtb3ZlIjp0aGlzLl9oYW5kbGVUb3VjaE1vdmUodCksdC5zdG9wUHJvcGFnYXRpb24oKTticmVhaztjYXNlImVuZCI6Y2FzZSJjYW5jZWwiOnRoaXMuX2hhbmRsZVRvdWNoRW5kKHQpLE9iamVjdChzWyJhIl0pKHtkaXNhYmxlOiExfSl9fSxfaGFuZGxlVGFwOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY2xpZW50WTtpZighdGhpcy5fc2Nyb2xsZXIuaXNTY3JvbGxpbmcoKSl7dmFyIG49dGhpcy4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj1lLW4udG9wLXRoaXMuaGVpZ2h0LzIsaT10aGlzLmluZGljYXRvckhlaWdodC8yO2lmKCEoTWF0aC5hYnMocik8PWkpKXt2YXIgbz1NYXRoLmNlaWwoKE1hdGguYWJzKHIpLWkpL3RoaXMuaW5kaWNhdG9ySGVpZ2h0KSxhPXI8MD8tbzpvLHM9TWF0aC5taW4odGhpcy5jdXJyZW50K2EsdGhpcy5sZW5ndGgtMSk7dGhpcy5jdXJyZW50PXM9TWF0aC5tYXgocywwKSx0aGlzLl9zY3JvbGxlci5zY3JvbGxUbyhzKnRoaXMuaW5kaWNhdG9ySGVpZ2h0KX19fSxfaGFuZGxlV2hlZWw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kZWx0YVkrdC5kZWx0YVk7aWYoTWF0aC5hYnMoZSk+MTApe3RoaXMuZGVsdGFZPTA7dmFyIG49TWF0aC5taW4odGhpcy5jdXJyZW50KyhlPDA/LTE6MSksdGhpcy5sZW5ndGgtMSk7dGhpcy5jdXJyZW50PW49TWF0aC5tYXgobiwwKSx0aGlzLl9zY3JvbGxlci5zY3JvbGxUbyhuKnRoaXMuaW5kaWNhdG9ySGVpZ2h0KX1lbHNlIHRoaXMuZGVsdGFZPWU7dC5wcmV2ZW50RGVmYXVsdCgpfSxzZXRDdXJyZW50OmZ1bmN0aW9uKHQpe3QhPT10aGlzLmN1cnJlbnQmJih0aGlzLmN1cnJlbnQ9dCx0aGlzLmluaXRlZCYmdGhpcy51cGRhdGUoKSl9LGluaXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuaW5pdFNjcm9sbGVyKHRoaXMuJHJlZnMuY29udGVudCx7ZW5hYmxlWTohMCxlbmFibGVYOiExLGVuYWJsZVNuYXA6ITAsaXRlbVNpemU6dGhpcy5pbmRpY2F0b3JIZWlnaHQsZnJpY3Rpb246bmV3IG9bImEiXSgxZS00KSxzcHJpbmc6bmV3IGFbImEiXSgyLDkwLDIwKSxvblNuYXA6ZnVuY3Rpb24oZSl7aXNOYU4oZSl8fGU9PT10LmN1cnJlbnR8fCh0LmN1cnJlbnQ9ZSl9fSksdGhpcy5pbml0ZWQ9ITB9LHVwZGF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy4kbmV4dFRpY2soKGZ1bmN0aW9uKCl7dmFyIGU9TWF0aC5taW4odC5jdXJyZW50LHQubGVuZ3RoLTEpO2U9TWF0aC5tYXgoZSwwKSx0Ll9zY3JvbGxlci51cGRhdGUoZSp0LmluZGljYXRvckhlaWdodCx2b2lkIDAsdC5pbmRpY2F0b3JIZWlnaHQpfSkpfSxfcmVzaXplOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaGVpZ2h0O3RoaXMuaW5kaWNhdG9ySGVpZ2h0PWV9fSxyZW5kZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPXRoaXMuJHNsb3RzLmRlZmF1bHQmJnRoaXMuJHNsb3RzLmRlZmF1bHQubGVuZ3RofHwwLHQoInVuaS1waWNrZXItdmlldy1jb2x1bW4iLHtvbjp7b246dGhpcy4kbGlzdGVuZXJzfX0sW3QoImRpdiIse3JlZjoibWFpbiIsc3RhdGljQ2xhc3M6InVuaS1waWNrZXItdmlldy1ncm91cCIsb246e3doZWVsOnRoaXMuX2hhbmRsZVdoZWVsLGNsaWNrOnRoaXMuX2hhbmRsZVRhcH19LFt0KCJkaXYiLHtyZWY6Im1hc2siLHN0YXRpY0NsYXNzOiJ1bmktcGlja2VyLXZpZXctbWFzayIsY2xhc3M6dGhpcy5tYXNrQ2xhc3Msc3R5bGU6ImJhY2tncm91bmQtc2l6ZTogMTAwJSAiLmNvbmNhdCh0aGlzLm1hc2tTaXplLCJweDsiKS5jb25jYXQodGhpcy5tYXNrU3R5bGUpfSksdCgiZGl2Iix7cmVmOiJpbmRpY2F0b3IiLHN0YXRpY0NsYXNzOiJ1bmktcGlja2VyLXZpZXctaW5kaWNhdG9yIixjbGFzczp0aGlzLmluZGljYXRvckNsYXNzLHN0eWxlOnRoaXMuaW5kaWNhdG9yU3R5bGV9LFt0KCJ2LXVuaS1yZXNpemUtc2Vuc29yIix7YXR0cnM6e2luaXRpYWw6ITB9LG9uOntyZXNpemU6dGhpcy5fcmVzaXplfX0pXSksdCgiZGl2Iix7cmVmOiJjb250ZW50IixzdGF0aWNDbGFzczoidW5pLXBpY2tlci12aWV3LWNvbnRlbnQiLGNsYXNzOnRoaXMuc2NvcGUsc3R5bGU6InBhZGRpbmc6ICIuY29uY2F0KHRoaXMubWFza1NpemUsInB4IDA7Iil9LFt0aGlzLiRzbG90cy5kZWZhdWx0XSldKV0pfX0sZD1mLGg9KG4oIjU3NmMiKSxuKCI4ODQ0IikpLHA9T2JqZWN0KGhbImEiXSkoZCx1LGwsITEsbnVsbCxudWxsLG51bGwpO2VbImRlZmF1bHQiXT1wLmV4cG9ydHN9LGU1YjM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7dmFyIGk9bigiMzhjZSIpLG89bigiMDM3MiIpLGE9bigiYzgwYyIpLHM9bigiMzQwZCIpLGM9bigiNTg0NCIpLHU9bigiOGE5MiIpLGw9bigiYTdmYiIpLGY9bigiNDJiZiIpLGQ9bigiYTk4ZiIpLGg9bigiZjYyMSIpLHA9bi5uKGgpLHY9bigiYjQwNSIpO2Z1bmN0aW9uIGcodCl7cmV0dXJuIGc9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09cihTeW1ib2wuaXRlcmF0b3IpP2Z1bmN0aW9uKHQpe3JldHVybiByKHQpfTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnIodCl9LGcodCl9ZnVuY3Rpb24gbSgpe3ZhciB0PXt9LGU9e25vbmU6ImRlZmF1bHQiLGF1dG86InRyYW5zcGFyZW50IixhbHdheXM6ImZsb2F0In0sbj10aGlzLnRpdGxlTlZpZXc7bj0hMT09PW58fCJmYWxzZSI9PT1ufHwiY3VzdG9tIj09PXRoaXMubmF2aWdhdGlvblN0eWxlJiYhT2JqZWN0KHNbImwiXSkobil8fCJhbHdheXMiPT09dGhpcy50cmFuc3BhcmVudFRpdGxlJiYhT2JqZWN0KHNbImwiXSkobik/e3R5cGU6Im5vbmUifTpPYmplY3QuYXNzaWduKHt9LHt0eXBlOiJjdXN0b20iPT09dGhpcy5uYXZpZ2F0aW9uU3R5bGU/Im5vbmUiOiJkZWZhdWx0In0sdGhpcy50cmFuc3BhcmVudFRpdGxlIGluIGU/e3R5cGU6ZVt0aGlzLnRyYW5zcGFyZW50VGl0bGVdfTpudWxsLCJvYmplY3QiPT09ZyhuKT9uOiJib29sZWFuIj09PXR5cGVvZiBuP3t0eXBlOm4/ImRlZmF1bHQiOiJub25lIn06bnVsbCk7dmFyIHI9e1lFUzohMCxOTzohMX07cmV0dXJuIHQ9T2JqZWN0KGNbImEiXSkoe2xvYWRpbmc6ITEsYmFja0J1dHRvbjohdGhpcy5pc1F1aXQmJiF0aGlzLiRyb3V0ZS5tZXRhLmlzUXVpdCxiYWNrZ3JvdW5kQ29sb3I6dGhpcy5uYXZpZ2F0aW9uQmFyQmFja2dyb3VuZENvbG9yLHRleHRDb2xvcjoid2hpdGUiPT09T2JqZWN0KHZbImQiXSkoe3Rlc3RTdHlsZTp0aGlzLm5hdmlnYXRpb25CYXJUZXh0U3R5bGV9KS50ZXN0U3R5bGU/IiNmZmYiOiIjMDAwIix0aXRsZVRleHQ6dGhpcy5uYXZpZ2F0aW9uQmFyVGl0bGVUZXh0LHRpdGxlSW1hZ2U6dGhpcy50aXRsZUltYWdlLGR1cmF0aW9uOiIwIix0aW1pbmdGdW5jOiIiLHRpdGxlUGVuZXRyYXRlOnJbdGhpcy50aXRsZVBlbmV0cmF0ZV19LG4pLHQuc2hhZG93PXRoaXMubmF2aWdhdGlvbkJhclNoYWRvdyxPYmplY3Qob1siZSJdKSh0KSx7bmF2aWdhdGlvbkJhcjpfX3VuaUNvbmZpZy5kYXJrbW9kZT9PYmplY3QodlsiZCJdKSh0KTp0LHRpdGxlTlZpZXc6bn19ZnVuY3Rpb24gYih0KXt2YXIgZT1PYmplY3QuYXNzaWduKHtzdXBwb3J0OiEwLGNvbG9yOiIjMkJEMDA5IixzdHlsZToiY2lyY2xlIixoZWlnaHQ6NzAscmFuZ2U6MTUwLG9mZnNldDowfSx0aGlzLnB1bGxUb1JlZnJlc2gpLG49T2JqZWN0KGlbImUiXSkoZS5vZmZzZXQpO3JldHVybiJub25lIiE9PXQudHlwZSYmInRyYW5zcGFyZW50IiE9PXQudHlwZSYmKG4rPWFbImEiXStwLmEudG9wKSxlLm9mZnNldD1uLGUuaGVpZ2h0PU9iamVjdChpWyJlIl0pKGUuaGVpZ2h0KSxlLnJhbmdlPU9iamVjdChpWyJlIl0pKGUucmFuZ2UpLGV9ZVsiYSJdPXtuYW1lOiJQYWdlIixtcFR5cGU6InBhZ2UiLGNvbXBvbmVudHM6e1BhZ2VIZWFkOnVbImEiXSxQYWdlQm9keTpsWyJhIl0sUGFnZVJlZnJlc2g6ZlsiYSJdfSxtaXhpbnM6W2RbImEiXV0scHJvcHM6e2lzUXVpdDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGlzRW50cnk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxpc1RhYkJhcjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHRhYkJhckluZGV4Ont0eXBlOk51bWJlcixkZWZhdWx0Oi0xfSxuYXZpZ2F0aW9uQmFyQmFja2dyb3VuZENvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIjZjhmOGY4In0sbmF2aWdhdGlvbkJhclRleHRTdHlsZTp7ZGVmYXVsdDoiYmxhY2siLHZhbGlkYXRvcjpmdW5jdGlvbih0KXtyZXR1cm4tMSE9PVsid2hpdGUiLCJibGFjayJdLmluZGV4T2YodCl8fDA9PT10LmluZGV4T2YoIkAiKX19LG5hdmlnYXRpb25CYXJUaXRsZVRleHQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LG5hdmlnYXRpb25TdHlsZTp7ZGVmYXVsdDoiZGVmYXVsdCIsdmFsaWRhdG9yOmZ1bmN0aW9uKHQpe3JldHVybi0xIT09WyJkZWZhdWx0IiwiY3VzdG9tIl0uaW5kZXhPZih0KX19LGJhY2tncm91bmRDb2xvcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiI2ZmZmZmZiJ9LGJhY2tncm91bmRUZXh0U3R5bGU6e2RlZmF1bHQ6ImRhcmsiLHZhbGlkYXRvcjpmdW5jdGlvbih0KXtyZXR1cm4tMSE9PVsiZGFyayIsImxpZ2h0Il0uaW5kZXhPZih0KX19LGJhY2tncm91bmRDb2xvclRvcDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiI2ZmZiJ9LGJhY2tncm91bmRDb2xvckJvdHRvbTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiI2ZmZiJ9LGVuYWJsZVB1bGxEb3duUmVmcmVzaDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG9uUmVhY2hCb3R0b21EaXN0YW5jZTp7dHlwZTpOdW1iZXIsZGVmYXVsdDo1MH0sZGlzYWJsZVNjcm9sbDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHRpdGxlTlZpZXc6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0LFN0cmluZ10sZGVmYXVsdDoiIn0scHVsbFRvUmVmcmVzaDp7dHlwZTpPYmplY3QsZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybnt9fX0sdGl0bGVJbWFnZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sdHJhbnNwYXJlbnRUaXRsZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sdGl0bGVQZW5ldHJhdGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6Ik5PIn0sbmF2aWdhdGlvbkJhclNoYWRvdzp7dHlwZTpPYmplY3QsZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybnt9fX0sdG9wV2luZG93Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH19LGRhdGE6ZnVuY3Rpb24oKXt2YXIgdD1tLmNhbGwodGhpcyksZT10Lm5hdmlnYXRpb25CYXIsbj10LnRpdGxlTlZpZXc7cmV0dXJue25hdmlnYXRpb25CYXI6ZSxyZWZyZXNoT3B0aW9uczpiLmNhbGwodGhpcyxuKX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dGhpcy5uYXZpZ2F0aW9uQmFyO2RvY3VtZW50LnRpdGxlPW4udGl0bGVUZXh0LHQuZW1pdCgib25OYXZpZ2F0aW9uQmFyQ2hhbmdlIixuKSxPYmplY3QodlsiYyJdKSgoZnVuY3Rpb24oKXtlLm5hdmlnYXRpb25CYXI9bS5jYWxsKGUpLm5hdmlnYXRpb25CYXJ9KSl9fX0pLmNhbGwodGhpcyxuKCIyYzlmIikpfSxlNjhhOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJWaWRlb0NvbnRleHQiLChmdW5jdGlvbigpe3JldHVybiB1fSkpLG4uZChlLCJjcmVhdGVWaWRlb0NvbnRleHQiLChmdW5jdGlvbigpe3JldHVybiBsfSkpO3ZhciByPW4oIjc0NWEiKTtmdW5jdGlvbiBpKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fWZ1bmN0aW9uIGEodCxlLG4pe3JldHVybiBlJiZvKHQucHJvdG90eXBlLGUpLG4mJm8odCxuKSx0fXZhciBzPVsuNSwuOCwxLDEuMjUsMS41LDJdO2Z1bmN0aW9uIGModCxlLG4saSl7T2JqZWN0KHJbImMiXSkoIm9wZXJhdGVWaWRlb1BsYXllciIsdCxlLG4saSl9dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7aSh0aGlzLHQpLHRoaXMuaWQ9ZSx0aGlzLnBhZ2VWbT1ufXJldHVybiBhKHQsW3trZXk6InBsYXkiLHZhbHVlOmZ1bmN0aW9uKCl7Yyh0aGlzLmlkLHRoaXMucGFnZVZtLCJwbGF5Iil9fSx7a2V5OiJwYXVzZSIsdmFsdWU6ZnVuY3Rpb24oKXtjKHRoaXMuaWQsdGhpcy5wYWdlVm0sInBhdXNlIil9fSx7a2V5OiJzdG9wIix2YWx1ZTpmdW5jdGlvbigpe2ModGhpcy5pZCx0aGlzLnBhZ2VWbSwic3RvcCIpfX0se2tleToic2VlayIsdmFsdWU6ZnVuY3Rpb24odCl7Yyh0aGlzLmlkLHRoaXMucGFnZVZtLCJzZWVrIix7cG9zaXRpb246dH0pfX0se2tleToic2VuZERhbm11Iix2YWx1ZTpmdW5jdGlvbih0KXtjKHRoaXMuaWQsdGhpcy5wYWdlVm0sInNlbmREYW5tdSIsdCl9fSx7a2V5OiJwbGF5YmFja1JhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe35zLmluZGV4T2YodCl8fCh0PTEpLGModGhpcy5pZCx0aGlzLnBhZ2VWbSwicGxheWJhY2tSYXRlIix7cmF0ZTp0fSl9fSx7a2V5OiJyZXF1ZXN0RnVsbFNjcmVlbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307Yyh0aGlzLmlkLHRoaXMucGFnZVZtLCJyZXF1ZXN0RnVsbFNjcmVlbiIsdCl9fSx7a2V5OiJleGl0RnVsbFNjcmVlbiIsdmFsdWU6ZnVuY3Rpb24oKXtjKHRoaXMuaWQsdGhpcy5wYWdlVm0sImV4aXRGdWxsU2NyZWVuIil9fSx7a2V5OiJzaG93U3RhdHVzQmFyIix2YWx1ZTpmdW5jdGlvbigpe2ModGhpcy5pZCx0aGlzLnBhZ2VWbSwic2hvd1N0YXR1c0JhciIpfX0se2tleToiaGlkZVN0YXR1c0JhciIsdmFsdWU6ZnVuY3Rpb24oKXtjKHRoaXMuaWQsdGhpcy5wYWdlVm0sImhpZGVTdGF0dXNCYXIiKX19XSksdH0oKTtmdW5jdGlvbiBsKHQsZSl7cmV0dXJuIG5ldyB1KHQsZXx8T2JqZWN0KHJbImIiXSkoImNyZWF0ZVZpZGVvQ29udGV4dCIpKX19LGU3NDg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZnVuY3Rpb24odCl7ZnVuY3Rpb24gcih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX1mdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4gZSYmaSh0LnByb3RvdHlwZSxlKSxuJiZpKHQsbiksdH1mdW5jdGlvbiBhKGUsbixyLGkpe3QucHVibGlzaEhhbmRsZXIobisiLWF1ZGlvLSIrZSx7YXVkaW9JZDplLHR5cGU6cixkYXRhOml9LG4pfW4uZChlLCJjcmVhdGVBdWRpb0NvbnRleHQiLChmdW5jdGlvbigpe3JldHVybiBjfSkpO3ZhciBzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3IodGhpcyx0KSx0aGlzLmlkPWUsdGhpcy5wYWdlSWQ9bn1yZXR1cm4gbyh0LFt7a2V5OiJzZXRTcmMiLHZhbHVlOmZ1bmN0aW9uKHQpe2EodGhpcy5pZCx0aGlzLnBhZ2VJZCwic2V0U3JjIix7c3JjOnR9KX19LHtrZXk6InBsYXkiLHZhbHVlOmZ1bmN0aW9uKCl7YSh0aGlzLmlkLHRoaXMucGFnZUlkLCJwbGF5Iil9fSx7a2V5OiJwYXVzZSIsdmFsdWU6ZnVuY3Rpb24oKXthKHRoaXMuaWQsdGhpcy5wYWdlSWQsInBhdXNlIil9fSx7a2V5OiJzZWVrIix2YWx1ZTpmdW5jdGlvbih0KXthKHRoaXMuaWQsdGhpcy5wYWdlSWQsInNlZWsiLHtwb3NpdGlvbjp0fSl9fV0pLHR9KCk7ZnVuY3Rpb24gYyhlLG4pe2lmKG4pcmV0dXJuIG5ldyBzKGUsbi4kcGFnZS5pZCk7dmFyIHI9Z2V0QXBwKCk7aWYoci4kcm91dGUmJnIuJHJvdXRlLnBhcmFtcy5fX2lkX18pcmV0dXJuIG5ldyBzKGUsci4kcm91dGUucGFyYW1zLl9faWRfXyk7dC5lbWl0KCJvbkVycm9yIiwiY3JlYXRlQXVkaW9Db250ZXh0OmZhaWwiKX19LmNhbGwodGhpcyxuKCIyYzlmIikpfSxlNzZiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQpe3ZhciByPW4oImI0MzUiKSxpPW4oIjQ3MzgiKTtlWyJhIl09e3Byb3BzOntpZDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDoiIn0sbGF0aXR1ZGU6e3R5cGU6W051bWJlcixTdHJpbmddLHJlcXVpcmU6ITB9LGxvbmdpdHVkZTp7dHlwZTpbTnVtYmVyLFN0cmluZ10scmVxdWlyZTohMH0sdGl0bGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LGljb25QYXRoOnt0eXBlOlN0cmluZyxyZXF1aXJlOiEwfSxyb3RhdGU6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MH0sYWxwaGE6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6MX0sd2lkdGg6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6IiJ9LGhlaWdodDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDoiIn0sY2FsbG91dDp7dHlwZTpPYmplY3QsZGVmYXVsdDpudWxsfSxsYWJlbDp7dHlwZTpPYmplY3QsZGVmYXVsdDpudWxsfSxhbmNob3I6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6bnVsbH0sY2x1c3RlcklkOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OiIifSxjdXN0b21DYWxsb3V0Ont0eXBlOk9iamVjdCxkZWZhdWx0Om51bGx9LGFyaWFMYWJlbDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57aWRTdHJpbmc6U3RyaW5nKGlzTmFOKE51bWJlcih0aGlzLmlkKSk/IiI6dGhpcy5pZCl9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuJHBhcmVudDtlLm1hcFJlYWR5KChmdW5jdGlvbigpe3QuX21hcHM9ZS5fbWFwcyx0Ll9tYXA9ZS5fbWFwLHQuYWRkTWFya2VyKHQuJHByb3BzKSxPYmplY3Qua2V5cyh0LiRwcm9wcykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC4kd2F0Y2goZSwoZnVuY3Rpb24oKXt0LnVwZGF0ZU1hcmtlcih0LiRwcm9wcyl9KSl9KSl9KSl9LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZU1hcmtlcigpfSxtZXRob2RzOnthZGRNYXJrZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuX21hcHMsaT10aGlzLl9tYXAsbz10aGlzLl9tYXJrZXI9bmV3IG4uTWFya2VyKHttYXA6aSxmbGF0OiEwLGF1dG9Sb3RhdGlvbjohMX0pO2lmKHRoaXMuJHBhcmVudC5fbWFya2Vyc1t0aGlzLmlkU3RyaW5nXT1vLHRoaXMudXBkYXRlTWFya2VyKHQpLHJbImMiXSl7by5kb20uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbih0KXtlLmhhbmRsZUFNYXBNYXJrZXJDbGljayh0LG8pfSkpO3ZhciBhPXt9O28uZG9tLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLChmdW5jdGlvbih0KXthPXQudG91Y2hlc1swXX0pKSxvLmRvbS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsKGZ1bmN0aW9uKHQpe3ZhciBuPXQuY2hhbmdlZFRvdWNoZXNbMF07YS5jbGllbnRYPT09bi5jbGllbnRYJiZhLmNsaWVudFk9PT1uLmNsaWVudFkmJmUuaGFuZGxlQU1hcE1hcmtlckNsaWNrKHQsbyl9KSl9ZWxzZSBuLmV2ZW50LmFkZExpc3RlbmVyKG8sImNsaWNrIiwoZnVuY3Rpb24odCl7dmFyIG49by5jYWxsb3V0O2lmKG4mJiFuLmFsd2F5c1Zpc2libGUmJihuLnNldCgidmlzaWJsZSIsIW4udmlzaWJsZSksbi52aXNpYmxlKSl7dmFyIHI9bi5kaXYsaT1yLnBhcmVudE5vZGU7aS5yZW1vdmVDaGlsZChyKSxpLmFwcGVuZENoaWxkKHIpfXZhciBhPXQuZXZlbnR8fHQuZG9tRXZlbnQ7aWYoZS5pZFN0cmluZyl7dmFyIHM9ZS5nZXRNYXJrZXJMYXRpdHVkZUxvbmdpdHVkZSh0KSxjPXMubGF0aXR1ZGUsdT1zLmxvbmdpdHVkZTtlLiRwYXJlbnQuJHRyaWdnZXIoIm1hcmtlcnRhcCIsYSx7bWFya2VySWQ6TnVtYmVyKGUuaWRTdHJpbmcpLGxhdGl0dWRlOmMsbG9uZ2l0dWRlOnV9KX1hLnN0b3BQcm9wYWdhdGlvbigpfSkpfSx1cGRhdGVNYXJrZXI6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcyxvPXRoaXMuX21hcCxhPXRoaXMuX21hcHMscz10aGlzLl9tYXJrZXIsYz1lLnRpdGxlLHU9clsiYyJdP25ldyBhLkxuZ0xhdChlLmxvbmdpdHVkZSxlLmxhdGl0dWRlKTpuZXcgYS5MYXRMbmcoZS5sYXRpdHVkZSxlLmxvbmdpdHVkZSksbD1uZXcgSW1hZ2UsZj0wO2wub25sb2FkPWZ1bmN0aW9uKCl7dmFyIHQsaSxkLGg9ZS5hbmNob3J8fHt9LHA9Im51bWJlciI9PT10eXBlb2YgaC54P2gueDouNSx2PSJudW1iZXIiPT09dHlwZW9mIGgueT9oLnk6MTtlLmljb25QYXRoJiYoZS53aWR0aHx8ZS5oZWlnaHQpPyhpPWUud2lkdGh8fGwud2lkdGgvbC5oZWlnaHQqZS5oZWlnaHQsZD1lLmhlaWdodHx8bC5oZWlnaHQvbC53aWR0aCplLndpZHRoKTooaT1sLndpZHRoLzIsZD1sLmhlaWdodC8yKSxmPWQ7dmFyIGc9ZC0oZC12KmQpO3Q9Ik1hcmtlckltYWdlImluIGE/bmV3IGEuTWFya2VySW1hZ2UobC5zcmMsbnVsbCxudWxsLG5ldyBhLlBvaW50KHAqaSx2KmQpLG5ldyBhLlNpemUoaSxkKSk6Ikljb24iaW4gYT9uZXcgYS5JY29uKHtpbWFnZTpsLnNyYyxzaXplOm5ldyBhLlNpemUoaSxkKSxpbWFnZVNpemU6bmV3IGEuU2l6ZShpLGQpLGltYWdlT2Zmc2V0Om5ldyBhLlBpeGVsKHAqaSx2KmQpfSk6e3VybDpsLnNyYyxhbmNob3I6bmV3IGEuUG9pbnQocCx2KSxzaXplOm5ldyBhLlNpemUoaSxkKX0scy5zZXRQb3NpdGlvbih1KSxzLnNldEljb24odCksInNldFJvdGF0aW9uImluIHMmJnMuc2V0Um90YXRpb24oZS5yb3RhdGV8fDApO3ZhciBtLGI9ZS5sYWJlbHx8e307aWYoImxhYmVsImluIHMmJihzLmxhYmVsLnNldE1hcChudWxsKSxkZWxldGUgcy5sYWJlbCksYi5jb250ZW50KXt2YXIgeT17Ym9yZGVyQ29sb3I6Yi5ib3JkZXJDb2xvcixib3JkZXJXaWR0aDooTnVtYmVyKGIuYm9yZGVyV2lkdGgpfHwwKSsicHgiLHBhZGRpbmc6KE51bWJlcihiLnBhZGRpbmcpfHwwKSsicHgiLGJvcmRlclJhZGl1czooTnVtYmVyKGIuYm9yZGVyUmFkaXVzKXx8MCkrInB4IixiYWNrZ3JvdW5kQ29sb3I6Yi5iZ0NvbG9yLGNvbG9yOmIuY29sb3IsZm9udFNpemU6KGIuZm9udFNpemV8fDE0KSsicHgiLGxpbmVIZWlnaHQ6KGIuZm9udFNpemV8fDE0KSsicHgiLG1hcmdpbkxlZnQ6KE51bWJlcihiLmFuY2hvclh8fGIueCl8fDApKyJweCIsbWFyZ2luVG9wOihOdW1iZXIoYi5hbmNob3JZfHxiLnkpfHwwKSsicHgifTtpZigiTGFiZWwiaW4gYSltPW5ldyBhLkxhYmVsKHtwb3NpdGlvbjp1LG1hcDpvLGNsaWNrYWJsZTohMSxjb250ZW50OmIuY29udGVudCxzdHlsZTp5fSkscy5sYWJlbD1tO2Vsc2UgaWYoInNldExhYmVsImluIHMpaWYoclsiYyJdKXt2YXIgXz0nPGRpdiBzdHlsZT0iXG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6Jy5jb25jYXQoeS5tYXJnaW5MZWZ0LCI7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDoiKS5jb25jYXQoeS5tYXJnaW5Ub3AsIjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiIpLmNvbmNhdCh5LnBhZGRpbmcsIjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiIpLmNvbmNhdCh5LmJhY2tncm91bmRDb2xvciwiO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IikuY29uY2F0KHkuYm9yZGVyUmFkaXVzLCI7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IikuY29uY2F0KHkubGluZUhlaWdodCwiO1xuICAgICAgICAgICAgICAgIGNvbG9yOiIpLmNvbmNhdCh5LmNvbG9yLCI7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiIpLmNvbmNhdCh5LmZvbnRTaXplLCc7XG5cbiAgICAgICAgICAgICAgICAiPlxuICAgICAgICAgICAgICAgICcpLmNvbmNhdChiLmNvbnRlbnQsIlxuICAgICAgICAgICAgICA8ZGl2PiIpO3Muc2V0TGFiZWwoe2NvbnRlbnQ6XyxkaXJlY3Rpb246ImJvdHRvbS1yaWdodCJ9KX1lbHNle3ZhciB3PW4udXBkYXRlTWFya2VyTGFiZWxTdHlsZShuLmlkU3RyaW5nLHkpO3Muc2V0TGFiZWwoe3RleHQ6Yi5jb250ZW50LGNvbG9yOnkuY29sb3IsZm9udFNpemU6eS5mb250U2l6ZSxjbGFzc05hbWU6d30pfX12YXIgUyx4PWUuY2FsbG91dHx8e30saz1zLmNhbGxvdXQ7aWYoeC5jb250ZW50fHxjKXtyWyJjIl0mJnguY29udGVudCYmKHguY29udGVudD14LmNvbnRlbnQucmVwbGFjZUFsbCgiXG4iLCI8YnIvPiIpKTt2YXIgQz0iMHB4IDBweCAzcHggMXB4IHJnYmEoMCwwLDAsMC41KSIsVD0tZi8yO2lmKChlLndpZHRofHxlLmhlaWdodCkmJihUKz0xNC1mLzIpLFM9eC5jb250ZW50P3twb3NpdGlvbjp1LG1hcDpvLHRvcDpnLG9mZnNldFk6VCxjb250ZW50OnguY29udGVudCxjb2xvcjp4LmNvbG9yLGZvbnRTaXplOnguZm9udFNpemUsYm9yZGVyUmFkaXVzOnguYm9yZGVyUmFkaXVzLGJnQ29sb3I6eC5iZ0NvbG9yLHBhZGRpbmc6eC5wYWRkaW5nLGJveFNoYWRvdzp4LmJveFNoYWRvd3x8QyxkaXNwbGF5OnguZGlzcGxheX06e3Bvc2l0aW9uOnUsbWFwOm8sdG9wOmcsb2Zmc2V0WTpULGNvbnRlbnQ6Yyxib3hTaGFkb3c6Q30saylrLnNldE9wdGlvbihTKTtlbHNlIGlmKHJbImMiXSl7dmFyIE89ZnVuY3Rpb24odCxlKXtlLmlkU3RyaW5nJiZlLiRwYXJlbnQuJHRyaWdnZXIoImNhbGxvdXR0YXAiLHQse21hcmtlcklkOk51bWJlcihlLmlkU3RyaW5nKX0pfTtrPXMuY2FsbG91dD1uZXcgYS5DYWxsb3V0KFMsTyxuKX1lbHNlIGs9cy5jYWxsb3V0PW5ldyBhLkNhbGxvdXQoUyksay5kaXYub25jbGljaz1mdW5jdGlvbih0KXtuLmlkU3RyaW5nJiZuLiRwYXJlbnQuJHRyaWdnZXIoImNhbGxvdXR0YXAiLHQse21hcmtlcklkOk51bWJlcihuLmlkU3RyaW5nKX0pLHQuc3RvcFByb3BhZ2F0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCgpfSxPYmplY3QoclsiZSJdKSgpLnR5cGU9PT1yWyJkIl0uR09PR0xFJiYoay5kaXYub25wb2ludGVyZG93bj1mdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpfSxrLmRpdi5vbnRvdWNoc3RhcnQ9ZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKX0pfWVsc2UgayYmKG4ucmVtb3ZlTWFya2VyQ2FsbG91dChzLmNhbGxvdXQpLGRlbGV0ZSBzLmNhbGxvdXQpfSxlLmljb25QYXRoP2wuc3JjPU9iamVjdChpWyJhIl0pKGUuaWNvblBhdGgpOnQuZXJyb3IoIk1hcmtlci5pY29uUGF0aCBpcyByZXF1aXJlZC4iKX0saGFuZGxlQU1hcE1hcmtlckNsaWNrOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5jYWxsb3V0O24mJiFuLmFsd2F5c1Zpc2libGUmJihuLnZpc2libGU9IW4udmlzaWJsZSxuLnZpc2libGU/ZS5jYWxsb3V0LmNyZWF0ZUFNYXBUZXh0KCk6ZS5jYWxsb3V0LnJlbW92ZUFNYXBUZXh0KCkpLHRoaXMuaWRTdHJpbmcmJnRoaXMuJHBhcmVudC4kdHJpZ2dlcigibWFya2VydGFwIix0LHttYXJrZXJJZDpOdW1iZXIodGhpcy5pZFN0cmluZyksbGF0aXR1ZGU6ZS5fcG9zaXRpb24ubGF0LGxvbmdpdHVkZTplLl9wb3NpdGlvbi5sbmd9KSx0LnN0b3BQcm9wYWdhdGlvbigpfSx1cGRhdGVNYXJrZXJMYWJlbFN0eWxlOmZ1bmN0aW9uKHQsZSl7dmFyIG49InVuaS1tYXAtbWFya2VyLWxhYmVsLSIrdCxyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG4pO3J8fChyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksci5pZD1uLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQociksdGhpcy4kb25jZSgiaG9vazpkZXN0cm95ZWQiLChmdW5jdGlvbigpe3IucmVtb3ZlKCl9KSkpO3ZhciBpPU9iamVjdC5hc3NpZ24oe30sZSx7cG9zaXRpb246ImFic29sdXRlIix0b3A6IjcwcHgiLGJvcmRlclN0eWxlOiJzb2xpZCJ9KSxvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtvLnN0eWxlW3RdPWlbdF18fCIifSkpLHIuaW5uZXJUZXh0PSIuIi5jb25jYXQobiwieyIpLmNvbmNhdChvLmdldEF0dHJpYnV0ZSgic3R5bGUiKSwifSIpLG59LGdldE1hcmtlckxhdGl0dWRlTG9uZ2l0dWRlOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT1PYmplY3QoclsiZSJdKSgpO3JldHVybiByWyJjIl0/KGU9dC5sbmdsYXQubGF0LG49dC5sbmdsYXQubG5nKTppLnR5cGU9PT1yWyJkIl0uUVE/KGU9dC5sYXRMbmcubGF0LG49dC5sYXRMbmcubG5nKTppLnR5cGU9PT1yWyJkIl0uR09PR0xFJiYoZT10LmxhdExuZy5sYXQoKSxuPXQubGF0TG5nLmxuZygpKSx7bGF0aXR1ZGU6ZSxsb25naXR1ZGU6bn19LHJlbW92ZU1hcmtlcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcmtlcjt0JiYodC5sYWJlbCYmInNldE1hcCJpbiB0LmxhYmVsJiZ0LmxhYmVsLnNldE1hcChudWxsKSx0LmNhbGxvdXQmJnRoaXMucmVtb3ZlTWFya2VyQ2FsbG91dCh0LmNhbGxvdXQpLHQuc2V0TWFwKG51bGwpKSxkZWxldGUgdGhpcy4kcGFyZW50Ll9tYXJrZXJzW3RoaXMuaWRTdHJpbmddLHRoaXMuX21hcmtlcj1udWxsfSxyZW1vdmVNYXJrZXJDYWxsb3V0OmZ1bmN0aW9uKHQpe3JbImMiXT90LnJlbW92ZUFNYXBUZXh0KCk6dC5zZXRNYXAobnVsbCl9fSxyZW5kZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19fSkuY2FsbCh0aGlzLG4oIjQxOGIiKVsiZGVmYXVsdCJdKX0sZTg3ZjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwicmVtb3ZlVGFiQmFyQmFkZ2UiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLCJzaG93VGFiQmFyUmVkRG90IiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwiaGlkZVRhYkJhclJlZERvdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSksbi5kKGUsIm9uVGFiQmFyTWlkQnV0dG9uVGFwIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKTt2YXIgcj1uKCI3NDVhIiksaT1uKCI5MTMxIik7ZnVuY3Rpb24gbyh0KXt2YXIgZT10LmluZGV4O3JldHVybiBPYmplY3QoclsiYyJdKSgic2V0VGFiQmFyQmFkZ2UiLHtpbmRleDplLHR5cGU6Im5vbmUifSl9ZnVuY3Rpb24gYSh0KXt2YXIgZT10LmluZGV4O3JldHVybiBPYmplY3QoclsiYyJdKSgic2V0VGFiQmFyQmFkZ2UiLHtpbmRleDplLHR5cGU6InJlZERvdCJ9KX12YXIgcz1vLGM9W107ZnVuY3Rpb24gdSh0KXtjLnB1c2godCl9T2JqZWN0KHJbImQiXSkoIm9uVGFiQmFyTWlkQnV0dG9uVGFwIiwoZnVuY3Rpb24odCl7Yy5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QoaVsiYSJdKShlLHQpfSkpfSkpfSxlOWQxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByLGksbz1uKCJmMzcwIiksYT1vWyJhIl0scz0obigiZjFkYiIpLG4oIjg4NDQiKSksYz1PYmplY3Qoc1siYSJdKShhLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPWMuZXhwb3J0c30sZWE3MjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgcj1uKCI0NzM4IiksaT1uKCIzNDBkIiksbz1uKCI4OWVjIiksYT1uKCJmYTk1Iik7ZnVuY3Rpb24gcyh0KXtyZXR1cm4gd2luZG93LkNTUyYmQ1NTLnN1cHBvcnRzJiYoQ1NTLnN1cHBvcnRzKHQpfHxDU1Muc3VwcG9ydHMuYXBwbHkoQ1NTLHQuc3BsaXQoIjoiKSkpfXZhciBjPSJVbmlUYWJiYXJJY29uRm9udCI7ZVsiYSJdPXtuYW1lOiJUYWJCYXIiLHByb3BzOntwb3NpdGlvbjp7ZGVmYXVsdDoiYm90dG9tIix2YWxpZGF0b3I6ZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1bImJvdHRvbSIsInRvcCJdLmluZGV4T2YodCl9fSxjb2xvcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIzk5OSJ9LHNlbGVjdGVkQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiMwMDdhZmYifSxiYWNrZ3JvdW5kQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LGJvcmRlclN0eWxlOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJibGFjayJ9LGljb25mb250U3JjOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxsaXN0Ont0eXBlOkFycmF5LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LG1hdGNoTWVkaWE6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm57fX19LGJsdXJFZmZlY3Q6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6Im5vbmUifSxmb250U2l6ZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiMTBweCJ9LGljb25XaWR0aDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiMjRweCJ9LHNwYWNpbmc6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IjNweCJ9LGhlaWdodDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiNTBweCJ9LG1pZEJ1dHRvbjp7dHlwZTpPYmplY3QsZGVmYXVsdDpudWxsfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntzZWxlY3RlZEluZGV4OjAsdmlzaWJsZUxpc3Q6W10saW50ZXJuYWxNaWRCdXR0b246e319fSxjb21wdXRlZDp7dGFiYmFyQmFja2dyb3VuZENvbG9yOmZ1bmN0aW9uKCl7dmFyIHQ9IiNmN2Y3ZmEiO2lmKHRoaXMuYmFja2dyb3VuZENvbG9yKXJldHVybiB0aGlzLmJhY2tncm91bmRDb2xvcjtpZihzKCJiYWNrZHJvcC1maWx0ZXI6Ymx1cigxMHB4KSIpJiYibm9uZSIhPT10aGlzLmJsdXJFZmZlY3Qpe2lmKCJkYXJrIj09PXRoaXMuYmx1ckVmZmVjdClyZXR1cm4icmdiKDAsIDAsIDAsIDAuOCkiO2lmKFsibGlnaHQiLCJleHRyYWxpZ2h0Il0uaW5jbHVkZXModGhpcy5ibHVyRWZmZWN0KSlyZXR1cm4icmdiKDI1MCwgMjUwLCAyNTAsIDAuOCkifXJldHVybiB0fSxib3JkZXJDb2xvcjpmdW5jdGlvbigpe3JldHVybiJ3aGl0ZSI9PT10aGlzLmJvcmRlclN0eWxlPyJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzMpIjoiYmxhY2siPT09dGhpcy5ib3JkZXJTdHlsZT8icmdiYSgwLCAwLCAwLCAwLjMzKSI6dGhpcy5ib3JkZXJTdHlsZX19LHdhdGNoOnskcm91dGU6e2ltbWVkaWF0ZTohMCxoYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy52aXNpYmxlTGlzdC5sZW5ndGh8fHRoaXMuX2luaXRWaXNpYmxlTGlzdCgpLHRoaXMuc2V0U2VsZWN0ZWRJbmRleCgpfX0sbGlzdDp7ZGVlcDohMCxoYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy5faW5pdFZpc2libGVMaXN0KCksdGhpcy5zZXRTZWxlY3RlZEluZGV4KCl9fSxtaWRCdXR0b246ZnVuY3Rpb24odCl7dGhpcy5faW5pdFZpc2libGVMaXN0KCl9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmxpc3QuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dm9pZCAwPT09ZS52aXNpYmxlJiZ0LiRzZXQoZSwidmlzaWJsZSIsITApfSkpLHRoaXMuaWNvbmZvbnRTcmMmJk9iamVjdChhWyJhIl0pKHtvcHRpb25zOntmYW1pbHk6Yyxzb3VyY2U6J3VybCgiJy5jb25jYXQodGhpcy5pY29uZm9udFNyYywnIiknKX19KX0sYmVmb3JlQ3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5fX3BhdGhfXz10aGlzLiRyb3V0ZS5wYXRofSxtZXRob2RzOntnZXRJY29uUGF0aDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnNlbGVjdGVkSW5kZXg9PT1lJiZ0LnNlbGVjdGVkSWNvblBhdGh8fHQuaWNvblBhdGh8fCIifSxzZXRTZWxlY3RlZEluZGV4OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0aGlzLiRyb3V0ZS5tZXRhLmlzVGFiQmFyKXt0aGlzLl9fcGF0aF9fPXRoaXMuJHJvdXRlLnBhdGg7dmFyIGU9dGhpcy52aXNpYmxlTGlzdC5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpe3JldHVybiB0LiRyb3V0ZS5tZXRhLnBhZ2VQYXRoPT09ZS5wYWdlUGF0aH0pKTt0aGlzLnNlbGVjdGVkSW5kZXg9ZX19LF9pbml0VmlzaWJsZUxpc3Q6ZnVuY3Rpb24oKXt0aGlzLnZpc2libGVMaXN0PXRoaXMuX2luaXRNaWRCdXR0b24odGhpcy5saXN0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuITEhPT10LnZpc2libGV9KSkpfSxfZ2V0UmVhbFBhdGg6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06IiIsZT0vXihbYS16LV0rOik/XC9cLy9pLG49L15kYXRhOi4qLC4qLztyZXR1cm4gZS50ZXN0KHQpfHxuLnRlc3QodCl8fDA9PT10LmluZGV4T2YoIi8iKXx8KHQ9Ii8iK3QpLE9iamVjdChyWyJhIl0pKHQpfSxfc3dpdGNoVGFiOmZ1bmN0aW9uKGUsbil7dmFyIHI9ZS50ZXh0LGk9ZS5wYWdlUGF0aCxhPWUuaXNNaWRCdXR0b24scz12b2lkIDAhPT1hJiZhO2lmKHMpT2JqZWN0KG9bImEiXSkoIm9uVGFiQmFyTWlkQnV0dG9uVGFwIik7ZWxzZXt0aGlzLnNlbGVjdGVkSW5kZXg9bjt2YXIgYz0iLyIraTtjPT09X191bmlSb3V0ZXNbMF0uYWxpYXMmJihjPSIvIik7dmFyIHU9e2luZGV4Om4sdGV4dDpyLHBhZ2VQYXRoOml9O3RoaXMuJHJvdXRlLnBhdGghPT1jPyh0aGlzLl9fcGF0aF9fPXRoaXMuJHJvdXRlLnBhdGgsdW5pLnN3aXRjaFRhYih7ZnJvbToidGFiQmFyIix1cmw6YyxkZXRhaWw6dX0pKTp0LmVtaXQoIm9uVGFiSXRlbVRhcCIsdSl9fSxfaW5pdE1pZEJ1dHRvbjpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZSUyPT09MCYmT2JqZWN0KGlbImwiXSkodGhpcy5taWRCdXR0b24pJiYodGhpcy5pbnRlcm5hbE1pZEJ1dHRvbj1PYmplY3QuYXNzaWduKHt3aWR0aDoiNTBweCIsaGVpZ2h0OiI1MHB4IixpY29uV2lkdGg6IjI0cHgifSx0aGlzLmludGVybmFsTWlkQnV0dG9uLHRoaXMubWlkQnV0dG9uKSx0LnNwbGljZSh+fihlLzIpLDAsT2JqZWN0LmFzc2lnbih7fSx0aGlzLmludGVybmFsTWlkQnV0dG9uLHtpc01pZEJ1dHRvbjohMH0pKSksdH0sX3VuaVRhYmJhckJkU3R5bGU6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30se3dpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LGJhY2tncm91bmRJbWFnZTp0LmJhY2tncm91bmRJbWFnZT8idXJsKCciK3RoaXMuX2dldFJlYWxQYXRoKHQuYmFja2dyb3VuZEltYWdlKSsiJykiOiIifSl9fX19KS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sZWJjNTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjM2YTYiKSxpPW4ubihyKTtpLmF9LGViZGE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsImdldExvY2FsZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSksbi5kKGUsInNldExvY2FsZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSksbi5kKGUsIm9uTG9jYWxlQ2hhbmdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKTt2YXIgcj1uKCI5MTMxIiksaT1uKCIwMzcyIiksbz1uKCJjODBjIik7ZnVuY3Rpb24gYSgpe3ZhciB0PWdldEFwcCh7YWxsb3dEZWZhdWx0OiEwfSk7cmV0dXJuIHQmJnQuJHZtP3QuJHZtLiRsb2NhbGU6aVsiYiJdLmdldExvY2FsZSgpfWZ1bmN0aW9uIHModCl7dmFyIGU9Z2V0QXBwKCkuJHZtLiRsb2NhbGU7cmV0dXJuIGUhPT10JiYoZ2V0QXBwKCkuJHZtLiRsb2NhbGU9dCxuYXZpZ2F0b3IuY29va2llRW5hYmxlZCYmd2luZG93LmxvY2FsU3RvcmFnZSYmKGxvY2FsU3RvcmFnZVtvWyJlIl1dPXQpLGMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JqZWN0KHJbImEiXSkoZSx7bG9jYWxlOnR9KX0pKSwhMCl9dmFyIGM9W107ZnVuY3Rpb24gdSh0KXtjLnB1c2godCl9fSxlYzYwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJjaG9vc2VMb2NhdGlvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSk7dmFyIHI9e2tleXdvcmQ6e3R5cGU6U3RyaW5nfX19LGVkMmM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZnVuY3Rpb24odCl7bi5kKGUsIk1hcENvbnRleHQiLChmdW5jdGlvbigpe3JldHVybiBsfSkpLG4uZChlLCJjcmVhdGVNYXBDb250ZXh0IiwoZnVuY3Rpb24oKXtyZXR1cm4gZn0pKTt2YXIgcj1uKCI3NDVhIiksaT1uKCIzNDBkIik7ZnVuY3Rpb24gbyh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGEodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX1mdW5jdGlvbiBzKHQsZSxuKXtyZXR1cm4gZSYmYSh0LnByb3RvdHlwZSxlKSxuJiZhKHQsbiksdH1mdW5jdGlvbiBjKHQsZSxuLGkpe09iamVjdChyWyJjIl0pKCJvcGVyYXRlTWFwUGxheWVyIix0LGUsbixpKX10LnN1YnNjcmliZSgib25NYXBNZXRob2RDYWxsYmFjayIsKGZ1bmN0aW9uKHQpe3ZhciBlPXQuY2FsbGJhY2tJZCxuPXQuZGF0YTtpWyJhIl0uaW52b2tlKGUsbil9KSk7dmFyIHU9WyJnZXRDZW50ZXJMb2NhdGlvbiIsIm1vdmVUb0xvY2F0aW9uIiwiZ2V0U2NhbGUiLCJnZXRSZWdpb24iLCJpbmNsdWRlUG9pbnRzIiwidHJhbnNsYXRlTWFya2VyIiwiYWRkQ3VzdG9tTGF5ZXIiLCJyZW1vdmVDdXN0b21MYXllciIsImFkZEdyb3VuZE92ZXJsYXkiLCJyZW1vdmVHcm91bmRPdmVybGF5IiwidXBkYXRlR3JvdW5kT3ZlcmxheSIsImluaXRNYXJrZXJDbHVzdGVyIiwiYWRkTWFya2VycyIsInJlbW92ZU1hcmtlcnMiLCJtb3ZlQWxvbmciLCJzZXRMb2NNYXJrZXJJY29uIiwib3Blbk1hcEFwcCJdLGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7byh0aGlzLHQpLHRoaXMuaWQ9ZSx0aGlzLnBhZ2VWbT1ufXJldHVybiBzKHQsW3trZXk6Im9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe2ModGhpcy5pZCx0aGlzLnBhZ2VWbSwib24iLHtuYW1lOnQsY2FsbGJhY2s6ZX0pfX1dKSx0fSgpO2Z1bmN0aW9uIGYodCxlKXtyZXR1cm4gbmV3IGwodCxlfHxPYmplY3QoclsiYiJdKSgiY3JlYXRlTWFwQ29udGV4dCIpKX1sLnByb3RvdHlwZS4kZ2V0QXBwTWFwPWZ1bmN0aW9uKCl7fSx1LmZvckVhY2goKGZ1bmN0aW9uKHQpe2wucHJvdG90eXBlW3RdPWlbImEiXS53YXJwKChmdW5jdGlvbihlLG4pe2UuY2FsbGJhY2tJZD1uLGModGhpcy5pZCx0aGlzLnBhZ2VWbSx0LGUpfSkpfSkpfS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sZWVmZjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXtuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSk7dmFyIHI9bigiYTAwNCIpLGk9bi5uKHIpLG89bigiMzhjZSIpLGE9bigiMzQwZCIpO2Z1bmN0aW9uIHMoZSl7ZS5jb25maWcuZXJyb3JIYW5kbGVyPWZ1bmN0aW9uKG4scixpKXt2YXIgcz1PYmplY3QoYVsidiJdKShuKTtlLnV0aWwud2FybigiRXJyb3IgaW4gIi5jb25jYXQoaSwnOiAiJykuY29uY2F0KCJFcnJvciI9PT1zP24udG9TdHJpbmcoKTpuLCciJykscik7dmFyIGM9ImZ1bmN0aW9uIj09PXR5cGVvZiBnZXRBcHAmJmdldEFwcCgpO2MmJk9iamVjdChvWyJjIl0pKGMuJG9wdGlvbnMsIm9uRXJyb3IiKT9jLl9fY2FsbF9ob29rKCJvbkVycm9yIixuKTp0LmVycm9yKG4pfTt2YXIgbj1lLmNvbmZpZy5pc1Jlc2VydmVkVGFnO2UuY29uZmlnLmlzUmVzZXJ2ZWRUYWc9ZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1pLmEuaW5kZXhPZih0KXx8bih0KX0sZS5jb25maWcuaWdub3JlZEVsZW1lbnRzPWkuYTt2YXIgcj1lLmNvbmZpZy5nZXRUYWdOYW1lc3BhY2Uscz1bInN3aXRjaCIsImltYWdlIiwidGV4dCIsInZpZXciXTtlLmNvbmZpZy5nZXRUYWdOYW1lc3BhY2U9ZnVuY3Rpb24odCl7cmV0dXJuIX5zLmluZGV4T2YodCkmJnIodCl9fX0pLmNhbGwodGhpcyxuKCI0MThiIilbImRlZmF1bHQiXSl9LGVmNGU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsImdldERldmljZUluZm8iLChmdW5jdGlvbigpe3JldHVybiBofSkpLG4uZChlLCJnZXRBcHBCYXNlSW5mbyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHB9KSksbi5kKGUsImdldFN5c3RlbUluZm9TeW5jIiwoZnVuY3Rpb24oKXtyZXR1cm4gdn0pKSxuLmQoZSwiZ2V0U3lzdGVtSW5mbyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGd9KSk7dmFyIHIsaT1uKCIxZWZkIiksbz0iX19EQ19TVEFUX1VVSUQiLGE9bmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQmJih3aW5kb3cubG9jYWxTdG9yYWdlfHx3aW5kb3cuc2Vzc2lvblN0b3JhZ2UpfHx7fSxzPWZ1bmN0aW9uKCl7aWYocj1yfHxhW29dLCFyKXtyPURhdGUubm93KCkrIiIrTWF0aC5mbG9vcigxZTcqTWF0aC5yYW5kb20oKSk7dHJ5e2Fbb109cn1jYXRjaCh0KXt9fXJldHVybiByfSxjPW4oIjAxZmQiKSx1PW4oIjM0MGQiKSxsPXt9LGY9ITA7ZnVuY3Rpb24gZCgpe2YmJihsPU9iamVjdChjWyJnZXRCcm93c2VySW5mbyJdKSgpKX1mdW5jdGlvbiBoKCl7ZCgpO3ZhciB0PWwsZT10LmRldmljZUJyYW5kLG49dC5kZXZpY2VNb2RlbCxyPXQuYnJhbmQsaT10Lm1vZGVsLG89dC5wbGF0Zm9ybSxhPXQuc3lzdGVtLGM9dC5kZXZpY2VPcmllbnRhdGlvbix1PXQuZGV2aWNlVHlwZSxmPXQub3NuYW1lLGg9dC5vc3ZlcnNpb247cmV0dXJue2JyYW5kOnIsZGV2aWNlQnJhbmQ6ZSxkZXZpY2VNb2RlbDpuLGRldmljZVBpeGVsUmF0aW86d2luZG93LmRldmljZVBpeGVsUmF0aW8sZGV2aWNlSWQ6cygpLGRldmljZU9yaWVudGF0aW9uOmMsZGV2aWNlVHlwZTp1LG1vZGVsOmkscGxhdGZvcm06byxzeXN0ZW06YSxvc05hbWU6Zj9mLnRvTG9jYWxlTG93ZXJDYXNlKCk6dm9pZCAwLG9zVmVyc2lvbjpofX1mdW5jdGlvbiBwKCl7ZCgpO3ZhciB0PWwsZT10LnRoZW1lLG49dC5sYW5ndWFnZSxyPXQuYnJvd3Nlck5hbWUsaT10LmJyb3dzZXJWZXJzaW9uLG89dW5pJiZ1bmkuZ2V0TG9jYWxlP3VuaS5nZXRMb2NhbGUoKTpuO3JldHVybnthcHBJZDpfX3VuaUNvbmZpZy5hcHBJZCxhcHBOYW1lOl9fdW5pQ29uZmlnLmFwcE5hbWUsYXBwVmVyc2lvbjpfX3VuaUNvbmZpZy5hcHBWZXJzaW9uLGFwcFZlcnNpb25Db2RlOl9fdW5pQ29uZmlnLmFwcFZlcnNpb25Db2RlLGFwcExhbmd1YWdlOm8sZW5hYmxlRGVidWc6ITEsaG9zdFNES1ZlcnNpb246dm9pZCAwLGhvc3RQYWNrYWdlTmFtZTp2b2lkIDAsaG9zdEZvbnRTaXplU2V0dGluZzp2b2lkIDAsaG9zdE5hbWU6cixob3N0VmVyc2lvbjppLGhvc3RUaGVtZTplLGhvc3RMYW5ndWFnZTpuLGxhbmd1YWdlOm4sU0RLVmVyc2lvbjoiIix0aGVtZTplLHZlcnNpb246IiIsdW5pUGxhdGZvcm06IndlYiIsaXNVbmlBcHBYOiExLHVuaUNvbXBpbGVWZXJzaW9uOl9fdW5pQ29uZmlnLmNvbXBpbGVyVmVyc2lvbix1bmlDb21waWxlclZlcnNpb246X191bmlDb25maWcuY29tcGlsZXJWZXJzaW9uLHVuaVJ1bnRpbWVWZXJzaW9uOl9fdW5pQ29uZmlnLmNvbXBpbGVyVmVyc2lvbn19ZnVuY3Rpb24gdigpe2Y9ITAsZCgpLGY9ITE7dmFyIHQ9T2JqZWN0KGlbImdldFdpbmRvd0luZm8iXSkoKSxlPWgoKSxuPXAoKTtmPSEwO3ZhciByPWwsbz1yLnVhLGE9ci5icm93c2VyTmFtZSxzPXIuYnJvd3NlclZlcnNpb24sYz1yLm9zbmFtZSx2PXIub3N2ZXJzaW9uLGc9T2JqZWN0LmFzc2lnbih7fSx0LGUsbix7YnJvd3Nlck5hbWU6YSxicm93c2VyVmVyc2lvbjpzLGZvbnRTaXplU2V0dGluZzpuLmhvc3RGb250U2l6ZVNldHRpbmcsb3NOYW1lOmMudG9Mb2NhbGVMb3dlckNhc2UoKSxvc1ZlcnNpb246dixvc0xhbmd1YWdlOnZvaWQgMCxvc1RoZW1lOnZvaWQgMCx1bmlQbGF0Zm9ybToid2ViIix1bmlDb21waWxlVmVyc2lvbjpfX3VuaUNvbmZpZy5jb21waWxlclZlcnNpb24sdW5pUnVudGltZVZlcnNpb246X191bmlDb25maWcuY29tcGlsZXJWZXJzaW9uLHVhOm99KTtyZXR1cm4gZGVsZXRlIGcuc2NyZWVuVG9wLGRlbGV0ZSBnLmVuYWJsZURlYnVnLF9fdW5pQ29uZmlnLmRhcmttb2RlfHxkZWxldGUgZy50aGVtZSxPYmplY3QodVsicyJdKShnKX1mdW5jdGlvbiBnKCl7cmV0dXJuIHYoKX19LGVmZGQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC4kY3JlYXRlRWxlbWVudCxuPXQuX3NlbGYuX2N8fGU7cmV0dXJuIHQuaG92ZXJDbGFzcyYmIm5vbmUiIT09dC5ob3ZlckNsYXNzP24oInVuaS12aWV3Iix0Ll9nKHtjbGFzczpbdC5ob3ZlcmluZz90LmhvdmVyQ2xhc3M6IiJdLG9uOnt0b3VjaHN0YXJ0OnQuX2hvdmVyVG91Y2hTdGFydCx0b3VjaGVuZDp0Ll9ob3ZlclRvdWNoRW5kLHRvdWNoY2FuY2VsOnQuX2hvdmVyVG91Y2hDYW5jZWwsbW91c2Vkb3duOnQuX2hvdmVyTW91c2Vkb3duLG1vdXNldXA6dC5faG92ZXJNb3VzZXVwfX0sdC4kbGlzdGVuZXJzKSxbdC5fdCgiZGVmYXVsdCIpXSwyKTpuKCJ1bmktdmlldyIsdC5fZyh7fSx0LiRsaXN0ZW5lcnMpLFt0Ll90KCJkZWZhdWx0IildLDIpfSxpPVtdLG89bigiNDMzNSIpLGE9e25hbWU6IlZpZXciLG1peGluczpbb1siYSJdXSxsaXN0ZW5lcnM6eyJsYWJlbC1jbGljayI6ImNsaWNrSGFuZGxlciJ9fSxzPWEsYz0obigiOGRlZiIpLG4oIjg4NDQiKSksdT1PYmplY3QoY1siYSJdKShzLHIsaSwhMSxudWxsLG51bGwsbnVsbCk7ZVsiZGVmYXVsdCJdPXUuZXhwb3J0c30sZjA4ZTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjYyY2IiKSxpPW4ubihyKTtpLmF9LGYxOTI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsInNob3dUb3BXaW5kb3ciLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLCJoaWRlVG9wV2luZG93IiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwic2hvd0xlZnRXaW5kb3ciLChmdW5jdGlvbigpe3JldHVybiBzfSkpLG4uZChlLCJoaWRlTGVmdFdpbmRvdyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSksbi5kKGUsInNob3dSaWdodFdpbmRvdyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSksbi5kKGUsImhpZGVSaWdodFdpbmRvdyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSksbi5kKGUsImdldFRvcFdpbmRvd1N0eWxlIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxuLmQoZSwiZ2V0TGVmdFdpbmRvd1N0eWxlIiwoZnVuY3Rpb24oKXtyZXR1cm4gaH0pKSxuLmQoZSwiZ2V0UmlnaHRXaW5kb3dTdHlsZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHB9KSksbi5kKGUsInNldFRvcFdpbmRvd1N0eWxlIiwoZnVuY3Rpb24oKXtyZXR1cm4gZ30pKSxuLmQoZSwic2V0TGVmdFdpbmRvd1N0eWxlIiwoZnVuY3Rpb24oKXtyZXR1cm4gbX0pKSxuLmQoZSwic2V0UmlnaHRXaW5kb3dTdHlsZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KSk7dmFyIHI9bigiMzQwZCIpO2Z1bmN0aW9uIGkodCxlKXt2YXIgbj1lPyJzaG93IjoiaGlkZSIrT2JqZWN0KHJbImMiXSkodCkrIldpbmRvdyIsaT1nZXRBcHAoKTtpZihpKXt2YXIgbz1pLiRjaGlsZHJlblswXS4kcmVmcy5sYXlvdXQuc2hvd1dpbmRvdyh0LGUpO3JldHVybiBvP3tlcnJNc2c6IiIuY29uY2F0KG4sIjpmYWlsICIpLmNvbmNhdChvKX06e319cmV0dXJue2Vyck1zZzoiIi5jb25jYXQobiwiOmZhaWwgYXBwIG5vdCByZWFkeSIpfX1mdW5jdGlvbiBvKCl7cmV0dXJuIGkoInRvcCIsITApfWZ1bmN0aW9uIGEoKXtyZXR1cm4gaSgidG9wIiwhMSl9ZnVuY3Rpb24gcygpe3JldHVybiBpKCJsZWZ0IiwhMCl9ZnVuY3Rpb24gYygpe3JldHVybiBpKCJsZWZ0IiwhMSl9ZnVuY3Rpb24gdSgpe3JldHVybiBpKCJyaWdodCIsITApfWZ1bmN0aW9uIGwoKXtyZXR1cm4gaSgicmlnaHQiLCExKX1mdW5jdGlvbiBmKHQpe3ZhciBlPSJnZXQiK09iamVjdChyWyJjIl0pKHQpKyJXaW5kb3dTdHlsZSIsbj1nZXRBcHAoKTtpZighbilyZXR1cm57ZXJyTXNnOiIiLmNvbmNhdChlLCI6ZmFpbCBhcHAgbm90IHJlYWR5Iil9O3ZhciBpPW4uJGNoaWxkcmVuWzBdLiRyZWZzLmxheW91dC5nZXRXaW5kb3dTdHlsZSh0KTtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBpJiYtMSE9PWkuaW5kZXhPZigiV2luZG93IG5vdCBmb3VuZCIpP3tlcnJNc2c6IiIuY29uY2F0KGUsIjpmYWlsICIpLmNvbmNhdChpKX06aX1mdW5jdGlvbiBkKHQpe3JldHVybiBmKCJ0b3AiKX1mdW5jdGlvbiBoKHQpe3JldHVybiBmKCJsZWZ0Iil9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gZigicmlnaHQiKX1mdW5jdGlvbiB2KHQsZSl7dmFyIG49InNldCIrT2JqZWN0KHJbImMiXSkodCkrIldpbmRvd1N0eWxlIixpPWdldEFwcCgpO2lmKCFpKXJldHVybntlcnJNc2c6IiIuY29uY2F0KG4sIjpmYWlsIGFwcCBub3QgcmVhZHkiKX07dmFyIG89aS4kY2hpbGRyZW5bMF0uJHJlZnMubGF5b3V0LnNldFdpbmRvd1N0eWxlKHQsZSk7cmV0dXJuIG8/e2Vyck1zZzoiIi5jb25jYXQobiwiOmZhaWwgIikuY29uY2F0KG8pfTp7fX1mdW5jdGlvbiBnKHQpe3JldHVybiB2KCJ0b3AiLHQpfWZ1bmN0aW9uIG0odCl7cmV0dXJuIHYoImxlZnQiLHQpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIHYoInJpZ2h0Iix0KX19LGYxZGI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlMDc5IiksaT1uLm4ocik7aS5hfSxmMmE5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNDhmZSIpLGk9bi5uKHIpO2kuYX0sZjM3MDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgbj17ZW5zcDoi4oCCIixlbXNwOiLigIMiLG5ic3A6IsKgIn07ZVsiYSJdPXtuYW1lOiJUZXh0Iixwcm9wczp7c2VsZWN0YWJsZTp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LHNwYWNlOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxkZWNvZGU6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfX0sbWV0aG9kczp7X2RlY29kZUh0bWw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc3BhY2UmJm5bdGhpcy5zcGFjZV0mJih0PXQucmVwbGFjZSgvIC9nLG5bdGhpcy5zcGFjZV0pKSx0aGlzLmRlY29kZSYmKHQ9dC5yZXBsYWNlKC8mbmJzcDsvZyxuLm5ic3ApLnJlcGxhY2UoLyZlbnNwOy9nLG4uZW5zcCkucmVwbGFjZSgvJmVtc3A7L2csbi5lbXNwKS5yZXBsYWNlKC8mbHQ7L2csIjwiKS5yZXBsYWNlKC8mZ3Q7L2csIj4iKS5yZXBsYWNlKC8mYW1wOy9nLCImIikucmVwbGFjZSgvJnF1b3Q7L2csJyInKS5yZXBsYWNlKC8mYXBvczsvZywiJyIpKSx0fX0scmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMscj1bXTtyZXR1cm4gdGhpcy4kc2xvdHMuZGVmYXVsdCYmdGhpcy4kc2xvdHMuZGVmYXVsdC5mb3JFYWNoKChmdW5jdGlvbihpKXtpZihpLnRleHQpe3ZhciBvPWkudGV4dC5yZXBsYWNlKC9cXG4vZywiXG4iKSxhPW8uc3BsaXQoIlxuIik7YS5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3IucHVzaChuLl9kZWNvZGVIdG1sKHQpKSxpIT09YS5sZW5ndGgtMSYmci5wdXNoKGUoImJyIikpfSkpfWVsc2UgaS5jb21wb25lbnRPcHRpb25zJiYidi11bmktdGV4dCIhPT1pLmNvbXBvbmVudE9wdGlvbnMudGFnJiZ0Lndhcm4oIkRvIG5vdCBuZXN0IG90aGVyIGNvbXBvbmVudHMgaW4gdGhlIHRleHQgY29tcG9uZW50LCBhcyB0aGVyZSBtYXkgYmUgZGlzcGxheSBkaWZmZXJlbmNlcyBvbiBkaWZmZXJlbnQgcGxhdGZvcm1zLiIpLHIucHVzaChpKX0pKSxlKCJ1bmktdGV4dCIse29uOnRoaXMuJGxpc3RlbmVycyxhdHRyczp7c2VsZWN0YWJsZTohIXRoaXMuc2VsZWN0YWJsZX19LFtlKCJzcGFuIix7fSxyKV0pfX19KS5jYWxsKHRoaXMsbigiNDE4YiIpWyJkZWZhdWx0Il0pfSxmNDRjOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUsImEiLChmdW5jdGlvbigpe3JldHVybiBffSkpLG4uZChlLCJkIiwoZnVuY3Rpb24oKXtyZXR1cm4gd30pKSxuLmQoZSwiZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIFR9KSksbi5kKGUsImIiLChmdW5jdGlvbigpe3JldHVybiBBfSkpLG4uZChlLCJjIiwoZnVuY3Rpb24oKXtyZXR1cm4gRX0pKTt2YXIgaT1uKCIzNDBkIik7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdSh0KXx8Yyh0KXx8cyh0KXx8YSgpfWZ1bmN0aW9uIGEoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX1mdW5jdGlvbiBzKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PT10eXBlb2YgdClyZXR1cm4gbCh0LGUpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbShuKToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP2wodCxlKTp2b2lkIDB9fWZ1bmN0aW9uIGModCl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KHQpKXJldHVybiBBcnJheS5mcm9tKHQpfWZ1bmN0aW9uIHUodCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gbCh0KX1mdW5jdGlvbiBsKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gZih0KXtyZXR1cm4gZj0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT1yKFN5bWJvbC5pdGVyYXRvcik/ZnVuY3Rpb24odCl7cmV0dXJuIHIodCl9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6cih0KX0sZih0KX12YXIgZD1bImludm9rZSIsInN1Y2Nlc3MiLCJmYWlsIiwiY29tcGxldGUiLCJyZXR1cm5WYWx1ZSJdLGg9e30scD17fTtmdW5jdGlvbiB2KHQsZSl7dmFyIG49ZT90P3QuY29uY2F0KGUpOkFycmF5LmlzQXJyYXkoZSk/ZTpbZV06dDtyZXR1cm4gbj9nKG4pOm59ZnVuY3Rpb24gZyh0KXtmb3IodmFyIGU9W10sbj0wO248dC5sZW5ndGg7bisrKS0xPT09ZS5pbmRleE9mKHRbbl0pJiZlLnB1c2godFtuXSk7cmV0dXJuIGV9ZnVuY3Rpb24gbSh0LGUpe3ZhciBuPXQuaW5kZXhPZihlKTstMSE9PW4mJnQuc3BsaWNlKG4sMSl9ZnVuY3Rpb24gYih0LGUpe09iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4pey0xIT09ZC5pbmRleE9mKG4pJiZPYmplY3QoaVsiayJdKShlW25dKSYmKHRbbl09dih0W25dLGVbbl0pKX0pKX1mdW5jdGlvbiB5KHQsZSl7dCYmZSYmT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24obil7LTEhPT1kLmluZGV4T2YobikmJk9iamVjdChpWyJrIl0pKGVbbl0pJiZtKHRbbl0sZVtuXSl9KSl9ZnVuY3Rpb24gXyh0LGUpeyJzdHJpbmciPT09dHlwZW9mIHQmJk9iamVjdChpWyJsIl0pKGUpP2IocFt0XXx8KHBbdF09e30pLGUpOk9iamVjdChpWyJsIl0pKHQpJiZiKGgsdCl9ZnVuY3Rpb24gdyh0LGUpeyJzdHJpbmciPT09dHlwZW9mIHQ/T2JqZWN0KGlbImwiXSkoZSk/eShwW3RdLGUpOmRlbGV0ZSBwW3RdOk9iamVjdChpWyJsIl0pKHQpJiZ5KGgsdCl9ZnVuY3Rpb24gUyh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdChuLGUpfHxufX1mdW5jdGlvbiB4KHQpe3JldHVybiEhdCYmKCJvYmplY3QiPT09Zih0KXx8ImZ1bmN0aW9uIj09PXR5cGVvZiB0KSYmImZ1bmN0aW9uIj09PXR5cGVvZiB0LnRoZW59ZnVuY3Rpb24gayh0LGUsbil7Zm9yKHZhciByPSExLGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIG89dFtpXTtpZihyKXI9UHJvbWlzZS5yZXNvbHZlKFMobyxuKSk7ZWxzZXt2YXIgYT1vKGUsbik7aWYoeChhKSYmKHI9UHJvbWlzZS5yZXNvbHZlKGEpKSwhMT09PWEpcmV0dXJue3RoZW46ZnVuY3Rpb24oKXt9fX19cmV0dXJuIHJ8fHt0aGVuOmZ1bmN0aW9uKHQpe3JldHVybiB0KGUpfX19ZnVuY3Rpb24gQyh0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuWyJzdWNjZXNzIiwiZmFpbCIsImNvbXBsZXRlIl0uZm9yRWFjaCgoZnVuY3Rpb24obil7aWYoQXJyYXkuaXNBcnJheSh0W25dKSl7dmFyIHI9ZVtuXTtlW25dPWZ1bmN0aW9uKG8pe2sodFtuXSxvLGUpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QoaVsiayJdKShyKSYmcih0KXx8dH0pKX19fSkpLGV9ZnVuY3Rpb24gVCh0LGUpe3ZhciBuPVtdO0FycmF5LmlzQXJyYXkoaC5yZXR1cm5WYWx1ZSkmJm4ucHVzaC5hcHBseShuLG8oaC5yZXR1cm5WYWx1ZSkpO3ZhciByPXBbdF07cmV0dXJuIHImJkFycmF5LmlzQXJyYXkoci5yZXR1cm5WYWx1ZSkmJm4ucHVzaC5hcHBseShuLG8oci5yZXR1cm5WYWx1ZSkpLG4uZm9yRWFjaCgoZnVuY3Rpb24odCl7ZT10KGUpfHxlfSkpLGV9ZnVuY3Rpb24gTyh0KXt2YXIgZT1PYmplY3QuY3JlYXRlKG51bGwpO09iamVjdC5rZXlzKGgpLmZvckVhY2goKGZ1bmN0aW9uKHQpeyJyZXR1cm5WYWx1ZSIhPT10JiYoZVt0XT1oW3RdLnNsaWNlKCkpfSkpO3ZhciBuPXBbdF07cmV0dXJuIG4mJk9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKHQpeyJyZXR1cm5WYWx1ZSIhPT10JiYoZVt0XT0oZVt0XXx8W10pLmNvbmNhdChuW3RdKSl9KSksZX1mdW5jdGlvbiBBKHQsZSxuKXtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShyPjM/ci0zOjApLG89MztvPHI7bysrKWlbby0zXT1hcmd1bWVudHNbb107dmFyIGE9Tyh0KTtpZihhJiZPYmplY3Qua2V5cyhhKS5sZW5ndGgpe2lmKEFycmF5LmlzQXJyYXkoYS5pbnZva2UpKXt2YXIgcz1rKGEuaW52b2tlLG4pO3JldHVybiBzLnRoZW4oKGZ1bmN0aW9uKG4pe3JldHVybiBlLmFwcGx5KHZvaWQgMCxbQyhPKHQpLG4pXS5jb25jYXQoaSkpfSkpfXJldHVybiBlLmFwcGx5KHZvaWQgMCxbQyhhLG4pXS5jb25jYXQoaSkpfXJldHVybiBlLmFwcGx5KHZvaWQgMCxbbl0uY29uY2F0KGkpKX12YXIgRT17cmV0dXJuVmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHgodCk/bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsbil7dC50aGVuKChmdW5jdGlvbih0KXt0P3RbMF0/bih0WzBdKTplKHRbMV0pOmUodCl9KSl9KSk6dH19fSxmNGFjOmZ1bmN0aW9uKHQsZSxuKXt9LGY1ZTc6ZnVuY3Rpb24odCxlLG4pe30sZjYwYjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwic2hvd01vZGFsIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKSxuLmQoZSwic2hvd1RvYXN0IiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwic2hvd0xvYWRpbmciLChmdW5jdGlvbigpe3JldHVybiBzfSkpLG4uZChlLCJzaG93QWN0aW9uU2hlZXQiLChmdW5jdGlvbigpe3JldHVybiBjfSkpO3ZhciByPW4oIjAzNzIiKSxpPW4oIjQ3MzgiKSxvPXt0aXRsZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sY29udGVudDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sc2hvd0NhbmNlbDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGNhbmNlbFRleHQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0KHJbImciXSkoInVuaS5zaG93TW9kYWwuY2FuY2VsIil9fSxjYW5jZWxDb2xvcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIzAwMCJ9LGNvbmZpcm1UZXh0Ont0eXBlOlN0cmluZyxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdChyWyJnIl0pKCJ1bmkuc2hvd01vZGFsLmNvbmZpcm0iKX19LGNvbmZpcm1Db2xvcjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIzAwN2FmZiJ9LHZpc2libGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfX0sYT17dGl0bGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LGljb246e2RlZmF1bHQ6InN1Y2Nlc3MiLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpey0xPT09WyJzdWNjZXNzIiwibG9hZGluZyIsImVycm9yIiwibm9uZSJdLmluZGV4T2YodCkmJihlLmljb249InN1Y2Nlc3MiKX19LGltYWdlOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIiLHZhbGlkYXRvcjpmdW5jdGlvbih0LGUpe3QmJihlLmltYWdlPU9iamVjdChpWyJhIl0pKHQpKX19LGR1cmF0aW9uOnt0eXBlOk51bWJlcixkZWZhdWx0OjE1MDB9LG1hc2s6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx2aXNpYmxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH19LHM9e3RpdGxlOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxpY29uOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJsb2FkaW5nIn0sZHVyYXRpb246e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MWU4fSxtYXNrOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdmlzaWJsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9fSxjPXtpdGVtTGlzdDp7dHlwZTpBcnJheSxyZXF1aXJlZDohMCx2YWxpZGF0b3I6ZnVuY3Rpb24odCxlKXtpZighdC5sZW5ndGgpcmV0dXJuInBhcmFtZXRlci5pdGVtTGlzdCBzaG91bGQgaGF2ZSBhdCBsZWFzdCAxIGl0ZW0ifX0saXRlbUNvbG9yOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIjMDAwIn0sdmlzaWJsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LHBvcG92ZXI6e3R5cGU6T2JqZWN0fX19LGY2MjE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixpLG89WyJ0b3AiLCJsZWZ0IiwicmlnaHQiLCJib3R0b20iXSxhPXt9O2Z1bmN0aW9uIHMoKXtyZXR1cm4gaT0iQ1NTImluIHdpbmRvdyYmImZ1bmN0aW9uIj09dHlwZW9mIENTUy5zdXBwb3J0cz9DU1Muc3VwcG9ydHMoInRvcDogZW52KHNhZmUtYXJlYS1pbnNldC10b3ApIik/ImVudiI6Q1NTLnN1cHBvcnRzKCJ0b3A6IGNvbnN0YW50KHNhZmUtYXJlYS1pbnNldC10b3ApIik/ImNvbnN0YW50IjoiIjoiIixpfWZ1bmN0aW9uIGMoKXtpZihpPSJzdHJpbmciPT09dHlwZW9mIGk/aTpzKCksaSl7dmFyIHQ9W10sZT0hMTt0cnl7dmFyIG49T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7ZT17cGFzc2l2ZTohMH19fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLG51bGwsbil9Y2F0Y2goaCl7fXZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3UoYyx7cG9zaXRpb246ImFic29sdXRlIixsZWZ0OiIwIix0b3A6IjAiLHdpZHRoOiIwIixoZWlnaHQ6IjAiLHpJbmRleDoiLTEiLG92ZXJmbG93OiJoaWRkZW4iLHZpc2liaWxpdHk6ImhpZGRlbiJ9KSxvLmZvckVhY2goKGZ1bmN0aW9uKHQpe2QoYyx0KX0pKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGMpLGwoKSxyPSEwfWVsc2Ugby5mb3JFYWNoKChmdW5jdGlvbih0KXthW3RdPTB9KSk7ZnVuY3Rpb24gdSh0LGUpe3ZhciBuPXQuc3R5bGU7T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9ZVt0XTtuW3RdPXJ9KSl9ZnVuY3Rpb24gbChlKXtlP3QucHVzaChlKTp0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3QoKX0pKX1mdW5jdGlvbiBkKHQsbil7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iiksbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksZD0xMDAsaD0xZTQscD17cG9zaXRpb246ImFic29sdXRlIix3aWR0aDpkKyJweCIsaGVpZ2h0OiIyMDBweCIsYm94U2l6aW5nOiJib3JkZXItYm94IixvdmVyZmxvdzoiaGlkZGVuIixwYWRkaW5nQm90dG9tOmkrIihzYWZlLWFyZWEtaW5zZXQtIituKyIpIn07dShyLHApLHUobyxwKSx1KHMse3RyYW5zaXRpb246IjBzIixhbmltYXRpb246Im5vbmUiLHdpZHRoOiI0MDBweCIsaGVpZ2h0OiI0MDBweCJ9KSx1KGMse3RyYW5zaXRpb246IjBzIixhbmltYXRpb246Im5vbmUiLHdpZHRoOiIyNTAlIixoZWlnaHQ6IjI1MCUifSksci5hcHBlbmRDaGlsZChzKSxvLmFwcGVuZENoaWxkKGMpLHQuYXBwZW5kQ2hpbGQociksdC5hcHBlbmRDaGlsZChvKSxsKChmdW5jdGlvbigpe3Iuc2Nyb2xsVG9wPW8uc2Nyb2xsVG9wPWg7dmFyIHQ9ci5zY3JvbGxUb3AsaT1vLnNjcm9sbFRvcDtmdW5jdGlvbiBhKCl7dGhpcy5zY3JvbGxUb3AhPT0odGhpcz09PXI/dDppKSYmKHIuc2Nyb2xsVG9wPW8uc2Nyb2xsVG9wPWgsdD1yLnNjcm9sbFRvcCxpPW8uc2Nyb2xsVG9wLGYobikpfXIuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixhLGUpLG8uYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixhLGUpfSkpO3ZhciB2PWdldENvbXB1dGVkU3R5bGUocik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsbix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBwYXJzZUZsb2F0KHYucGFkZGluZ0JvdHRvbSl9fSl9fWZ1bmN0aW9uIHUodCl7cmV0dXJuIHJ8fGMoKSxhW3RdfXZhciBsPVtdO2Z1bmN0aW9uIGYodCl7bC5sZW5ndGh8fHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIHQ9e307bC5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2VdPWFbZV19KSksbC5sZW5ndGg9MCxkLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UodCl9KSl9KSwwKSxsLnB1c2godCl9dmFyIGQ9W107ZnVuY3Rpb24gaCh0KXtzKCkmJihyfHxjKCksImZ1bmN0aW9uIj09PXR5cGVvZiB0JiZkLnB1c2godCkpfWZ1bmN0aW9uIHAodCl7dmFyIGU9ZC5pbmRleE9mKHQpO2U+PTAmJmQuc3BsaWNlKGUsMSl9dmFyIHY9e2dldCBzdXBwb3J0KCl7cmV0dXJuIDAhPSgic3RyaW5nIj09PXR5cGVvZiBpP2k6cygpKS5sZW5ndGh9LGdldCB0b3AoKXtyZXR1cm4gdSgidG9wIil9LGdldCBsZWZ0KCl7cmV0dXJuIHUoImxlZnQiKX0sZ2V0IHJpZ2h0KCl7cmV0dXJuIHUoInJpZ2h0Iil9LGdldCBib3R0b20oKXtyZXR1cm4gdSgiYm90dG9tIil9LG9uQ2hhbmdlOmgsb2ZmQ2hhbmdlOnB9O3QuZXhwb3J0cz12fSxmNjY5OmZ1bmN0aW9uKHQsZSxuKXt9LGY4Mjk6ZnVuY3Rpb24odCxlLG4pe30sZjk4YzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0LHIpe24uZChlLCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gaH0pKTt2YXIgaT1uKCIzNDBkIik7ZnVuY3Rpb24gbyh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGEodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX1mdW5jdGlvbiBzKHQsZSxuKXtyZXR1cm4gZSYmYSh0LnByb3RvdHlwZSxlKSxuJiZhKHQsbiksdH12YXIgYz0vXlxzK3xccyskL2csdT0vXHMrLztmdW5jdGlvbiBsKHQsZSxuKXt2YXIgcj1bXSxpPWZ1bmN0aW9uKHQpe3JldHVybiBpPW4/ZnVuY3Rpb24odCl7cmV0dXJuIWUuY29udGFpbnModCl9OmZ1bmN0aW9uKHQpe3JldHVybiBlLmNvbnRhaW5zKHQpfSxpKHQpfTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXt0PXQucmVwbGFjZShjLCIiKSxpKHQpJiZyLnB1c2godCl9KSkscn1mdW5jdGlvbiBmKHQpe3ZhciBlPXt9LG49LzsoPyFbXihdKlwpKS9nLHI9LzooLispLztyZXR1cm4gdC5zcGxpdChuKS5mb3JFYWNoKChmdW5jdGlvbih0KXtpZih0KXt2YXIgbj10LnNwbGl0KHIpO24ubGVuZ3RoPjEmJihlW25bMF0udHJpbSgpXT1uWzFdLnRyaW0oKSl9fSkpLGV9dmFyIGQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLiR2bT10LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCIkZWwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC4kZWx9fSl9cmV0dXJuIHMoZSxbe2tleToic2VsZWN0Q29tcG9uZW50Iix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLiRlbCYmdCl7dmFyIGU9dGhpcy4kZWwucXVlcnlTZWxlY3Rvcih0KSxuPWUuX192dWVfX3x8ZTtyZXR1cm4gbi4kZ2V0Q29tcG9uZW50RGVzY3JpcHRvciYmbi4kZ2V0Q29tcG9uZW50RGVzY3JpcHRvcihuLCExKX19fSx7a2V5OiJzZWxlY3RBbGxDb21wb25lbnRzIix2YWx1ZTpmdW5jdGlvbih0KXtpZighdGhpcy4kZWx8fCF0KXJldHVybltdO2Zvcih2YXIgZT1bXSxuPXRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3JBbGwodCkscj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgaT1uW3JdLG89aS5fX3Z1ZV9ffHxpO28uJGdldENvbXBvbmVudERlc2NyaXB0b3ImJmUucHVzaChvLiRnZXRDb21wb25lbnREZXNjcmlwdG9yKG8sITEpKX1yZXR1cm4gZX19LHtrZXk6InNldFN0eWxlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy4kZWwmJnQ/KCJzdHJpbmciPT09dHlwZW9mIHQmJih0PWYodCkpLE9iamVjdChpWyJsIl0pKHQpJiYodGhpcy4kZWwuX193eHNTdHlsZT10LHRoaXMuJHZtLiRmb3JjZVVwZGF0ZSgpKSx0aGlzKTp0aGlzfX0se2tleToiYWRkQ2xhc3MiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkodCksbj0wO248dDtuKyspZVtuXT1hcmd1bWVudHNbbl07aWYoIXRoaXMuJGVsfHwhZS5sZW5ndGgpcmV0dXJuIHRoaXM7dmFyIHI9bChlLHRoaXMuJGVsLmNsYXNzTGlzdCwhMCk7aWYoci5sZW5ndGgpe3ZhciBpPXRoaXMuJGVsLl9fd3hzQWRkQ2xhc3N8fCIiO3RoaXMuJGVsLl9fd3hzQWRkQ2xhc3M9aSsoaT8iICI6IiIpK3Iuam9pbigiICIpLHRoaXMuJHZtLiRmb3JjZVVwZGF0ZSgpfXJldHVybiB0aGlzfX0se2tleToicmVtb3ZlQ2xhc3MiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkodCksbj0wO248dDtuKyspZVtuXT1hcmd1bWVudHNbbl07aWYoIXRoaXMuJGVsfHwhZS5sZW5ndGgpcmV0dXJuIHRoaXM7dmFyIHI9dGhpcy4kZWwuY2xhc3NMaXN0LGk9dGhpcy4kZWwuX193eHNBZGRDbGFzcz90aGlzLiRlbC5fX3d4c0FkZENsYXNzLnNwbGl0KHUpOltdLG89bChlLHIsITEpO2lmKG8ubGVuZ3RoKXt2YXIgYT1bXTtvLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPWkuZmluZEluZGV4KChmdW5jdGlvbihlKXtyZXR1cm4gZT09PXR9KSk7LTEhPT1lJiZpLnNwbGljZShlLDEpLGEucHVzaCh0KX0pKSx0aGlzLiRlbC5fX3d4c1JlbW92ZUNsYXNzPWEsdGhpcy4kZWwuX193eHNBZGRDbGFzcz1pLmpvaW4oIiAiKSx0aGlzLiR2bS4kZm9yY2VVcGRhdGUoKX1yZXR1cm4gdGhpc319LHtrZXk6Imhhc0NsYXNzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy4kZWwmJnRoaXMuJGVsLmNsYXNzTGlzdC5jb250YWlucyh0KX19LHtrZXk6ImdldENvbXB1dGVkU3R5bGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGVsP3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuJGVsKTp7fX19LHtrZXk6ImdldERhdGFzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGVsJiZ0aGlzLiRlbC5kYXRhc2V0fX0se2tleToiY2FsbE1ldGhvZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2UgaW4gdGhpcy4kdm0/dGhpcy4kdm1bZV0oSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuKSkpOnRoaXMuJHZtLl8kaWQmJnQucHVibGlzaEhhbmRsZXIoIm9uV3hzSW52b2tlQ2FsbE1ldGhvZCIse2NpZDp0aGlzLiR2bS5fJGlkLG1ldGhvZDplLGFyZ3M6bn0pfX0se2tleToicmVxdWVzdEFuaW1hdGlvbkZyYW1lIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gci5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCksdGhpc319LHtrZXk6ImdldFN0YXRlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbCYmKHRoaXMuJGVsLl9fd3hzU3RhdGV8fCh0aGlzLiRlbC5fX3d4c1N0YXRlPXt9KSl9fSx7a2V5OiJ0cmlnZ2VyRXZlbnQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4gdGhpcy4kdm0uJGVtaXQodCxlKSx0aGlzfX0se2tleToic2V0VGltZW91dCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gd2luZG93LnNldFRpbWVvdXQodCxlKX19LHtrZXk6ImNsZWFyVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHdpbmRvdy5jbGVhclRpbWVvdXQodCl9fSx7a2V5OiJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfX1dKSxlfSgpO2Z1bmN0aW9uIGgodCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTtpZihlJiZ0JiZ0LiRvcHRpb25zLm5hbWUmJjA9PT10LiRvcHRpb25zLm5hbWUuaW5kZXhPZigiVlVuaSIpJiYodD10LiRwYXJlbnQpLHQpcmV0dXJuIl9fd3hzQ29tcG9uZW50RGVzY3JpcHRvciJpbiB0fHwodC5fX3d4c0NvbXBvbmVudERlc2NyaXB0b3I9bmV3IGQodCkpLHQuX193eHNDb21wb25lbnREZXNjcmlwdG9yfX0pLmNhbGwodGhpcyxuKCIzMWQyIiksbigiMGVlNCIpKX0sZmE1NDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgcj1uKCJjNzAwIiksaT1uKCIzNDBkIiksbz1uKCI2Zjc1IiksYT1mdW5jdGlvbigpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF07cmV0dXJuISFpWyJ0Il0mJntwYXNzaXZlOnR9fSxzPWEoKTtlWyJhIl09e25hbWU6IlNjcm9sbFZpZXciLG1peGluczpbclsiYSJdXSxwcm9wczp7c2Nyb2xsWDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LHNjcm9sbFk6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSx1cHBlclRocmVzaG9sZDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDo1MH0sbG93ZXJUaHJlc2hvbGQ6e3R5cGU6W051bWJlcixTdHJpbmddLGRlZmF1bHQ6NTB9LHNjcm9sbFRvcDp7dHlwZTpbTnVtYmVyLFN0cmluZ10sZGVmYXVsdDowfSxzY3JvbGxMZWZ0Ont0eXBlOltOdW1iZXIsU3RyaW5nXSxkZWZhdWx0OjB9LHNjcm9sbEludG9WaWV3Ont0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxzY3JvbGxXaXRoQW5pbWF0aW9uOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sZW5hYmxlQmFja1RvVG9wOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0scmVmcmVzaGVyRW5hYmxlZDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9LHJlZnJlc2hlclRocmVzaG9sZDp7dHlwZTpOdW1iZXIsZGVmYXVsdDo0NX0scmVmcmVzaGVyRGVmYXVsdFN0eWxlOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJiYWNrIn0scmVmcmVzaGVyQmFja2dyb3VuZDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiI2ZmZiJ9LHJlZnJlc2hlclRyaWdnZXJlZDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITF9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2xhc3RTY3JvbGxUb3A6dGhpcy5zY3JvbGxUb3BOdW1iZXIsbGFzdFNjcm9sbExlZnQ6dGhpcy5zY3JvbGxMZWZ0TnVtYmVyLGxhc3RTY3JvbGxUb1VwcGVyVGltZTowLGxhc3RTY3JvbGxUb0xvd2VyVGltZTowLHJlZnJlc2hlckhlaWdodDowLHJlZnJlc2hSb3RhdGU6MCxyZWZyZXNoU3RhdGU6IiJ9fSxjb21wdXRlZDp7dXBwZXJUaHJlc2hvbGROdW1iZXI6ZnVuY3Rpb24oKXt2YXIgdD1OdW1iZXIodGhpcy51cHBlclRocmVzaG9sZCk7cmV0dXJuIGlzTmFOKHQpPzUwOnR9LGxvd2VyVGhyZXNob2xkTnVtYmVyOmZ1bmN0aW9uKCl7dmFyIHQ9TnVtYmVyKHRoaXMubG93ZXJUaHJlc2hvbGQpO3JldHVybiBpc05hTih0KT81MDp0fSxzY3JvbGxUb3BOdW1iZXI6ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVyKHRoaXMuc2Nyb2xsVG9wKXx8MH0sc2Nyb2xsTGVmdE51bWJlcjpmdW5jdGlvbigpe3JldHVybiBOdW1iZXIodGhpcy5zY3JvbGxMZWZ0KXx8MH19LHdhdGNoOntzY3JvbGxUb3BOdW1iZXI6ZnVuY3Rpb24odCl7dGhpcy5fc2Nyb2xsVG9wQ2hhbmdlZCh0KX0sc2Nyb2xsTGVmdE51bWJlcjpmdW5jdGlvbih0KXt0aGlzLl9zY3JvbGxMZWZ0Q2hhbmdlZCh0KX0sc2Nyb2xsSW50b1ZpZXc6ZnVuY3Rpb24odCl7dGhpcy5fc2Nyb2xsSW50b1ZpZXdDaGFuZ2VkKHQpfSxyZWZyZXNoZXJUcmlnZ2VyZWQ6ZnVuY3Rpb24odCl7ITA9PT10P3RoaXMuX3NldFJlZnJlc2hTdGF0ZSgicmVmcmVzaGluZyIpOiExPT09dCYmdGhpcy5fc2V0UmVmcmVzaFN0YXRlKCJyZXN0b3JlIil9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPW51bGwsbj1udWxsO3RoaXMuX2F0dGFjaGVkPSEwLHRoaXMudG9VcHBlck51bWJlcj0wLHRoaXMudHJpZ2dlckFib3J0PSExLHRoaXMuYmVmb3JlUmVmcmVzaGluZz0hMSx0aGlzLl9zY3JvbGxUb3BDaGFuZ2VkKHRoaXMuc2Nyb2xsVG9wTnVtYmVyKSx0aGlzLl9zY3JvbGxMZWZ0Q2hhbmdlZCh0aGlzLnNjcm9sbExlZnROdW1iZXIpLHRoaXMuX3Njcm9sbEludG9WaWV3Q2hhbmdlZCh0aGlzLnNjcm9sbEludG9WaWV3KSx0aGlzLl9faGFuZGxlU2Nyb2xsPWZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHQuX2hhbmRsZVNjcm9sbC5iaW5kKHQsZSkoKX0sdGhpcy5fX2hhbmRsZVRvdWNoTW92ZT1mdW5jdGlvbihyKXtpZihudWxsIT09ZSl7dmFyIGk9ci50b3VjaGVzWzBdLnBhZ2VYLG89ci50b3VjaGVzWzBdLnBhZ2VZLGE9dC4kcmVmcy5tYWluO2lmKE1hdGguYWJzKGktZS54KT5NYXRoLmFicyhvLWUueSkpaWYodC5zY3JvbGxYKXtpZigwPT09YS5zY3JvbGxMZWZ0JiZpPmUueClyZXR1cm4gdm9pZChuPSExKTtpZihhLnNjcm9sbFdpZHRoPT09YS5vZmZzZXRXaWR0aCthLnNjcm9sbExlZnQmJmk8ZS54KXJldHVybiB2b2lkKG49ITEpO249ITB9ZWxzZSBuPSExO2Vsc2UgaWYodC5zY3JvbGxZKWlmKDA9PT1hLnNjcm9sbFRvcCYmbz5lLnkpbj0hMSx0LnJlZnJlc2hlckVuYWJsZWQmJiExIT09ci5jYW5jZWxhYmxlJiZyLnByZXZlbnREZWZhdWx0KCk7ZWxzZXtpZihhLnNjcm9sbEhlaWdodD09PWEub2Zmc2V0SGVpZ2h0K2Euc2Nyb2xsVG9wJiZvPGUueSlyZXR1cm4gdm9pZChuPSExKTtuPSEwfWVsc2Ugbj0hMTtpZihuJiZyLnN0b3BQcm9wYWdhdGlvbigpLDA9PT1hLnNjcm9sbFRvcCYmMT09PXIudG91Y2hlcy5sZW5ndGgmJih0LnJlZnJlc2hTdGF0ZT0icHVsbGluZyIpLHQucmVmcmVzaGVyRW5hYmxlZCYmInB1bGxpbmciPT09dC5yZWZyZXNoU3RhdGUpe3ZhciBzPW8tZS55OzA9PT10LnRvVXBwZXJOdW1iZXImJih0LnRvVXBwZXJOdW1iZXI9byksdC5iZWZvcmVSZWZyZXNoaW5nPyh0LnJlZnJlc2hlckhlaWdodD1zK3QucmVmcmVzaGVyVGhyZXNob2xkLHQudHJpZ2dlckFib3J0PSExKToodC5yZWZyZXNoZXJIZWlnaHQ9by10LnRvVXBwZXJOdW1iZXIsdC5yZWZyZXNoZXJIZWlnaHQ+MCYmKHQudHJpZ2dlckFib3J0PSEwLHQuJHRyaWdnZXIoInJlZnJlc2hlcnB1bGxpbmciLHIse2RlbHRhWTpzfSkpKTt2YXIgYz10LnJlZnJlc2hlckhlaWdodC90LnJlZnJlc2hlclRocmVzaG9sZDt0LnJlZnJlc2hSb3RhdGU9MzYwKihjPjE/MTpjKX19fSx0aGlzLl9faGFuZGxlVG91Y2hTdGFydD1mdW5jdGlvbih0KXsxPT09dC50b3VjaGVzLmxlbmd0aCYmKE9iamVjdChvWyJhIl0pKHtkaXNhYmxlOiEwfSksZT17eDp0LnRvdWNoZXNbMF0ucGFnZVgseTp0LnRvdWNoZXNbMF0ucGFnZVl9KX0sdGhpcy5fX2hhbmRsZVRvdWNoRW5kPWZ1bmN0aW9uKG4pe2U9bnVsbCxPYmplY3Qob1siYSJdKSh7ZGlzYWJsZTohMX0pLHQucmVmcmVzaGVySGVpZ2h0Pj10LnJlZnJlc2hlclRocmVzaG9sZD90Ll9zZXRSZWZyZXNoU3RhdGUoInJlZnJlc2hpbmciKTp0Ll9zZXRSZWZyZXNoU3RhdGUoInJlZnJlc2hlcmFib3J0Iil9LHRoaXMuJHJlZnMubWFpbi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iix0aGlzLl9faGFuZGxlVG91Y2hTdGFydCxzKSx0aGlzLiRyZWZzLm1haW4uYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLl9faGFuZGxlVG91Y2hNb3ZlLGEoITEpKSx0aGlzLiRyZWZzLm1haW4uYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLl9faGFuZGxlU2Nyb2xsLGEoITEpKSx0aGlzLiRyZWZzLm1haW4uYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMuX19oYW5kbGVUb3VjaEVuZCxzKSxPYmplY3Qob1siYiJdKSgpfSxhY3RpdmF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbFkmJih0aGlzLiRyZWZzLm1haW4uc2Nyb2xsVG9wPXRoaXMubGFzdFNjcm9sbFRvcCksdGhpcy5zY3JvbGxYJiYodGhpcy4kcmVmcy5tYWluLnNjcm9sbExlZnQ9dGhpcy5sYXN0U2Nyb2xsTGVmdCl9LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLiRyZWZzLm1haW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5fX2hhbmRsZVRvdWNoU3RhcnQscyksdGhpcy4kcmVmcy5tYWluLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5fX2hhbmRsZVRvdWNoTW92ZSxzKSx0aGlzLiRyZWZzLm1haW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLl9faGFuZGxlU2Nyb2xsLGEoITEpKSx0aGlzLiRyZWZzLm1haW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMuX19oYW5kbGVUb3VjaEVuZCxzKX0sbWV0aG9kczp7c2Nyb2xsVG86ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLiRyZWZzLm1haW47dDwwP3Q9MDoieCI9PT1lJiZ0Pm4uc2Nyb2xsV2lkdGgtbi5vZmZzZXRXaWR0aD90PW4uc2Nyb2xsV2lkdGgtbi5vZmZzZXRXaWR0aDoieSI9PT1lJiZ0Pm4uc2Nyb2xsSGVpZ2h0LW4ub2Zmc2V0SGVpZ2h0JiYodD1uLnNjcm9sbEhlaWdodC1uLm9mZnNldEhlaWdodCk7dmFyIHI9MCxpPSIiOyJ4Ij09PWU/cj1uLnNjcm9sbExlZnQtdDoieSI9PT1lJiYocj1uLnNjcm9sbFRvcC10KSwwIT09ciYmKHRoaXMuJHJlZnMuY29udGVudC5zdHlsZS50cmFuc2l0aW9uPSJ0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0Iix0aGlzLiRyZWZzLmNvbnRlbnQuc3R5bGUud2Via2l0VHJhbnNpdGlvbj0iLXdlYmtpdC10cmFuc2Zvcm0gLjNzIGVhc2Utb3V0IiwieCI9PT1lP2k9InRyYW5zbGF0ZVgoIityKyJweCkgdHJhbnNsYXRlWigwKSI6InkiPT09ZSYmKGk9InRyYW5zbGF0ZVkoIityKyJweCkgdHJhbnNsYXRlWigwKSIpLHRoaXMuJHJlZnMuY29udGVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIix0aGlzLl9fdHJhbnNpdGlvbkVuZCksdGhpcy4kcmVmcy5jb250ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLHRoaXMuX190cmFuc2l0aW9uRW5kKSx0aGlzLl9fdHJhbnNpdGlvbkVuZD10aGlzLl90cmFuc2l0aW9uRW5kLmJpbmQodGhpcyx0LGUpLHRoaXMuJHJlZnMuY29udGVudC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIix0aGlzLl9fdHJhbnNpdGlvbkVuZCksdGhpcy4kcmVmcy5jb250ZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLHRoaXMuX190cmFuc2l0aW9uRW5kKSwieCI9PT1lP24uc3R5bGUub3ZlcmZsb3dYPSJoaWRkZW4iOiJ5Ij09PWUmJihuLnN0eWxlLm92ZXJmbG93WT0iaGlkZGVuIiksdGhpcy4kcmVmcy5jb250ZW50LnN0eWxlLnRyYW5zZm9ybT1pLHRoaXMuJHJlZnMuY29udGVudC5zdHlsZS53ZWJraXRUcmFuc2Zvcm09aSl9LF9oYW5kbGVUcmFjazpmdW5jdGlvbih0KXtpZigic3RhcnQiPT09dC5kZXRhaWwuc3RhdGUpcmV0dXJuIHRoaXMuX3g9dC5kZXRhaWwueCx0aGlzLl95PXQuZGV0YWlsLnksdm9pZCh0aGlzLl9ub0J1YmJsZT1udWxsKTsiZW5kIj09PXQuZGV0YWlsLnN0YXRlJiYodGhpcy5fbm9CdWJibGU9ITEpLG51bGw9PT10aGlzLl9ub0J1YmJsZSYmdGhpcy5zY3JvbGxZJiYoTWF0aC5hYnModGhpcy5feS10LmRldGFpbC55KS9NYXRoLmFicyh0aGlzLl94LXQuZGV0YWlsLngpPjE/dGhpcy5fbm9CdWJibGU9ITA6dGhpcy5fbm9CdWJibGU9ITEpLG51bGw9PT10aGlzLl9ub0J1YmJsZSYmdGhpcy5zY3JvbGxYJiYoTWF0aC5hYnModGhpcy5feC10LmRldGFpbC54KS9NYXRoLmFicyh0aGlzLl95LXQuZGV0YWlsLnkpPjE/dGhpcy5fbm9CdWJibGU9ITA6dGhpcy5fbm9CdWJibGU9ITEpLHRoaXMuX3g9dC5kZXRhaWwueCx0aGlzLl95PXQuZGV0YWlsLnksdGhpcy5fbm9CdWJibGUmJnQuc3RvcFByb3BhZ2F0aW9uKCl9LF9oYW5kbGVTY3JvbGw6ZnVuY3Rpb24odCl7dmFyIGU9dC50YXJnZXQ7dGhpcy4kdHJpZ2dlcigic2Nyb2xsIix0LHtzY3JvbGxMZWZ0OmUuc2Nyb2xsTGVmdCxzY3JvbGxUb3A6ZS5zY3JvbGxUb3Asc2Nyb2xsSGVpZ2h0OmUuc2Nyb2xsSGVpZ2h0LHNjcm9sbFdpZHRoOmUuc2Nyb2xsV2lkdGgsZGVsdGFYOnRoaXMubGFzdFNjcm9sbExlZnQtZS5zY3JvbGxMZWZ0LGRlbHRhWTp0aGlzLmxhc3RTY3JvbGxUb3AtZS5zY3JvbGxUb3B9KSx0aGlzLnNjcm9sbFkmJihlLnNjcm9sbFRvcDw9dGhpcy51cHBlclRocmVzaG9sZE51bWJlciYmdGhpcy5sYXN0U2Nyb2xsVG9wLWUuc2Nyb2xsVG9wPjAmJnQudGltZVN0YW1wLXRoaXMubGFzdFNjcm9sbFRvVXBwZXJUaW1lPjIwMCYmKHRoaXMuJHRyaWdnZXIoInNjcm9sbHRvdXBwZXIiLHQse2RpcmVjdGlvbjoidG9wIn0pLHRoaXMubGFzdFNjcm9sbFRvVXBwZXJUaW1lPXQudGltZVN0YW1wKSxlLnNjcm9sbFRvcCtlLm9mZnNldEhlaWdodCt0aGlzLmxvd2VyVGhyZXNob2xkTnVtYmVyPj1lLnNjcm9sbEhlaWdodCYmdGhpcy5sYXN0U2Nyb2xsVG9wLWUuc2Nyb2xsVG9wPDAmJnQudGltZVN0YW1wLXRoaXMubGFzdFNjcm9sbFRvTG93ZXJUaW1lPjIwMCYmKHRoaXMuJHRyaWdnZXIoInNjcm9sbHRvbG93ZXIiLHQse2RpcmVjdGlvbjoiYm90dG9tIn0pLHRoaXMubGFzdFNjcm9sbFRvTG93ZXJUaW1lPXQudGltZVN0YW1wKSksdGhpcy5zY3JvbGxYJiYoZS5zY3JvbGxMZWZ0PD10aGlzLnVwcGVyVGhyZXNob2xkTnVtYmVyJiZ0aGlzLmxhc3RTY3JvbGxMZWZ0LWUuc2Nyb2xsTGVmdD4wJiZ0LnRpbWVTdGFtcC10aGlzLmxhc3RTY3JvbGxUb1VwcGVyVGltZT4yMDAmJih0aGlzLiR0cmlnZ2VyKCJzY3JvbGx0b3VwcGVyIix0LHtkaXJlY3Rpb246ImxlZnQifSksdGhpcy5sYXN0U2Nyb2xsVG9VcHBlclRpbWU9dC50aW1lU3RhbXApLGUuc2Nyb2xsTGVmdCtlLm9mZnNldFdpZHRoK3RoaXMubG93ZXJUaHJlc2hvbGROdW1iZXI+PWUuc2Nyb2xsV2lkdGgmJnRoaXMubGFzdFNjcm9sbExlZnQtZS5zY3JvbGxMZWZ0PDAmJnQudGltZVN0YW1wLXRoaXMubGFzdFNjcm9sbFRvTG93ZXJUaW1lPjIwMCYmKHRoaXMuJHRyaWdnZXIoInNjcm9sbHRvbG93ZXIiLHQse2RpcmVjdGlvbjoicmlnaHQifSksdGhpcy5sYXN0U2Nyb2xsVG9Mb3dlclRpbWU9dC50aW1lU3RhbXApKSx0aGlzLmxhc3RTY3JvbGxUb3A9ZS5zY3JvbGxUb3AsdGhpcy5sYXN0U2Nyb2xsTGVmdD1lLnNjcm9sbExlZnR9LF9zY3JvbGxUb3BDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuc2Nyb2xsWSYmKHRoaXMuX2lubmVyU2V0U2Nyb2xsVG9wP3RoaXMuX2lubmVyU2V0U2Nyb2xsVG9wPSExOnRoaXMuc2Nyb2xsV2l0aEFuaW1hdGlvbj90aGlzLnNjcm9sbFRvKHQsInkiKTp0aGlzLiRyZWZzLm1haW4uc2Nyb2xsVG9wPXQpfSxfc2Nyb2xsTGVmdENoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5zY3JvbGxYJiYodGhpcy5faW5uZXJTZXRTY3JvbGxMZWZ0P3RoaXMuX2lubmVyU2V0U2Nyb2xsTGVmdD0hMTp0aGlzLnNjcm9sbFdpdGhBbmltYXRpb24/dGhpcy5zY3JvbGxUbyh0LCJ4Iik6dGhpcy4kcmVmcy5tYWluLnNjcm9sbExlZnQ9dCl9LF9zY3JvbGxJbnRvVmlld0NoYW5nZWQ6ZnVuY3Rpb24oZSl7aWYoZSl7aWYoIS9eW19hLXpBLVpdWy1fYS16QS1aMC05Ol0qJC8udGVzdChlKSlyZXR1cm4gdm9pZCB0LmVycm9yKCJpZCBlcnJvcjogc2Nyb2xsLWludG8tdmlldz0iLmNvbmNhdChlKSk7dmFyIG49dGhpcy4kZWwucXVlcnlTZWxlY3RvcigiIyIrZSk7aWYobil7dmFyIHI9dGhpcy4kcmVmcy5tYWluLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZih0aGlzLnNjcm9sbFgpe3ZhciBvPWkubGVmdC1yLmxlZnQsYT10aGlzLiRyZWZzLm1haW4uc2Nyb2xsTGVmdCxzPWErbzt0aGlzLnNjcm9sbFdpdGhBbmltYXRpb24/dGhpcy5zY3JvbGxUbyhzLCJ4Iik6dGhpcy4kcmVmcy5tYWluLnNjcm9sbExlZnQ9c31pZih0aGlzLnNjcm9sbFkpe3ZhciBjPWkudG9wLXIudG9wLHU9dGhpcy4kcmVmcy5tYWluLnNjcm9sbFRvcCxsPXUrYzt0aGlzLnNjcm9sbFdpdGhBbmltYXRpb24/dGhpcy5zY3JvbGxUbyhsLCJ5Iik6dGhpcy4kcmVmcy5tYWluLnNjcm9sbFRvcD1sfX19fSxfdHJhbnNpdGlvbkVuZDpmdW5jdGlvbih0LGUpe3RoaXMuJHJlZnMuY29udGVudC5zdHlsZS50cmFuc2l0aW9uPSIiLHRoaXMuJHJlZnMuY29udGVudC5zdHlsZS53ZWJraXRUcmFuc2l0aW9uPSIiLHRoaXMuJHJlZnMuY29udGVudC5zdHlsZS50cmFuc2Zvcm09IiIsdGhpcy4kcmVmcy5jb250ZW50LnN0eWxlLndlYmtpdFRyYW5zZm9ybT0iIjt2YXIgbj10aGlzLiRyZWZzLm1haW47IngiPT09ZT8obi5zdHlsZS5vdmVyZmxvd1g9dGhpcy5zY3JvbGxYPyJhdXRvIjoiaGlkZGVuIixuLnNjcm9sbExlZnQ9dCk6InkiPT09ZSYmKG4uc3R5bGUub3ZlcmZsb3dZPXRoaXMuc2Nyb2xsWT8iYXV0byI6ImhpZGRlbiIsbi5zY3JvbGxUb3A9dCksdGhpcy4kcmVmcy5jb250ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLHRoaXMuX190cmFuc2l0aW9uRW5kKSx0aGlzLiRyZWZzLmNvbnRlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsdGhpcy5fX3RyYW5zaXRpb25FbmQpfSxfc2V0UmVmcmVzaFN0YXRlOmZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlInJlZnJlc2hpbmciOnRoaXMucmVmcmVzaGVySGVpZ2h0PXRoaXMucmVmcmVzaGVyVGhyZXNob2xkLHRoaXMuYmVmb3JlUmVmcmVzaGluZ3x8KHRoaXMuYmVmb3JlUmVmcmVzaGluZz0hMCx0aGlzLiR0cmlnZ2VyKCJyZWZyZXNoZXJyZWZyZXNoIix7fSx7fSkpO2JyZWFrO2Nhc2UicmVzdG9yZSI6Y2FzZSJyZWZyZXNoZXJhYm9ydCI6dGhpcy5iZWZvcmVSZWZyZXNoaW5nPSExLHRoaXMucmVmcmVzaGVySGVpZ2h0PXRoaXMudG9VcHBlck51bWJlcj0wLCJyZXN0b3JlIj09PXQmJih0aGlzLnRyaWdnZXJBYm9ydD0hMSx0aGlzLiR0cmlnZ2VyKCJyZWZyZXNoZXJyZXN0b3JlIix7fSx7fSkpLCJyZWZyZXNoZXJhYm9ydCI9PT10JiZ0aGlzLnRyaWdnZXJBYm9ydCYmKHRoaXMudHJpZ2dlckFib3J0PSExLHRoaXMuJHRyaWdnZXIoInJlZnJlc2hlcmFib3J0Iix7fSx7fSkpO2JyZWFrfXRoaXMucmVmcmVzaFN0YXRlPXR9LGdldFNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy4kcmVmcy5tYWluO3JldHVybntzY3JvbGxMZWZ0OnQuc2Nyb2xsTGVmdCxzY3JvbGxUb3A6dC5zY3JvbGxUb3Asc2Nyb2xsSGVpZ2h0OnQuc2Nyb2xsSGVpZ2h0LHNjcm9sbFdpZHRoOnQuc2Nyb2xsV2lkdGh9fX19fSkuY2FsbCh0aGlzLG4oIjQxOGIiKVsiZGVmYXVsdCJdKX0sZmE5NTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXtuLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSk7dmFyIHI9bigiNDczOCIpO2Z1bmN0aW9uIGkoZSl7dmFyIG49ZS5vcHRpb25zLGk9ZS5jYWxsYmFja0lkLG89bi5mYW1pbHksYT1uLnNvdXJjZSxzPW4uZGVzYyxjPXZvaWQgMD09PXM/e306czthPWEuc3RhcnRzV2l0aCgndXJsKCInKXx8YS5zdGFydHNXaXRoKCJ1cmwoJyIpPyJ1cmwoJyIuY29uY2F0KE9iamVjdChyWyJhIl0pKGEuc3Vic3RyaW5nKDUsYS5sZW5ndGgtMikpLCInKSIpOmEuc3RhcnRzV2l0aCgidXJsKCIpPyJ1cmwoJyIuY29uY2F0KE9iamVjdChyWyJhIl0pKGEuc3Vic3RyaW5nKDQsYS5sZW5ndGgtMSkpLCInKSIpOk9iamVjdChyWyJhIl0pKGEpO3ZhciB1PWRvY3VtZW50LmZvbnRzO2lmKHUpe3ZhciBsPW5ldyBGb250RmFjZShvLGEsYyk7bC5sb2FkKCkudGhlbigoZnVuY3Rpb24oKXt1LmFkZChsKSx0LnB1Ymxpc2hIYW5kbGVyKCJvbkxvYWRGb250RmFjZUNhbGxiYWNrIix7Y2FsbGJhY2tJZDppLGRhdGE6e2Vyck1zZzoibG9hZEZvbnRGYWNlOm9rIn19KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7dC5wdWJsaXNoSGFuZGxlcigib25Mb2FkRm9udEZhY2VDYWxsYmFjayIse2NhbGxiYWNrSWQ6aSxkYXRhOntlcnJNc2c6ImxvYWRGb250RmFjZTpmYWlsICIuY29uY2F0KGUpfX0pfSkpfWVsc2V7dmFyIGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtmLmlubmVyVGV4dD0nQGZvbnQtZmFjZXtmb250LWZhbWlseToiJy5jb25jYXQobywnIjtzcmM6JykuY29uY2F0KGEsIjtmb250LXN0eWxlOiIpLmNvbmNhdChjLnN0eWxlLCI7Zm9udC13ZWlnaHQ6IikuY29uY2F0KGMud2VpZ2h0LCI7Zm9udC1zdHJldGNoOiIpLmNvbmNhdChjLnN0cmV0Y2gsIjt1bmljb2RlLXJhbmdlOiIpLmNvbmNhdChjLnVuaWNvZGVSYW5nZSwiO2ZvbnQtdmFyaWFudDoiKS5jb25jYXQoYy52YXJpYW50LCI7Zm9udC1mZWF0dXJlLXNldHRpbmdzOiIpLmNvbmNhdChjLmZlYXR1cmVTZXR0aW5ncywiO30iKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGYpLHQucHVibGlzaEhhbmRsZXIoIm9uTG9hZEZvbnRGYWNlQ2FsbGJhY2siLHtjYWxsYmFja0lkOmksZGF0YTp7ZXJyTXNnOiJsb2FkRm9udEZhY2U6b2sifX0pfX19KS5jYWxsKHRoaXMsbigiMzFkMiIpKX0sZmM3YzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImI3YzkiKSxpPW4ubihyKTtpLmF9LGZkNWQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsIiRvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSksbi5kKGUsIiRvbmNlIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKSxuLmQoZSwiJG9mZiIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSksbi5kKGUsIiRlbWl0IiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKTt2YXIgcj1be25hbWU6ImV2ZW50Iix0eXBlOltTdHJpbmcsQXJyYXldLHJlcXVpcmVkOiEwfSx7bmFtZToiY2FsbGJhY2siLHR5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITB9XSxpPXIsbz1be25hbWU6ImV2ZW50Iix0eXBlOltTdHJpbmcsQXJyYXldfSx7bmFtZToiY2FsbGJhY2siLHR5cGU6RnVuY3Rpb259XSxhPVt7bmFtZToiZXZlbnQiLHR5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfV19LGZkY2Q6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksZnVuY3Rpb24odCl7bi5kKGUsImxvYWRGb250RmFjZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSk7dmFyIHI9bigiOTEzMSIpLGk9bigiNzQ1YSIpO2Z1bmN0aW9uIG8oZSxuKXt2YXIgcj1PYmplY3QoaVsiYSJdKSgpO2lmKCFyKXJldHVybntlcnJNc2c6ImxvYWRGb250RmFjZTpmYWlsIG5vdCBmb250IHBhZ2UifTt0LnB1Ymxpc2hIYW5kbGVyKCJsb2FkRm9udEZhY2UiLHtvcHRpb25zOmUsY2FsbGJhY2tJZDpufSxyKX10LnN1YnNjcmliZSgib25Mb2FkRm9udEZhY2VDYWxsYmFjayIsKGZ1bmN0aW9uKHQpe3ZhciBlPXQuY2FsbGJhY2tJZCxuPXQuZGF0YTtPYmplY3QoclsiYSJdKShlLG4pfSkpfS5jYWxsKHRoaXMsbigiMmM5ZiIpKX0sZmU2YTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgaT1uKCI5MDllIiksbz1uKCJkOTdkIiksYT1uKCJkZjVhIikscz1uKCIwYjYyIik7ZnVuY3Rpb24gYyh0KXtyZXR1cm4gYz0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT1yKFN5bWJvbC5pdGVyYXRvcik/ZnVuY3Rpb24odCl7cmV0dXJuIHIodCl9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6cih0KX0sYyh0KX1mdW5jdGlvbiB1KCl7dmFyIHQ9bmF2aWdhdG9yLnVzZXJBZ2VudCxlPS9pcGhvbmV8aXBhZHxpcG9kL2kudGVzdCh0KSxuPS9NYWNpbnRvc2h8TWFjL2kudGVzdCh0KSxyPW4mJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cz4wO3JldHVybiBlfHxyfWVbImEiXT17bmFtZToiRWRpdG9yIixtaXhpbnM6W2lbImciXSxpWyJhIl0saVsiZSJdXSxwcm9wczp7aWQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LHJlYWRPbmx5Ont0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LHNob3dJbWdTaXplOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX0sc2hvd0ltZ1Rvb2xiYXI6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSxzaG93SW1nUmVzaXplOnt0eXBlOltCb29sZWFuLFN0cmluZ10sZGVmYXVsdDohMX19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57cXVpbGxSZWFkeTohMX19LGNvbXB1dGVkOnt9LHdhdGNoOntyZWFkT25seTpmdW5jdGlvbih0KXtpZih0aGlzLnF1aWxsUmVhZHkpe3ZhciBlPXRoaXMucXVpbGw7ZS5lbmFibGUoIXQpLHR8fGUuYmx1cigpfX0scGxhY2Vob2xkZXI6ZnVuY3Rpb24odCl7dGhpcy5xdWlsbFJlYWR5JiZ0aGlzLnNldFBsYWNlSG9sZGVyKHQpfX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1bXTt0aGlzLnNob3dJbWdTaXplJiZlLnB1c2goIkRpc3BsYXlTaXplIiksdGhpcy5zaG93SW1nVG9vbGJhciYmZS5wdXNoKCJUb29sYmFyIiksdGhpcy5zaG93SW1nUmVzaXplJiZlLnB1c2goIlJlc2l6ZSIpO3ZhciBuPSJodHRwczovL3VucGtnLmNvbS9xdWlsbEAxLjMuNy9kaXN0L3F1aWxsLm1pbi5qcyI7T2JqZWN0KHNbImEiXSkod2luZG93LlF1aWxsLG4sKGZ1bmN0aW9uKCl7aWYoZS5sZW5ndGgpe3ZhciBuPSJodHRwczovL3VucGtnLmNvbS9xdWlsbC1pbWFnZS1yZXNpemUtbXBAMy4wLjEvaW1hZ2UtcmVzaXplLm1pbi5qcyI7T2JqZWN0KHNbImEiXSkod2luZG93LkltYWdlUmVzaXplLG4sKGZ1bmN0aW9uKCl7dC5pbml0UXVpbGwoZSl9KSl9ZWxzZSB0LmluaXRRdWlsbChlKX0pKX0sbWV0aG9kczp7X3RleHRDaGFuZ2VIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy4kdHJpZ2dlcigiaW5wdXQiLHt9LHRoaXMuZ2V0Q29udGVudHMoKSl9LF9oYW5kbGVTdWJzY3JpYmU6ZnVuY3Rpb24oZSl7dmFyIG4scixpLG89dGhpcyxhPWUudHlwZSxzPWUuZGF0YSx1PXMub3B0aW9ucyxsPXMuY2FsbGJhY2tJZCxmPXRoaXMucXVpbGwsZD13aW5kb3cuUXVpbGw7aWYodGhpcy5xdWlsbFJlYWR5KXtzd2l0Y2goYSl7Y2FzZSJmb3JtYXQiOnZhciBoPXUubmFtZSxwPXZvaWQgMD09PWg/IiI6aCx2PXUudmFsdWUsZz12b2lkIDAhPT12JiZ2O3I9Zi5nZXRTZWxlY3Rpb24oITApO3ZhciBtPWYuZ2V0Rm9ybWF0KHIpW3BdfHwhMTtpZihbImJvbGQiLCJpdGFsaWMiLCJ1bmRlcmxpbmUiLCJzdHJpa2UiLCJpbnMiXS5pbmNsdWRlcyhwKSlnPSFtO2Vsc2UgaWYoImRpcmVjdGlvbiI9PT1wKXtnPSgicnRsIiE9PWd8fCFtKSYmZzt2YXIgYj1mLmdldEZvcm1hdChyKS5hbGlnbjsicnRsIiE9PWd8fGI/Z3x8InJpZ2h0IiE9PWJ8fGYuZm9ybWF0KCJhbGlnbiIsITEsZC5zb3VyY2VzLlVTRVIpOmYuZm9ybWF0KCJhbGlnbiIsInJpZ2h0IixkLnNvdXJjZXMuVVNFUil9ZWxzZSBpZigiaW5kZW50Ij09PXApe3ZhciB5PSJydGwiPT09Zi5nZXRGb3JtYXQocikuZGlyZWN0aW9uO2c9IisxIj09PWcseSYmKGc9IWcpLGc9Zz8iKzEiOiItMSJ9ZWxzZSJsaXN0Ij09PXAmJihnPSJjaGVjayI9PT1nPyJ1bmNoZWNrZWQiOmcsbT0iY2hlY2tlZCI9PT1tPyJ1bmNoZWNrZWQiOm0pLGc9bSYmbSE9PShnfHwhMSl8fCFtJiZnP2c6IW07Zi5mb3JtYXQocCxnLGQuc291cmNlcy5VU0VSKTticmVhaztjYXNlImluc2VydERpdmlkZXIiOnI9Zi5nZXRTZWxlY3Rpb24oITApLGYuaW5zZXJ0VGV4dChyLmluZGV4LCJcbiIsZC5zb3VyY2VzLlVTRVIpLGYuaW5zZXJ0RW1iZWQoci5pbmRleCsxLCJkaXZpZGVyIiwhMCxkLnNvdXJjZXMuVVNFUiksZi5zZXRTZWxlY3Rpb24oci5pbmRleCsyLGQuc291cmNlcy5TSUxFTlQpO2JyZWFrO2Nhc2UiaW5zZXJ0SW1hZ2UiOnI9Zi5nZXRTZWxlY3Rpb24oITApO3ZhciBfPXUuc3JjLHc9dm9pZCAwPT09Xz8iIjpfLFM9dS5hbHQseD12b2lkIDA9PT1TPyIiOlMsaz11LndpZHRoLEM9dm9pZCAwPT09az8iIjprLFQ9dS5oZWlnaHQsTz12b2lkIDA9PT1UPyIiOlQsQT11LmV4dENsYXNzLEU9dm9pZCAwPT09QT8iIjpBLGo9dS5kYXRhLE09dm9pZCAwPT09aj97fTpqLEk9dGhpcy4kZ2V0UmVhbFBhdGgodyk7Zi5pbnNlcnRFbWJlZChyLmluZGV4LCJpbWFnZSIsSSxkLnNvdXJjZXMuU0lMRU5UKTt2YXIgUD0hIS9eKGZpbGV8YmxvYik6Ly50ZXN0KEkpJiZJO2YuZm9ybWF0VGV4dChyLmluZGV4LDEsImRhdGEtbG9jYWwiLFAsZC5zb3VyY2VzLlNJTEVOVCksZi5mb3JtYXRUZXh0KHIuaW5kZXgsMSwiYWx0Iix4LGQuc291cmNlcy5TSUxFTlQpLGYuZm9ybWF0VGV4dChyLmluZGV4LDEsIndpZHRoIixDLGQuc291cmNlcy5TSUxFTlQpLGYuZm9ybWF0VGV4dChyLmluZGV4LDEsImhlaWdodCIsTyxkLnNvdXJjZXMuU0lMRU5UKSxmLmZvcm1hdFRleHQoci5pbmRleCwxLCJjbGFzcyIsRSxkLnNvdXJjZXMuU0lMRU5UKSxmLmZvcm1hdFRleHQoci5pbmRleCwxLCJkYXRhLWN1c3RvbSIsT2JqZWN0LmtleXMoTSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4iIi5jb25jYXQodCwiPSIpLmNvbmNhdChNW3RdKX0pKS5qb2luKCImIiksZC5zb3VyY2VzLlNJTEVOVCksZi5zZXRTZWxlY3Rpb24oci5pbmRleCsxLGQuc291cmNlcy5TSUxFTlQpLGYuc2Nyb2xsSW50b1ZpZXcoKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe28uX3RleHRDaGFuZ2VIYW5kbGVyKCl9KSwxZTMpO2JyZWFrO2Nhc2UiaW5zZXJ0VGV4dCI6cj1mLmdldFNlbGVjdGlvbighMCk7dmFyICQ9dS50ZXh0LEw9dm9pZCAwPT09JD8iIjokO2YuaW5zZXJ0VGV4dChyLmluZGV4LEwsZC5zb3VyY2VzLlVTRVIpLGYuc2V0U2VsZWN0aW9uKHIuaW5kZXgrTC5sZW5ndGgsMCxkLnNvdXJjZXMuU0lMRU5UKTticmVhaztjYXNlInNldENvbnRlbnRzIjp2YXIgUj11LmRlbHRhLE49dS5odG1sOyJvYmplY3QiPT09YyhSKT9mLnNldENvbnRlbnRzKFIsZC5zb3VyY2VzLlNJTEVOVCk6InN0cmluZyI9PT10eXBlb2YgTj9mLnNldENvbnRlbnRzKHRoaXMuaHRtbDJkZWx0YShOKSxkLnNvdXJjZXMuU0lMRU5UKTppPSJjb250ZW50cyBpcyBtaXNzaW5nIjticmVhaztjYXNlImdldENvbnRlbnRzIjpuPXRoaXMuZ2V0Q29udGVudHMoKTticmVhaztjYXNlImNsZWFyIjpmLnNldENvbnRlbnRzKFtdKTticmVhaztjYXNlInJlbW92ZUZvcm1hdCI6cj1mLmdldFNlbGVjdGlvbighMCk7dmFyIEQ9ZC5pbXBvcnQoInBhcmNobWVudCIpO3IubGVuZ3RoP2YucmVtb3ZlRm9ybWF0KHIsZC5zb3VyY2VzLlVTRVIpOk9iamVjdC5rZXlzKGYuZ2V0Rm9ybWF0KHIpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtELnF1ZXJ5KHQsRC5TY29wZS5JTkxJTkUpJiZmLmZvcm1hdCh0LCExKX0pKTticmVhaztjYXNlInVuZG8iOmYuaGlzdG9yeS51bmRvKCk7YnJlYWs7Y2FzZSJyZWRvIjpmLmhpc3RvcnkucmVkbygpO2JyZWFrO2Nhc2UiYmx1ciI6Zi5ibHVyKCk7YnJlYWs7Y2FzZSJnZXRTZWxlY3Rpb25UZXh0IjpyPWYuc2VsZWN0aW9uLnNhdmVkUmFuZ2Usbj17dGV4dDoiIn0sciYmMCE9PXIubGVuZ3RoJiYobi50ZXh0PWYuZ2V0VGV4dChyLmluZGV4LHIubGVuZ3RoKSk7YnJlYWs7Y2FzZSJzY3JvbGxJbnRvVmlldyI6Zi5zY3JvbGxJbnRvVmlldygpO2JyZWFrO2RlZmF1bHQ6YnJlYWt9dGhpcy51cGRhdGVTdGF0dXMocil9ZWxzZSBpPSJub3QgcmVhZHkiO2wmJnQucHVibGlzaEhhbmRsZXIoIm9uRWRpdG9yTWV0aG9kQ2FsbGJhY2siLHtjYWxsYmFja0lkOmwsZGF0YTpPYmplY3QuYXNzaWduKHt9LG4se2Vyck1zZzoiIi5jb25jYXQoYSwiOiIpLmNvbmNhdChpPyJmYWlsICIraToib2siKX0pfSx0aGlzLiRwYWdlLmlkKX0sc2V0UGxhY2VIb2xkZXI6ZnVuY3Rpb24odCl7dmFyIGU9ImRhdGEtcGxhY2Vob2xkZXIiLG49dGhpcy5xdWlsbC5yb290O24uZ2V0QXR0cmlidXRlKGUpIT09dCYmbi5zZXRBdHRyaWJ1dGUoZSx0KX0saW5pdFF1aWxsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj13aW5kb3cuUXVpbGw7YVsiYSJdKG4pO3ZhciByPXt0b29sYmFyOiExLHJlYWRPbmx5OnRoaXMucmVhZE9ubHkscGxhY2Vob2xkZXI6dGhpcy5wbGFjZWhvbGRlcixtb2R1bGVzOnt9fTt0Lmxlbmd0aCYmKG4ucmVnaXN0ZXIoIm1vZHVsZXMvSW1hZ2VSZXNpemUiLHdpbmRvdy5JbWFnZVJlc2l6ZS5kZWZhdWx0KSxyLm1vZHVsZXMuSW1hZ2VSZXNpemU9e21vZHVsZXM6dH0pO3ZhciBpPXRoaXMucXVpbGw9bmV3IG4odGhpcy4kZWwsciksbz1pLnJvb3Qscz1bImZvY3VzIiwiYmx1ciIsImlucHV0Il07cy5mb3JFYWNoKChmdW5jdGlvbih0KXtvLmFkZEV2ZW50TGlzdGVuZXIodCwoZnVuY3Rpb24obil7dmFyIHI9ZS5nZXRDb250ZW50cygpO2lmKCJpbnB1dCI9PT10KXtpZih1KCkpe3ZhciBpPShyLmh0bWwubWF0Y2goLzxzcGFuIFtcc1xTXSo+KFtcc1xTXSopPFwvc3Bhbj4vKXx8W10pWzFdLG89aSYmaS5yZXBsYWNlKC9ccy9nLCIiKT8iIjplLnBsYWNlaG9sZGVyO2Uuc2V0UGxhY2VIb2xkZXIobyl9bi5zdG9wUHJvcGFnYXRpb24oKX1lbHNlIGUuJHRyaWdnZXIodCxuLHIpfSkpfSkpLGkub24obi5ldmVudHMuVEVYVF9DSEFOR0UsdGhpcy5fdGV4dENoYW5nZUhhbmRsZXIpLGkub24obi5ldmVudHMuU0VMRUNUSU9OX0NIQU5HRSx0aGlzLnVwZGF0ZVN0YXR1cy5iaW5kKHRoaXMpKSxpLm9uKG4uZXZlbnRzLlNDUk9MTF9PUFRJTUlaRSwoZnVuY3Rpb24oKXt2YXIgdD1pLnNlbGVjdGlvbi5nZXRSYW5nZSgpWzBdO2UudXBkYXRlU3RhdHVzKHQpfSkpLGkuY2xpcGJvYXJkLmFkZE1hdGNoZXIoTm9kZS5FTEVNRU5UX05PREUsKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuc2tpcE1hdGNoZXJ8fChuLm9wcz1uLm9wcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5zZXJ0O3JldHVybiJzdHJpbmciPT09dHlwZW9mIGV9KSkubWFwKChmdW5jdGlvbih0KXt2YXIgZT10Lmluc2VydDtyZXR1cm57aW5zZXJ0OmV9fSkpKSxufSkpLHRoaXMuaW5pdEtleWJvYXJkKG8pLHRoaXMucXVpbGxSZWFkeT0hMCx0aGlzLiR0cmlnZ2VyKCJyZWFkeSIsZXZlbnQse30pfSxnZXRDb250ZW50czpmdW5jdGlvbigpe3ZhciB0PXRoaXMucXVpbGwsZT10LnJvb3QuaW5uZXJIVE1MLG49dC5nZXRUZXh0KCkscj10LmdldENvbnRlbnRzKCk7cmV0dXJue2h0bWw6ZSx0ZXh0Om4sZGVsdGE6cn19LGh0bWwyZGVsdGE6ZnVuY3Rpb24odCl7dmFyIGUsbj1bInNwYW4iLCJzdHJvbmciLCJiIiwiaW5zIiwiZW0iLCJpIiwidSIsImEiLCJkZWwiLCJzIiwic3ViIiwic3VwIiwiaW1nIiwiZGl2IiwicCIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhyIiwib2wiLCJ1bCIsImxpIiwiYnIiXSxyPSIiO09iamVjdChvWyJhIl0pKHQse3N0YXJ0OmZ1bmN0aW9uKHQsaSxvKXtpZihuLmluY2x1ZGVzKHQpKXtlPSExO3ZhciBhPWkubWFwKChmdW5jdGlvbih0KXt2YXIgZT10Lm5hbWUsbj10LnZhbHVlO3JldHVybiIiLmNvbmNhdChlLCc9IicpLmNvbmNhdChuLCciJyl9KSkuam9pbigiICIpLHM9IjwiLmNvbmNhdCh0LCIgIikuY29uY2F0KGEsIiAiKS5jb25jYXQobz8iLyI6IiIsIj4iKTtyKz1zfWVsc2UgZT0hb30sZW5kOmZ1bmN0aW9uKHQpe2V8fChyKz0iPC8iLmNvbmNhdCh0LCI+IikpfSxjaGFyczpmdW5jdGlvbih0KXtlfHwocis9dCl9fSksdGhpcy5za2lwTWF0Y2hlcj0hMDt2YXIgaT10aGlzLnF1aWxsLmNsaXBib2FyZC5jb252ZXJ0KHIpO3JldHVybiB0aGlzLnNraXBNYXRjaGVyPSExLGl9LHVwZGF0ZVN0YXR1czpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dD90aGlzLnF1aWxsLmdldEZvcm1hdCh0KTp7fSxyPU9iamVjdC5rZXlzKG4pOyhyLmxlbmd0aCE9PU9iamVjdC5rZXlzKHRoaXMuX19zdGF0dXN8fHt9KS5sZW5ndGh8fHIuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIG5bdF0hPT1lLl9fc3RhdHVzW3RdfSkpKSYmKHRoaXMuX19zdGF0dXM9bix0aGlzLiR0cmlnZ2VyKCJzdGF0dXNjaGFuZ2UiLHt9LG4pKX19fX0pLmNhbGwodGhpcyxuKCIzMWQyIikpfSxmZjVkOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuJGNyZWF0ZUVsZW1lbnQsbj10Ll9zZWxmLl9jfHxlO3JldHVybiBuKCJ1bmktY292ZXItaW1hZ2UiLHQuX2coe2F0dHJzOntzcmM6dC5zcmN9fSx0LiRsaXN0ZW5lcnMpLFtuKCJkaXYiLHtzdGF0aWNDbGFzczoidW5pLWNvdmVyLWltYWdlIn0sW3Quc3JjP24oImltZyIse2F0dHJzOntzcmM6dC4kZ2V0UmVhbFBhdGgodC5zcmMpfSxvbjp7bG9hZDp0Ll9sb2FkLGVycm9yOnQuX2Vycm9yfX0pOnQuX2UoKV0pXSl9LGk9W10sbz17bmFtZToiQ292ZXJJbWFnZSIscHJvcHM6e3NyYzp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn19LG1ldGhvZHM6e19sb2FkOmZ1bmN0aW9uKHQpe3RoaXMuJHRyaWdnZXIoImxvYWQiLHQpfSxfZXJyb3I6ZnVuY3Rpb24odCl7dGhpcy4kdHJpZ2dlcigiZXJyb3IiLHQpfX19LGE9byxzPShuKCIzZDhmIiksbigiODg0NCIpKSxjPU9iamVjdChzWyJhIl0pKGEscixpLCExLG51bGwsbnVsbCxudWxsKTtlWyJkZWZhdWx0Il09Yy5leHBvcnRzfX0pfSkpfSkuY2FsbCh0aGlzLG4oIjYyZTQiKSh0KSl9LCIxYzU5IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjZkNjEiKSxpPW4oIjY1NjYiKTtyKCJTZXQiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSksaSl9LCIxYzdlIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImI2MjIiKSxpPXIoIml0ZXJhdG9yIiksbz0hMTt0cnl7dmFyIGE9MCxzPXtuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ISFhKyt9fSxyZXR1cm46ZnVuY3Rpb24oKXtvPSEwfX07c1tpXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxBcnJheS5mcm9tKHMsKGZ1bmN0aW9uKCl7dGhyb3cgMn0pKX1jYXRjaChjKXt9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dHJ5e2lmKCFlJiYhbylyZXR1cm4hMX1jYXRjaChjKXtyZXR1cm4hMX12YXIgbj0hMTt0cnl7dmFyIHI9e307cltpXT1mdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6bj0hMH19fX0sdChyKX1jYXRjaChjKXt9cmV0dXJuIG59fSwiMWQwMiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlYmI1IiksaT1uKCJhMjU4IikuZmluZExhc3RJbmRleCxvPXIuYVR5cGVkQXJyYXksYT1yLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7YSgiZmluZExhc3RJbmRleCIsKGZ1bmN0aW9uKHQpe3JldHVybiBpKG8odGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSl9LCIxZDFjIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oIjgzYWIiKSxvPW4oIjM3ZTgiKS5mO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpPYmplY3QuZGVmaW5lUHJvcGVydGllcyE9PW8sc2hhbTohaX0se2RlZmluZVByb3BlcnRpZXM6b30pfSwiMWQ4MCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI3MjM0IiksaT1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHIodCkpdGhyb3cgbmV3IGkoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIrdCk7cmV0dXJuIHR9fSwiMWRhMSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSxuLHIsaSxvLGEpe3RyeXt2YXIgcz10W29dKGEpLGM9cy52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXMuZG9uZT9lKGMpOlByb21pc2UucmVzb2x2ZShjKS50aGVuKHIsaSl9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oaSxvKXt2YXIgYT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gcyh0KXtyKGEsaSxvLHMsYywibmV4dCIsdCl9ZnVuY3Rpb24gYyh0KXtyKGEsaSxvLHMsYywidGhyb3ciLHQpfXModm9pZCAwKX0pKX19bigiN2E4MiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmRlZmF1bHQ9aSxuKCJkM2I3Iil9LCIxZGRlIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImQwMzkiKSxpPW4oImI2MjIiKSxvPW4oIjEyMTIiKSxhPWkoInNwZWNpZXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG8+PTUxfHwhcigoZnVuY3Rpb24oKXt2YXIgZT1bXSxuPWUuY29uc3RydWN0b3I9e307cmV0dXJuIG5bYV09ZnVuY3Rpb24oKXtyZXR1cm57Zm9vOjF9fSwxIT09ZVt0XShCb29sZWFuKS5mb299KSl9fSwiMWU1YSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCI5OTYxIiksbz1uKCI1MzIwIiksYT1uKCJkYWQyIikscz0hYSgic3ltbWV0cmljRGlmZmVyZW5jZSIpfHwhbygic3ltbWV0cmljRGlmZmVyZW5jZSIpO3Ioe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpzfSx7c3ltbWV0cmljRGlmZmVyZW5jZTppfSl9LCIxZTcwIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImE1ZjciKSxvPW4oImQwMzkiKSxhPW4oImRhZDIiKSxzPSFhKCJkaWZmZXJlbmNlIiwoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10LnNpemV9KSksYz1zfHxvKChmdW5jdGlvbigpe3ZhciB0PXtzaXplOjEsaGFzOmZ1bmN0aW9uKCl7cmV0dXJuITB9LGtleXM6ZnVuY3Rpb24oKXt2YXIgdD0wO3JldHVybntuZXh0OmZ1bmN0aW9uKCl7dmFyIG49dCsrPjE7cmV0dXJuIGUuaGFzKDEpJiZlLmNsZWFyKCkse2RvbmU6bix2YWx1ZToyfX19fX0sZT1uZXcgU2V0KFsxLDIsMyw0XSk7cmV0dXJuIDMhPT1lLmRpZmZlcmVuY2UodCkuc2l6ZX0pKTtyKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6Y30se2RpZmZlcmVuY2U6aX0pfSwyMDA1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNzViZCIpLGk9VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihyKHQpKXRocm93IG5ldyBpKCJBcnJheUJ1ZmZlciBpcyBkZXRhY2hlZCIpO3JldHVybiB0fX0sMjA3MzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlKXt2YXIgbixyPXRoaXMuJHBhcmVudCxpPWZ1bmN0aW9uKCl7aWYoci4kb3B0aW9ucy5uYW1lPT09dCl7dmFyIG49e307aWYoQXJyYXkuaXNBcnJheShlKSllLm1hcCgoZnVuY3Rpb24odCl7blt0XT1yW3RdP3JbdF06IiJ9KSk7ZWxzZSBmb3IodmFyIGkgaW4gZSlBcnJheS5pc0FycmF5KGVbaV0pP2VbaV0ubGVuZ3RoP25baV09ZVtpXTpuW2ldPXJbaV06ZVtpXS5jb25zdHJ1Y3Rvcj09PU9iamVjdD9PYmplY3Qua2V5cyhlW2ldKS5sZW5ndGg/bltpXT1lW2ldOm5baV09cltpXTpuW2ldPWVbaV18fCExPT09ZVtpXT9lW2ldOnJbaV07cmV0dXJue3Y6bn19cj1yLiRwYXJlbnR9O3doaWxlKHIpaWYobj1pKCksbilyZXR1cm4gbi52O3JldHVybnt9fW4oIjdhODIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXIsbigiZDgxZCIpLG4oImU5ZjUiKSxuKCJhYjQzIiksbigiYjY0YiIpLG4oImQzYjciKX0sIjIxOWMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiY2ZlOSIpLGk9bigiNDYyNSIpLG89bigiZDAzOSIpLGE9bigiNTllZCIpLHM9bigiYWRkYiIpLGM9bigiZWJiNSIpLHU9bigiM2Y3ZSIpLGw9bigiOTlmNCIpLGY9bigiMTIxMiIpLGQ9bigiZWE4MyIpLGg9Yy5hVHlwZWRBcnJheSxwPWMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCx2PXIuVWludDE2QXJyYXksZz12JiZpKHYucHJvdG90eXBlLnNvcnQpLG09ISFnJiYhKG8oKGZ1bmN0aW9uKCl7ZyhuZXcgdigyKSxudWxsKX0pKSYmbygoZnVuY3Rpb24oKXtnKG5ldyB2KDIpLHt9KX0pKSksYj0hIWcmJiFvKChmdW5jdGlvbigpe2lmKGYpcmV0dXJuIGY8NzQ7aWYodSlyZXR1cm4gdTw2NztpZihsKXJldHVybiEwO2lmKGQpcmV0dXJuIGQ8NjAyO3ZhciB0LGUsbj1uZXcgdig1MTYpLHI9QXJyYXkoNTE2KTtmb3IodD0wO3Q8NTE2O3QrKyllPXQlNCxuW3RdPTUxNS10LHJbdF09dC0yKmUrMztmb3IoZyhuLChmdW5jdGlvbih0LGUpe3JldHVybih0LzR8MCktKGUvNHwwKX0pKSx0PTA7dDw1MTY7dCsrKWlmKG5bdF0hPT1yW3RdKXJldHVybiEwfSkpLHk9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIHZvaWQgMCE9PXQ/K3QoZSxuKXx8MDpuIT09bj8tMTplIT09ZT8xOjA9PT1lJiYwPT09bj8xL2U+MCYmMS9uPDA/MTotMTplPm59fTtwKCJzb3J0IiwoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJmEodCksYj9nKHRoaXMsdCk6cyhoKHRoaXMpLHkodCkpfSksIWJ8fG0pfSwyMjY2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMDM2NiIpLGk9bigiYzY1YiIpLG89bigiODI1YSIpLGE9bigiMGQ1MSIpLHM9bigiZTk1YSIpLGM9bigiMDdmYSIpLHU9bigiM2E5YiIpLGw9bigiOWExZiIpLGY9bigiMzVhMSIpLGQ9bigiMmE2MiIpLGg9VHlwZUVycm9yLHA9ZnVuY3Rpb24odCxlKXt0aGlzLnN0b3BwZWQ9dCx0aGlzLnJlc3VsdD1lfSx2PXAucHJvdG90eXBlO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIGcsbSxiLHksXyx3LFMseD1uJiZuLnRoYXQsaz0hKCFufHwhbi5BU19FTlRSSUVTKSxDPSEoIW58fCFuLklTX1JFQ09SRCksVD0hKCFufHwhbi5JU19JVEVSQVRPUiksTz0hKCFufHwhbi5JTlRFUlJVUFRFRCksQT1yKGUseCksRT1mdW5jdGlvbih0KXtyZXR1cm4gZyYmZChnLCJub3JtYWwiKSxuZXcgcCghMCx0KX0saj1mdW5jdGlvbih0KXtyZXR1cm4gaz8obyh0KSxPP0EodFswXSx0WzFdLEUpOkEodFswXSx0WzFdKSk6Tz9BKHQsRSk6QSh0KX07aWYoQylnPXQuaXRlcmF0b3I7ZWxzZSBpZihUKWc9dDtlbHNle2lmKG09Zih0KSwhbSl0aHJvdyBuZXcgaChhKHQpKyIgaXMgbm90IGl0ZXJhYmxlIik7aWYocyhtKSl7Zm9yKGI9MCx5PWModCk7eT5iO2IrKylpZihfPWoodFtiXSksXyYmdSh2LF8pKXJldHVybiBfO3JldHVybiBuZXcgcCghMSl9Zz1sKHQsbSl9dz1DP3QubmV4dDpnLm5leHQ7d2hpbGUoIShTPWkodyxnKSkuZG9uZSl7dHJ5e189aihTLnZhbHVlKX1jYXRjaChNKXtkKGcsInRocm93IixNKX1pZigib2JqZWN0Ij09dHlwZW9mIF8mJl8mJnUodixfKSlyZXR1cm4gX31yZXR1cm4gbmV3IHAoITEpfX0sIjIzY2IiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNTkyNiIpLGk9TWF0aC5tYXgsbz1NYXRoLm1pbjt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj1yKHQpO3JldHVybiBuPDA/aShuK2UsMCk6byhuLGUpfX0sIjIzZGMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZDQ0ZSIpO3IoTWF0aCwiTWF0aCIsITApfSwiMjNlNyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjZmU5IiksaT1uKCIwNmNmIikuZixvPW4oIjkxMTIiKSxhPW4oImNiMmQiKSxzPW4oIjYzNzQiKSxjPW4oImU4OTMiKSx1PW4oIjk0Y2EiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbixsLGYsZCxoLHAsdj10LnRhcmdldCxnPXQuZ2xvYmFsLG09dC5zdGF0O2lmKGw9Zz9yOm0/clt2XXx8cyh2LHt9KTpyW3ZdJiZyW3ZdLnByb3RvdHlwZSxsKWZvcihmIGluIGUpe2lmKGg9ZVtmXSx0LmRvbnRDYWxsR2V0U2V0PyhwPWkobCxmKSxkPXAmJnAudmFsdWUpOmQ9bFtmXSxuPXUoZz9mOnYrKG0/Ii4iOiIjIikrZix0LmZvcmNlZCksIW4mJnZvaWQgMCE9PWQpe2lmKHR5cGVvZiBoPT10eXBlb2YgZCljb250aW51ZTtjKGgsZCl9KHQuc2hhbXx8ZCYmZC5zaGFtKSYmbyhoLCJzaGFtIiwhMCksYShsLGYsaCx0KX19fSwiMjQxYyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjYTg0IiksaT1uKCI3ODM5Iiksbz1pLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7ZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbih0KXtyZXR1cm4gcih0LG8pfX0sIjI0OWQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiNDFmNiIpO2kmJnIoe3RhcmdldDoiQXJyYXlCdWZmZXIiLHByb3RvOiEwfSx7dHJhbnNmZXI6ZnVuY3Rpb24oKXtyZXR1cm4gaSh0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCwhMCl9fSl9LCIyNGZiIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlKXt2YXIgbj10WzFdfHwiIixyPXRbM107aWYoIXIpcmV0dXJuIG47aWYoZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBidG9hKXt2YXIgbz1pKHIpLGE9ci5zb3VyY2VzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIi8qIyBzb3VyY2VVUkw9Ii5jb25jYXQoci5zb3VyY2VSb290fHwiIikuY29uY2F0KHQsIiAqLyIpfSkpO3JldHVybltuXS5jb25jYXQoYSkuY29uY2F0KFtvXSkuam9pbigiXG4iKX1yZXR1cm5bbl0uam9pbigiXG4iKX1mdW5jdGlvbiBpKHQpe3ZhciBlPWJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHQpKSkpLG49InNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCIuY29uY2F0KGUpO3JldHVybiIvKiMgIi5jb25jYXQobiwiICovIil9dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKChmdW5jdGlvbihlKXt2YXIgbj1yKGUsdCk7cmV0dXJuIGVbMl0/IkBtZWRpYSAiLmNvbmNhdChlWzJdLCIgeyIpLmNvbmNhdChuLCJ9Iik6bn0pKS5qb2luKCIiKX0sZS5pPWZ1bmN0aW9uKHQsbixyKXsic3RyaW5nIj09PXR5cGVvZiB0JiYodD1bW251bGwsdCwiIl1dKTt2YXIgaT17fTtpZihyKWZvcih2YXIgbz0wO288dGhpcy5sZW5ndGg7bysrKXt2YXIgYT10aGlzW29dWzBdO251bGwhPWEmJihpW2FdPSEwKX1mb3IodmFyIHM9MDtzPHQubGVuZ3RoO3MrKyl7dmFyIGM9W10uY29uY2F0KHRbc10pO3ImJmlbY1swXV18fChuJiYoY1syXT9jWzJdPSIiLmNvbmNhdChuLCIgYW5kICIpLmNvbmNhdChjWzJdKTpjWzJdPW4pLGUucHVzaChjKSl9fSxlfX0sMjUzMjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImUzMzAiKSxvPW4oIjVhMzQiKSxhPW4oIjFkODAiKSxzPW4oIjU3N2UiKSxjPW4oImFiMTMiKSx1PWkoIiIuaW5kZXhPZik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohYygiaW5jbHVkZXMiKX0se2luY2x1ZGVzOmZ1bmN0aW9uKHQpe3JldHVybiEhfnUocyhhKHRoaXMpKSxzKG8odCkpLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sIjI1YTEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZWJiNSIpLGk9bigiZDU4ZiIpLnJpZ2h0LG89ci5hVHlwZWRBcnJheSxhPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDthKCJyZWR1Y2VSaWdodCIsKGZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIGkobyh0aGlzKSx0LGUsZT4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpfSwiMjVlOSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIik7dmFyIHI9bigiNGVhNCIpLmRlZmF1bHQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD1vLG4oIjk5YWYiKTt2YXIgaT1yKG4oImY2YTciKSk7ZnVuY3Rpb24gbygpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiYXV0byIsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06InJweCI7cmV0dXJuIHQ9U3RyaW5nKHQpLGkuZGVmYXVsdC5udW1iZXIodCk/IiIuY29uY2F0KHQpLmNvbmNhdChlKTp0fX0sIjI1ZjAiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNWU3NyIpLlBST1BFUixpPW4oImNiMmQiKSxvPW4oIjgyNWEiKSxhPW4oIjU3N2UiKSxzPW4oImQwMzkiKSxjPW4oIjkwZDgiKSx1PSJ0b1N0cmluZyIsbD1SZWdFeHAucHJvdG90eXBlLGY9bFt1XSxkPXMoKGZ1bmN0aW9uKCl7cmV0dXJuIi9hL2IiIT09Zi5jYWxsKHtzb3VyY2U6ImEiLGZsYWdzOiJiIn0pfSkpLGg9ciYmZi5uYW1lIT09dTsoZHx8aCkmJmkobCx1LChmdW5jdGlvbigpe3ZhciB0PW8odGhpcyksZT1hKHQuc291cmNlKSxuPWEoYyh0KSk7cmV0dXJuIi8iK2UrIi8iK259KSx7dW5zYWZlOiEwfSl9LDI2MjY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkMDY2IiksaT1uKCJlZGQwIiksbz1uKCJiNjIyIiksYT1uKCI4M2FiIikscz1vKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCk7YSYmZSYmIWVbc10mJmkoZSxzLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9fSwiMjZjYiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24oZSl7Ci8qIQogKiB2dWV4IHYzLjYuMgogKiAoYykgMjAyMSBFdmFuIFlvdQogKiBAbGljZW5zZSBNSVQKICovCmZ1bmN0aW9uIG4odCl7dmFyIGU9TnVtYmVyKHQudmVyc2lvbi5zcGxpdCgiLiIpWzBdKTtpZihlPj0yKXQubWl4aW4oe2JlZm9yZUNyZWF0ZTpyfSk7ZWxzZXt2YXIgbj10LnByb3RvdHlwZS5faW5pdDt0LnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD17fSksdC5pbml0PXQuaW5pdD9bcl0uY29uY2F0KHQuaW5pdCk6cixuLmNhbGwodGhpcyx0KX19ZnVuY3Rpb24gcigpe3ZhciB0PXRoaXMuJG9wdGlvbnM7dC5zdG9yZT90aGlzLiRzdG9yZT0iZnVuY3Rpb24iPT09dHlwZW9mIHQuc3RvcmU/dC5zdG9yZSgpOnQuc3RvcmU6dC5wYXJlbnQmJnQucGFyZW50LiRzdG9yZSYmKHRoaXMuJHN0b3JlPXQucGFyZW50LiRzdG9yZSl9fXZhciByPSJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPT10eXBlb2YgZT9lOnt9LGk9ci5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO2Z1bmN0aW9uIG8odCl7aSYmKHQuX2RldnRvb2xIb29rPWksaS5lbWl0KCJ2dWV4OmluaXQiLHQpLGkub24oInZ1ZXg6dHJhdmVsLXRvLXN0YXRlIiwoZnVuY3Rpb24oZSl7dC5yZXBsYWNlU3RhdGUoZSl9KSksdC5zdWJzY3JpYmUoKGZ1bmN0aW9uKHQsZSl7aS5lbWl0KCJ2dWV4Om11dGF0aW9uIix0LGUpfSkse3ByZXBlbmQ6ITB9KSx0LnN1YnNjcmliZUFjdGlvbigoZnVuY3Rpb24odCxlKXtpLmVtaXQoInZ1ZXg6YWN0aW9uIix0LGUpfSkse3ByZXBlbmQ6ITB9KSl9ZnVuY3Rpb24gYSh0LGUpe3JldHVybiB0LmZpbHRlcihlKVswXX1mdW5jdGlvbiBzKHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9W10pLG51bGw9PT10fHwib2JqZWN0IiE9PXR5cGVvZiB0KXJldHVybiB0O3ZhciBuPWEoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUub3JpZ2luYWw9PT10fSkpO2lmKG4pcmV0dXJuIG4uY29weTt2YXIgcj1BcnJheS5pc0FycmF5KHQpP1tdOnt9O3JldHVybiBlLnB1c2goe29yaWdpbmFsOnQsY29weTpyfSksT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7cltuXT1zKHRbbl0sZSl9KSkscn1mdW5jdGlvbiBjKHQsZSl7T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7cmV0dXJuIGUodFtuXSxuKX0pKX1mdW5jdGlvbiB1KHQpe3JldHVybiBudWxsIT09dCYmIm9iamVjdCI9PT10eXBlb2YgdH1mdW5jdGlvbiBsKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT09dHlwZW9mIHQudGhlbn1mdW5jdGlvbiBmKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQoZSl9fXZhciBkPWZ1bmN0aW9uKHQsZSl7dGhpcy5ydW50aW1lPWUsdGhpcy5fY2hpbGRyZW49T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9yYXdNb2R1bGU9dDt2YXIgbj10LnN0YXRlO3RoaXMuc3RhdGU9KCJmdW5jdGlvbiI9PT10eXBlb2Ygbj9uKCk6bil8fHt9fSxoPXtuYW1lc3BhY2VkOntjb25maWd1cmFibGU6ITB9fTtoLm5hbWVzcGFjZWQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9yYXdNb2R1bGUubmFtZXNwYWNlZH0sZC5wcm90b3R5cGUuYWRkQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0aGlzLl9jaGlsZHJlblt0XT1lfSxkLnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbih0KXtkZWxldGUgdGhpcy5fY2hpbGRyZW5bdF19LGQucHJvdG90eXBlLmdldENoaWxkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jaGlsZHJlblt0XX0sZC5wcm90b3R5cGUuaGFzQ2hpbGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gdGhpcy5fY2hpbGRyZW59LGQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9yYXdNb2R1bGUubmFtZXNwYWNlZD10Lm5hbWVzcGFjZWQsdC5hY3Rpb25zJiYodGhpcy5fcmF3TW9kdWxlLmFjdGlvbnM9dC5hY3Rpb25zKSx0Lm11dGF0aW9ucyYmKHRoaXMuX3Jhd01vZHVsZS5tdXRhdGlvbnM9dC5tdXRhdGlvbnMpLHQuZ2V0dGVycyYmKHRoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzPXQuZ2V0dGVycyl9LGQucHJvdG90eXBlLmZvckVhY2hDaGlsZD1mdW5jdGlvbih0KXtjKHRoaXMuX2NoaWxkcmVuLHQpfSxkLnByb3RvdHlwZS5mb3JFYWNoR2V0dGVyPWZ1bmN0aW9uKHQpe3RoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzJiZjKHRoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzLHQpfSxkLnByb3RvdHlwZS5mb3JFYWNoQWN0aW9uPWZ1bmN0aW9uKHQpe3RoaXMuX3Jhd01vZHVsZS5hY3Rpb25zJiZjKHRoaXMuX3Jhd01vZHVsZS5hY3Rpb25zLHQpfSxkLnByb3RvdHlwZS5mb3JFYWNoTXV0YXRpb249ZnVuY3Rpb24odCl7dGhpcy5fcmF3TW9kdWxlLm11dGF0aW9ucyYmYyh0aGlzLl9yYXdNb2R1bGUubXV0YXRpb25zLHQpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLnByb3RvdHlwZSxoKTt2YXIgcD1mdW5jdGlvbih0KXt0aGlzLnJlZ2lzdGVyKFtdLHQsITEpfTtmdW5jdGlvbiB2KHQsZSxuKXtpZihlLnVwZGF0ZShuKSxuLm1vZHVsZXMpZm9yKHZhciByIGluIG4ubW9kdWxlcyl7aWYoIWUuZ2V0Q2hpbGQocikpcmV0dXJuIHZvaWQgMDt2KHQuY29uY2F0KHIpLGUuZ2V0Q2hpbGQociksbi5tb2R1bGVzW3JdKX19cC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5nZXRDaGlsZChlKX0pLHRoaXMucm9vdCl9LHAucHJvdG90eXBlLmdldE5hbWVzcGFjZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnJvb3Q7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LG4pe3JldHVybiBlPWUuZ2V0Q2hpbGQobiksdCsoZS5uYW1lc3BhY2VkP24rIi8iOiIiKX0pLCIiKX0scC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe3YoW10sdGhpcy5yb290LHQpfSxwLnByb3RvdHlwZS5yZWdpc3Rlcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpczt2b2lkIDA9PT1uJiYobj0hMCk7dmFyIGk9bmV3IGQoZSxuKTtpZigwPT09dC5sZW5ndGgpdGhpcy5yb290PWk7ZWxzZXt2YXIgbz10aGlzLmdldCh0LnNsaWNlKDAsLTEpKTtvLmFkZENoaWxkKHRbdC5sZW5ndGgtMV0saSl9ZS5tb2R1bGVzJiZjKGUubW9kdWxlcywoZnVuY3Rpb24oZSxpKXtyLnJlZ2lzdGVyKHQuY29uY2F0KGkpLGUsbil9KSl9LHAucHJvdG90eXBlLnVucmVnaXN0ZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXQodC5zbGljZSgwLC0xKSksbj10W3QubGVuZ3RoLTFdLHI9ZS5nZXRDaGlsZChuKTtyJiZyLnJ1bnRpbWUmJmUucmVtb3ZlQ2hpbGQobil9LHAucHJvdG90eXBlLmlzUmVnaXN0ZXJlZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldCh0LnNsaWNlKDAsLTEpKSxuPXRbdC5sZW5ndGgtMV07cmV0dXJuISFlJiZlLmhhc0NoaWxkKG4pfTt2YXIgZzt2YXIgbT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3ZvaWQgMD09PXQmJih0PXt9KSwhZyYmInVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuVnVlJiZNKHdpbmRvdy5WdWUpO3ZhciBuPXQucGx1Z2luczt2b2lkIDA9PT1uJiYobj1bXSk7dmFyIHI9dC5zdHJpY3Q7dm9pZCAwPT09ciYmKHI9ITEpLHRoaXMuX2NvbW1pdHRpbmc9ITEsdGhpcy5fYWN0aW9ucz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2FjdGlvblN1YnNjcmliZXJzPVtdLHRoaXMuX211dGF0aW9ucz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX3dyYXBwZWRHZXR0ZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fbW9kdWxlcz1uZXcgcCh0KSx0aGlzLl9tb2R1bGVzTmFtZXNwYWNlTWFwPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fc3Vic2NyaWJlcnM9W10sdGhpcy5fd2F0Y2hlclZNPW5ldyBnLHRoaXMuX21ha2VMb2NhbEdldHRlcnNDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3ZhciBpPXRoaXMsYT10aGlzLHM9YS5kaXNwYXRjaCxjPWEuY29tbWl0O3RoaXMuZGlzcGF0Y2g9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcy5jYWxsKGksdCxlKX0sdGhpcy5jb21taXQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBjLmNhbGwoaSx0LGUsbil9LHRoaXMuc3RyaWN0PXI7dmFyIHU9dGhpcy5fbW9kdWxlcy5yb290LnN0YXRlO1ModGhpcyx1LFtdLHRoaXMuX21vZHVsZXMucm9vdCksdyh0aGlzLHUpLG4uZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQoZSl9KSk7dmFyIGw9dm9pZCAwIT09dC5kZXZ0b29scz90LmRldnRvb2xzOmcuY29uZmlnLmRldnRvb2xzO2wmJm8odGhpcyl9LGI9e3N0YXRlOntjb25maWd1cmFibGU6ITB9fTtmdW5jdGlvbiB5KHQsZSxuKXtyZXR1cm4gZS5pbmRleE9mKHQpPDAmJihuJiZuLnByZXBlbmQ/ZS51bnNoaWZ0KHQpOmUucHVzaCh0KSksZnVuY3Rpb24oKXt2YXIgbj1lLmluZGV4T2YodCk7bj4tMSYmZS5zcGxpY2UobiwxKX19ZnVuY3Rpb24gXyh0LGUpe3QuX2FjdGlvbnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0Ll9tdXRhdGlvbnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0Ll93cmFwcGVkR2V0dGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHQuX21vZHVsZXNOYW1lc3BhY2VNYXA9T2JqZWN0LmNyZWF0ZShudWxsKTt2YXIgbj10LnN0YXRlO1ModCxuLFtdLHQuX21vZHVsZXMucm9vdCwhMCksdyh0LG4sZSl9ZnVuY3Rpb24gdyh0LGUsbil7dmFyIHI9dC5fdm07dC5nZXR0ZXJzPXt9LHQuX21ha2VMb2NhbEdldHRlcnNDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3ZhciBpPXQuX3dyYXBwZWRHZXR0ZXJzLG89e307YyhpLChmdW5jdGlvbihlLG4pe29bbl09ZihlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmdldHRlcnMsbix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuX3ZtW25dfSxlbnVtZXJhYmxlOiEwfSl9KSk7dmFyIGE9Zy5jb25maWcuc2lsZW50O2cuY29uZmlnLnNpbGVudD0hMCx0Ll92bT1uZXcgZyh7ZGF0YTp7JCRzdGF0ZTplfSxjb21wdXRlZDpvfSksZy5jb25maWcuc2lsZW50PWEsdC5zdHJpY3QmJkEodCksciYmKG4mJnQuX3dpdGhDb21taXQoKGZ1bmN0aW9uKCl7ci5fZGF0YS4kJHN0YXRlPW51bGx9KSksZy5uZXh0VGljaygoZnVuY3Rpb24oKXtyZXR1cm4gci4kZGVzdHJveSgpfSkpKX1mdW5jdGlvbiBTKHQsZSxuLHIsaSl7dmFyIG89IW4ubGVuZ3RoLGE9dC5fbW9kdWxlcy5nZXROYW1lc3BhY2Uobik7aWYoci5uYW1lc3BhY2VkJiYodC5fbW9kdWxlc05hbWVzcGFjZU1hcFthXSx0Ll9tb2R1bGVzTmFtZXNwYWNlTWFwW2FdPXIpLCFvJiYhaSl7dmFyIHM9RShlLG4uc2xpY2UoMCwtMSkpLGM9bltuLmxlbmd0aC0xXTt0Ll93aXRoQ29tbWl0KChmdW5jdGlvbigpe2cuc2V0KHMsYyxyLnN0YXRlKX0pKX12YXIgdT1yLmNvbnRleHQ9eCh0LGEsbik7ci5mb3JFYWNoTXV0YXRpb24oKGZ1bmN0aW9uKGUsbil7dmFyIHI9YStuO0ModCxyLGUsdSl9KSksci5mb3JFYWNoQWN0aW9uKChmdW5jdGlvbihlLG4pe3ZhciByPWUucm9vdD9uOmErbixpPWUuaGFuZGxlcnx8ZTtUKHQscixpLHUpfSkpLHIuZm9yRWFjaEdldHRlcigoZnVuY3Rpb24oZSxuKXt2YXIgcj1hK247Tyh0LHIsZSx1KX0pKSxyLmZvckVhY2hDaGlsZCgoZnVuY3Rpb24ocixvKXtTKHQsZSxuLmNvbmNhdChvKSxyLGkpfSkpfWZ1bmN0aW9uIHgodCxlLG4pe3ZhciByPSIiPT09ZSxpPXtkaXNwYXRjaDpyP3QuZGlzcGF0Y2g6ZnVuY3Rpb24obixyLGkpe3ZhciBvPWoobixyLGkpLGE9by5wYXlsb2FkLHM9by5vcHRpb25zLGM9by50eXBlO3JldHVybiBzJiZzLnJvb3R8fChjPWUrYyksdC5kaXNwYXRjaChjLGEpfSxjb21taXQ6cj90LmNvbW1pdDpmdW5jdGlvbihuLHIsaSl7dmFyIG89aihuLHIsaSksYT1vLnBheWxvYWQscz1vLm9wdGlvbnMsYz1vLnR5cGU7cyYmcy5yb290fHwoYz1lK2MpLHQuY29tbWl0KGMsYSxzKX19O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhpLHtnZXR0ZXJzOntnZXQ6cj9mdW5jdGlvbigpe3JldHVybiB0LmdldHRlcnN9OmZ1bmN0aW9uKCl7cmV0dXJuIGsodCxlKX19LHN0YXRlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRSh0LnN0YXRlLG4pfX19KSxpfWZ1bmN0aW9uIGsodCxlKXtpZighdC5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlW2VdKXt2YXIgbj17fSxyPWUubGVuZ3RoO09iamVjdC5rZXlzKHQuZ2V0dGVycykuZm9yRWFjaCgoZnVuY3Rpb24oaSl7aWYoaS5zbGljZSgwLHIpPT09ZSl7dmFyIG89aS5zbGljZShyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkobixvLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5nZXR0ZXJzW2ldfSxlbnVtZXJhYmxlOiEwfSl9fSkpLHQuX21ha2VMb2NhbEdldHRlcnNDYWNoZVtlXT1ufXJldHVybiB0Ll9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGVbZV19ZnVuY3Rpb24gQyh0LGUsbixyKXt2YXIgaT10Ll9tdXRhdGlvbnNbZV18fCh0Ll9tdXRhdGlvbnNbZV09W10pO2kucHVzaCgoZnVuY3Rpb24oZSl7bi5jYWxsKHQsci5zdGF0ZSxlKX0pKX1mdW5jdGlvbiBUKHQsZSxuLHIpe3ZhciBpPXQuX2FjdGlvbnNbZV18fCh0Ll9hY3Rpb25zW2VdPVtdKTtpLnB1c2goKGZ1bmN0aW9uKGUpe3ZhciBpPW4uY2FsbCh0LHtkaXNwYXRjaDpyLmRpc3BhdGNoLGNvbW1pdDpyLmNvbW1pdCxnZXR0ZXJzOnIuZ2V0dGVycyxzdGF0ZTpyLnN0YXRlLHJvb3RHZXR0ZXJzOnQuZ2V0dGVycyxyb290U3RhdGU6dC5zdGF0ZX0sZSk7cmV0dXJuIGwoaSl8fChpPVByb21pc2UucmVzb2x2ZShpKSksdC5fZGV2dG9vbEhvb2s/aS5jYXRjaCgoZnVuY3Rpb24oZSl7dGhyb3cgdC5fZGV2dG9vbEhvb2suZW1pdCgidnVleDplcnJvciIsZSksZX0pKTppfSkpfWZ1bmN0aW9uIE8odCxlLG4scil7dC5fd3JhcHBlZEdldHRlcnNbZV18fCh0Ll93cmFwcGVkR2V0dGVyc1tlXT1mdW5jdGlvbih0KXtyZXR1cm4gbihyLnN0YXRlLHIuZ2V0dGVycyx0LnN0YXRlLHQuZ2V0dGVycyl9KX1mdW5jdGlvbiBBKHQpe3QuX3ZtLiR3YXRjaCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YS4kJHN0YXRlfSksKGZ1bmN0aW9uKCl7MH0pLHtkZWVwOiEwLHN5bmM6ITB9KX1mdW5jdGlvbiBFKHQsZSl7cmV0dXJuIGUucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0W2VdfSksdCl9ZnVuY3Rpb24gaih0LGUsbil7cmV0dXJuIHUodCkmJnQudHlwZSYmKG49ZSxlPXQsdD10LnR5cGUpLHt0eXBlOnQscGF5bG9hZDplLG9wdGlvbnM6bn19ZnVuY3Rpb24gTSh0KXtnJiZ0PT09Z3x8KGc9dCxuKGcpKX1iLnN0YXRlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl92bS5fZGF0YS4kJHN0YXRlfSxiLnN0YXRlLnNldD1mdW5jdGlvbih0KXswfSxtLnByb3RvdHlwZS5jb21taXQ9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMsaT1qKHQsZSxuKSxvPWkudHlwZSxhPWkucGF5bG9hZCxzPShpLm9wdGlvbnMse3R5cGU6byxwYXlsb2FkOmF9KSxjPXRoaXMuX211dGF0aW9uc1tvXTtjJiYodGhpcy5fd2l0aENvbW1pdCgoZnVuY3Rpb24oKXtjLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QoYSl9KSl9KSksdGhpcy5fc3Vic2NyaWJlcnMuc2xpY2UoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdChzLHIuc3RhdGUpfSkpKX0sbS5wcm90b3R5cGUuZGlzcGF0Y2g9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9aih0LGUpLGk9ci50eXBlLG89ci5wYXlsb2FkLGE9e3R5cGU6aSxwYXlsb2FkOm99LHM9dGhpcy5fYWN0aW9uc1tpXTtpZihzKXt0cnl7dGhpcy5fYWN0aW9uU3Vic2NyaWJlcnMuc2xpY2UoKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJlZm9yZX0pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5iZWZvcmUoYSxuLnN0YXRlKX0pKX1jYXRjaCh1KXswfXZhciBjPXMubGVuZ3RoPjE/UHJvbWlzZS5hbGwocy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0KG8pfSkpKTpzWzBdKG8pO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxlKXtjLnRoZW4oKGZ1bmN0aW9uKGUpe3RyeXtuLl9hY3Rpb25TdWJzY3JpYmVycy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFmdGVyfSkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFmdGVyKGEsbi5zdGF0ZSl9KSl9Y2F0Y2godSl7MH10KGUpfSksKGZ1bmN0aW9uKHQpe3RyeXtuLl9hY3Rpb25TdWJzY3JpYmVycy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmVycm9yfSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLmVycm9yKGEsbi5zdGF0ZSx0KX0pKX1jYXRjaCh1KXswfWUodCl9KSl9KSl9fSxtLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geSh0LHRoaXMuX3N1YnNjcmliZXJzLGUpfSxtLnByb3RvdHlwZS5zdWJzY3JpYmVBY3Rpb249ZnVuY3Rpb24odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT09dHlwZW9mIHQ/e2JlZm9yZTp0fTp0O3JldHVybiB5KG4sdGhpcy5fYWN0aW9uU3Vic2NyaWJlcnMsZSl9LG0ucHJvdG90eXBlLndhdGNoPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzO3JldHVybiB0aGlzLl93YXRjaGVyVk0uJHdhdGNoKChmdW5jdGlvbigpe3JldHVybiB0KHIuc3RhdGUsci5nZXR0ZXJzKX0pLGUsbil9LG0ucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3dpdGhDb21taXQoKGZ1bmN0aW9uKCl7ZS5fdm0uX2RhdGEuJCRzdGF0ZT10fSkpfSxtLnByb3RvdHlwZS5yZWdpc3Rlck1vZHVsZT1mdW5jdGlvbih0LGUsbil7dm9pZCAwPT09biYmKG49e30pLCJzdHJpbmciPT09dHlwZW9mIHQmJih0PVt0XSksdGhpcy5fbW9kdWxlcy5yZWdpc3Rlcih0LGUpLFModGhpcyx0aGlzLnN0YXRlLHQsdGhpcy5fbW9kdWxlcy5nZXQodCksbi5wcmVzZXJ2ZVN0YXRlKSx3KHRoaXMsdGhpcy5zdGF0ZSl9LG0ucHJvdG90eXBlLnVucmVnaXN0ZXJNb2R1bGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczsic3RyaW5nIj09PXR5cGVvZiB0JiYodD1bdF0pLHRoaXMuX21vZHVsZXMudW5yZWdpc3Rlcih0KSx0aGlzLl93aXRoQ29tbWl0KChmdW5jdGlvbigpe3ZhciBuPUUoZS5zdGF0ZSx0LnNsaWNlKDAsLTEpKTtnLmRlbGV0ZShuLHRbdC5sZW5ndGgtMV0pfSkpLF8odGhpcyl9LG0ucHJvdG90eXBlLmhhc01vZHVsZT1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiB0JiYodD1bdF0pLHRoaXMuX21vZHVsZXMuaXNSZWdpc3RlcmVkKHQpfSxtLnByb3RvdHlwZVtbMTA0LDExMSwxMTYsODUsMTEyLDEwMCw5NywxMTYsMTAxXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfSkpLmpvaW4oIiIpXT1mdW5jdGlvbih0KXt0aGlzLl9tb2R1bGVzLnVwZGF0ZSh0KSxfKHRoaXMsITApfSxtLnByb3RvdHlwZS5fd2l0aENvbW1pdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9jb21taXR0aW5nO3RoaXMuX2NvbW1pdHRpbmc9ITAsdCgpLHRoaXMuX2NvbW1pdHRpbmc9ZX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobS5wcm90b3R5cGUsYik7dmFyIEk9QigoZnVuY3Rpb24odCxlKXt2YXIgbj17fTtyZXR1cm4gTihlKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcj1lLmtleSxpPWUudmFsO25bcl09ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRzdG9yZS5zdGF0ZSxuPXRoaXMuJHN0b3JlLmdldHRlcnM7aWYodCl7dmFyIHI9Rih0aGlzLiRzdG9yZSwibWFwU3RhdGUiLHQpO2lmKCFyKXJldHVybjtlPXIuY29udGV4dC5zdGF0ZSxuPXIuY29udGV4dC5nZXR0ZXJzfXJldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgaT9pLmNhbGwodGhpcyxlLG4pOmVbaV19LG5bcl0udnVleD0hMH0pKSxufSkpLFA9QigoZnVuY3Rpb24odCxlKXt2YXIgbj17fTtyZXR1cm4gTihlKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcj1lLmtleSxpPWUudmFsO25bcl09ZnVuY3Rpb24oKXt2YXIgZT1bXSxuPWFyZ3VtZW50cy5sZW5ndGg7d2hpbGUobi0tKWVbbl09YXJndW1lbnRzW25dO3ZhciByPXRoaXMuJHN0b3JlLmNvbW1pdDtpZih0KXt2YXIgbz1GKHRoaXMuJHN0b3JlLCJtYXBNdXRhdGlvbnMiLHQpO2lmKCFvKXJldHVybjtyPW8uY29udGV4dC5jb21taXR9cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBpP2kuYXBwbHkodGhpcyxbcl0uY29uY2F0KGUpKTpyLmFwcGx5KHRoaXMuJHN0b3JlLFtpXS5jb25jYXQoZSkpfX0pKSxufSkpLCQ9QigoZnVuY3Rpb24odCxlKXt2YXIgbj17fTtyZXR1cm4gTihlKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcj1lLmtleSxpPWUudmFsO2k9dCtpLG5bcl09ZnVuY3Rpb24oKXtpZighdHx8Rih0aGlzLiRzdG9yZSwibWFwR2V0dGVycyIsdCkpcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbaV19LG5bcl0udnVleD0hMH0pKSxufSkpLEw9QigoZnVuY3Rpb24odCxlKXt2YXIgbj17fTtyZXR1cm4gTihlKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcj1lLmtleSxpPWUudmFsO25bcl09ZnVuY3Rpb24oKXt2YXIgZT1bXSxuPWFyZ3VtZW50cy5sZW5ndGg7d2hpbGUobi0tKWVbbl09YXJndW1lbnRzW25dO3ZhciByPXRoaXMuJHN0b3JlLmRpc3BhdGNoO2lmKHQpe3ZhciBvPUYodGhpcy4kc3RvcmUsIm1hcEFjdGlvbnMiLHQpO2lmKCFvKXJldHVybjtyPW8uY29udGV4dC5kaXNwYXRjaH1yZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGk/aS5hcHBseSh0aGlzLFtyXS5jb25jYXQoZSkpOnIuYXBwbHkodGhpcy4kc3RvcmUsW2ldLmNvbmNhdChlKSl9fSkpLG59KSksUj1mdW5jdGlvbih0KXtyZXR1cm57bWFwU3RhdGU6SS5iaW5kKG51bGwsdCksbWFwR2V0dGVyczokLmJpbmQobnVsbCx0KSxtYXBNdXRhdGlvbnM6UC5iaW5kKG51bGwsdCksbWFwQWN0aW9uczpMLmJpbmQobnVsbCx0KX19O2Z1bmN0aW9uIE4odCl7cmV0dXJuIEQodCk/QXJyYXkuaXNBcnJheSh0KT90Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue2tleTp0LHZhbDp0fX0pKTpPYmplY3Qua2V5cyh0KS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybntrZXk6ZSx2YWw6dFtlXX19KSk6W119ZnVuY3Rpb24gRCh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KXx8dSh0KX1mdW5jdGlvbiBCKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiJzdHJpbmciIT09dHlwZW9mIGU/KG49ZSxlPSIiKToiLyIhPT1lLmNoYXJBdChlLmxlbmd0aC0xKSYmKGUrPSIvIiksdChlLG4pfX1mdW5jdGlvbiBGKHQsZSxuKXt2YXIgcj10Ll9tb2R1bGVzTmFtZXNwYWNlTWFwW25dO3JldHVybiByfWZ1bmN0aW9uIHoodCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBlPXQuY29sbGFwc2VkO3ZvaWQgMD09PWUmJihlPSEwKTt2YXIgbj10LmZpbHRlcjt2b2lkIDA9PT1uJiYobj1mdW5jdGlvbih0LGUsbil7cmV0dXJuITB9KTt2YXIgcj10LnRyYW5zZm9ybWVyO3ZvaWQgMD09PXImJihyPWZ1bmN0aW9uKHQpe3JldHVybiB0fSk7dmFyIGk9dC5tdXRhdGlvblRyYW5zZm9ybWVyO3ZvaWQgMD09PWkmJihpPWZ1bmN0aW9uKHQpe3JldHVybiB0fSk7dmFyIG89dC5hY3Rpb25GaWx0ZXI7dm9pZCAwPT09byYmKG89ZnVuY3Rpb24odCxlKXtyZXR1cm4hMH0pO3ZhciBhPXQuYWN0aW9uVHJhbnNmb3JtZXI7dm9pZCAwPT09YSYmKGE9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KTt2YXIgYz10LmxvZ011dGF0aW9uczt2b2lkIDA9PT1jJiYoYz0hMCk7dmFyIHU9dC5sb2dBY3Rpb25zO3ZvaWQgMD09PXUmJih1PSEwKTt2YXIgbD10LmxvZ2dlcjtyZXR1cm4gdm9pZCAwPT09bCYmKGw9Y29uc29sZSksZnVuY3Rpb24odCl7dmFyIGY9cyh0LnN0YXRlKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBsJiYoYyYmdC5zdWJzY3JpYmUoKGZ1bmN0aW9uKHQsbyl7dmFyIGE9cyhvKTtpZihuKHQsZixhKSl7dmFyIGM9VSgpLHU9aSh0KSxkPSJtdXRhdGlvbiAiK3QudHlwZStjO1cobCxkLGUpLGwubG9nKCIlYyBwcmV2IHN0YXRlIiwiY29sb3I6ICM5RTlFOUU7IGZvbnQtd2VpZ2h0OiBib2xkIixyKGYpKSxsLmxvZygiJWMgbXV0YXRpb24iLCJjb2xvcjogIzAzQTlGNDsgZm9udC13ZWlnaHQ6IGJvbGQiLHUpLGwubG9nKCIlYyBuZXh0IHN0YXRlIiwiY29sb3I6ICM0Q0FGNTA7IGZvbnQtd2VpZ2h0OiBib2xkIixyKGEpKSxIKGwpfWY9YX0pKSx1JiZ0LnN1YnNjcmliZUFjdGlvbigoZnVuY3Rpb24odCxuKXtpZihvKHQsbikpe3ZhciByPVUoKSxpPWEodCkscz0iYWN0aW9uICIrdC50eXBlK3I7VyhsLHMsZSksbC5sb2coIiVjIGFjdGlvbiIsImNvbG9yOiAjMDNBOUY0OyBmb250LXdlaWdodDogYm9sZCIsaSksSChsKX19KSkpfX1mdW5jdGlvbiBXKHQsZSxuKXt2YXIgcj1uP3QuZ3JvdXBDb2xsYXBzZWQ6dC5ncm91cDt0cnl7ci5jYWxsKHQsZSl9Y2F0Y2goaSl7dC5sb2coZSl9fWZ1bmN0aW9uIEgodCl7dHJ5e3QuZ3JvdXBFbmQoKX1jYXRjaChlKXt0LmxvZygi4oCU4oCUIGxvZyBlbmQg4oCU4oCUIil9fWZ1bmN0aW9uIFUoKXt2YXIgdD1uZXcgRGF0ZTtyZXR1cm4iIEAgIitWKHQuZ2V0SG91cnMoKSwyKSsiOiIrVih0LmdldE1pbnV0ZXMoKSwyKSsiOiIrVih0LmdldFNlY29uZHMoKSwyKSsiLiIrVih0LmdldE1pbGxpc2Vjb25kcygpLDMpfWZ1bmN0aW9uIHEodCxlKXtyZXR1cm4gbmV3IEFycmF5KGUrMSkuam9pbih0KX1mdW5jdGlvbiBWKHQsZSl7cmV0dXJuIHEoIjAiLGUtdC50b1N0cmluZygpLmxlbmd0aCkrdH12YXIgWT17U3RvcmU6bSxpbnN0YWxsOk0sdmVyc2lvbjoiMy42LjIiLG1hcFN0YXRlOkksbWFwTXV0YXRpb25zOlAsbWFwR2V0dGVyczokLG1hcEFjdGlvbnM6TCxjcmVhdGVOYW1lc3BhY2VkSGVscGVyczpSLGNyZWF0ZUxvZ2dlcjp6fTt0LmV4cG9ydHM9WX0pLmNhbGwodGhpcyxuKCJjOGJhIikpfSwiMjZlOSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJlMzMwIiksbz1uKCJlOGI1IiksYT1pKFtdLnJldmVyc2UpLHM9WzEsMl07cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOlN0cmluZyhzKT09PVN0cmluZyhzLnJldmVyc2UoKSl9LHtyZXZlcnNlOmZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcykmJih0aGlzLmxlbmd0aD10aGlzLmxlbmd0aCksYSh0aGlzKX19KX0sIjI3MWEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiY2IyZCIpLGk9bigiZTMzMCIpLG89bigiNTc3ZSIpLGE9bigiZDZkNiIpLHM9VVJMU2VhcmNoUGFyYW1zLGM9cy5wcm90b3R5cGUsdT1pKGMuZ2V0QWxsKSxsPWkoYy5oYXMpLGY9bmV3IHMoImE9MSIpOyFmLmhhcygiYSIsMikmJmYuaGFzKCJhIix2b2lkIDApfHxyKGMsImhhcyIsKGZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1lPDI/dm9pZCAwOmFyZ3VtZW50c1sxXTtpZihlJiZ2b2lkIDA9PT1uKXJldHVybiBsKHRoaXMsdCk7dmFyIHI9dSh0aGlzLHQpO2EoZSwxKTt2YXIgaT1vKG4pLHM9MDt3aGlsZShzPHIubGVuZ3RoKWlmKHJbcysrXT09PWkpcmV0dXJuITA7cmV0dXJuITF9KSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sMjgzNDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImViYjUiKSxpPW4oImUzMzAiKSxvPW4oIjU5ZWQiKSxhPW4oImRmYjkiKSxzPXIuYVR5cGVkQXJyYXksYz1yLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcix1PXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxsPWkoci5UeXBlZEFycmF5UHJvdG90eXBlLnNvcnQpO3UoInRvU29ydGVkIiwoZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmbyh0KTt2YXIgZT1zKHRoaXMpLG49YShjKGUpLGUpO3JldHVybiBsKG4sdCl9KSl9LDI5NTQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlYmI1IiksaT1uKCJkMDM5Iiksbz1uKCJmMzZhIiksYT1yLmFUeXBlZEFycmF5LHM9ci5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsYz1yLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsdT1pKChmdW5jdGlvbigpe25ldyBJbnQ4QXJyYXkoMSkuc2xpY2UoKX0pKTtjKCJzbGljZSIsKGZ1bmN0aW9uKHQsZSl7dmFyIG49byhhKHRoaXMpLHQsZSkscj1zKHRoaXMpLGk9MCxjPW4ubGVuZ3RoLHU9bmV3IHIoYyk7d2hpbGUoYz5pKXVbaV09bltpKytdO3JldHVybiB1fSksdSl9LCIyYTA3IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKSxpPW4oIjlhZGMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoaSl7dHJ5e3JldHVybiByLnByb2Nlc3MuZ2V0QnVpbHRpbk1vZHVsZSh0KX1jYXRjaChlKXt9dHJ5e3JldHVybiBGdW5jdGlvbigncmV0dXJuIHJlcXVpcmUoIicrdCsnIiknKSgpfWNhdGNoKGUpe319fX0sIjJhNjIiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYzY1YiIpLGk9bigiODI1YSIpLG89bigiZGM0YSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIGEscztpKHQpO3RyeXtpZihhPW8odCwicmV0dXJuIiksIWEpe2lmKCJ0aHJvdyI9PT1lKXRocm93IG47cmV0dXJuIG59YT1yKGEsdCl9Y2F0Y2goYyl7cz0hMCxhPWN9aWYoInRocm93Ij09PWUpdGhyb3cgbjtpZihzKXRocm93IGE7cmV0dXJuIGkoYSksbn19LCIyYjNkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oIjQwMDIiKX0sIjJiYTQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNDBkNSIpLGk9RnVuY3Rpb24ucHJvdG90eXBlLG89aS5hcHBseSxhPWkuY2FsbDt0LmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmFwcGx5fHwocj9hLmJpbmQobyk6ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShvLGFyZ3VtZW50cyl9KX0sIjJiYWEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIEl0ZXJhdG9yJiZJdGVyYXRvci5wcm90b3R5cGVbdF07aWYobil0cnl7bi5jYWxsKHtuZXh0Om51bGx9LGUpLm5leHQoKX1jYXRjaChyKXtyZXR1cm4hMH19fSwiMmMzZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI4M2FiIiksaT1uKCI5ZjdmIikuTUlTU0VEX1NUSUNLWSxvPW4oImM2YjYiKSxhPW4oImVkZDAiKSxzPW4oIjY5ZjMiKS5nZXQsYz1SZWdFeHAucHJvdG90eXBlLHU9VHlwZUVycm9yO3ImJmkmJmEoYywic3RpY2t5Iix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKHRoaXMhPT1jKXtpZigiUmVnRXhwIj09PW8odGhpcykpcmV0dXJuISFzKHRoaXMpLnN0aWNreTt0aHJvdyBuZXcgdSgiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCBSZWdFeHAgcmVxdWlyZWQiKX19fSl9LCIyYzY2IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjgzYWIiKSxpPW4oImVkZDAiKSxvPW4oIjc1YmQiKSxhPUFycmF5QnVmZmVyLnByb3RvdHlwZTtyJiYhKCJkZXRhY2hlZCJpbiBhKSYmaShhLCJkZXRhY2hlZCIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzKX19KX0sIjJjYTAiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiNDYyNSIpLG89bigiMDZjZiIpLmYsYT1uKCI1MGM0Iikscz1uKCI1NzdlIiksYz1uKCI1YTM0IiksdT1uKCIxZDgwIiksbD1uKCJhYjEzIiksZj1uKCJjNDMwIiksZD1pKCIiLnNsaWNlKSxoPU1hdGgubWluLHA9bCgic3RhcnRzV2l0aCIpLHY9IWYmJiFwJiYhIWZ1bmN0aW9uKCl7dmFyIHQ9byhTdHJpbmcucHJvdG90eXBlLCJzdGFydHNXaXRoIik7cmV0dXJuIHQmJiF0LndyaXRhYmxlfSgpO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6IXYmJiFwfSx7c3RhcnRzV2l0aDpmdW5jdGlvbih0KXt2YXIgZT1zKHUodGhpcykpO2ModCk7dmFyIG49YShoKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLGUubGVuZ3RoKSkscj1zKHQpO3JldHVybiBkKGUsbixuK3IubGVuZ3RoKT09PXJ9fSl9LCIyY2Y0IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByLGksbyxhLHM9bigiY2ZlOSIpLGM9bigiMmJhNCIpLHU9bigiMDM2NiIpLGw9bigiMTYyNiIpLGY9bigiMWEyZCIpLGQ9bigiZDAzOSIpLGg9bigiMWJlNCIpLHA9bigiZjM2YSIpLHY9bigiY2MxMiIpLGc9bigiZDZkNiIpLG09bigiNTJjOCIpLGI9bigiOWFkYyIpLHk9cy5zZXRJbW1lZGlhdGUsXz1zLmNsZWFySW1tZWRpYXRlLHc9cy5wcm9jZXNzLFM9cy5EaXNwYXRjaCx4PXMuRnVuY3Rpb24saz1zLk1lc3NhZ2VDaGFubmVsLEM9cy5TdHJpbmcsVD0wLE89e30sQT0ib25yZWFkeXN0YXRlY2hhbmdlIjtkKChmdW5jdGlvbigpe3I9cy5sb2NhdGlvbn0pKTt2YXIgRT1mdW5jdGlvbih0KXtpZihmKE8sdCkpe3ZhciBlPU9bdF07ZGVsZXRlIE9bdF0sZSgpfX0saj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtFKHQpfX0sTT1mdW5jdGlvbih0KXtFKHQuZGF0YSl9LEk9ZnVuY3Rpb24odCl7cy5wb3N0TWVzc2FnZShDKHQpLHIucHJvdG9jb2wrIi8vIityLmhvc3QpfTt5JiZffHwoeT1mdW5jdGlvbih0KXtnKGFyZ3VtZW50cy5sZW5ndGgsMSk7dmFyIGU9bCh0KT90OngodCksbj1wKGFyZ3VtZW50cywxKTtyZXR1cm4gT1srK1RdPWZ1bmN0aW9uKCl7YyhlLHZvaWQgMCxuKX0saShUKSxUfSxfPWZ1bmN0aW9uKHQpe2RlbGV0ZSBPW3RdfSxiP2k9ZnVuY3Rpb24odCl7dy5uZXh0VGljayhqKHQpKX06UyYmUy5ub3c/aT1mdW5jdGlvbih0KXtTLm5vdyhqKHQpKX06ayYmIW0/KG89bmV3IGssYT1vLnBvcnQyLG8ucG9ydDEub25tZXNzYWdlPU0saT11KGEucG9zdE1lc3NhZ2UsYSkpOnMuYWRkRXZlbnRMaXN0ZW5lciYmbChzLnBvc3RNZXNzYWdlKSYmIXMuaW1wb3J0U2NyaXB0cyYmciYmImZpbGU6IiE9PXIucHJvdG9jb2wmJiFkKEkpPyhpPUkscy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixNLCExKSk6aT1BIGluIHYoInNjcmlwdCIpP2Z1bmN0aW9uKHQpe2guYXBwZW5kQ2hpbGQodigic2NyaXB0IikpW0FdPWZ1bmN0aW9uKCl7aC5yZW1vdmVDaGlsZCh0aGlzKSxFKHQpfX06ZnVuY3Rpb24odCl7c2V0VGltZW91dChqKHQpLDApfSksdC5leHBvcnRzPXtzZXQ6eSxjbGVhcjpffX0sIjMwYjQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXTtyZXR1cm4gdC5zb3J0KChmdW5jdGlvbigpe3JldHVybiBNYXRoLnJhbmRvbSgpLS41fSkpfW4oIjdhODIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXZvaWQgMCxuKCI0ZTgyIik7ZS5kZWZhdWx0PXJ9LCIzMGYyIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImRmYjkiKSxpPW4oImViYjUiKS5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIoaSh0KSxlKX19LDMyODA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlYmI1IiksaT1uKCIyYmE0Iiksbz1uKCJlNThjIiksYT1yLmFUeXBlZEFycmF5LHM9ci5leHBvcnRUeXBlZEFycmF5TWV0aG9kO3MoImxhc3RJbmRleE9mIiwoZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gaShvLGEodGhpcyksZT4xP1t0LGFyZ3VtZW50c1sxXV06W3RdKX0pKX0sMzQxMDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImQwMzkiKSxvPW4oIjdiMGIiKSxhPW4oImUxNjMiKSxzPW4oImUxNzciKSxjPWkoKGZ1bmN0aW9uKCl7YSgxKX0pKTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6YyxzaGFtOiFzfSx7Z2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIGEobyh0KSl9fSl9LCIzNGFmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImNmZTkiKSxvPW4oIjhhOTYiKSxhPW4oIjZiMzciKSxzPW4oIjIwMDUiKSxjPW4oIjAxNWQiKTtpLlVpbnQ4QXJyYXkmJnIoe3RhcmdldDoiVWludDhBcnJheSIscHJvdG86ITB9LHtzZXRGcm9tSGV4OmZ1bmN0aW9uKHQpe2EodGhpcyksbyh0KSxzKHRoaXMuYnVmZmVyKTt2YXIgZT1jKHQsdGhpcykucmVhZDtyZXR1cm57cmVhZDplLHdyaXR0ZW46ZS8yfX19KX0sMzUxMTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPVR5cGVFcnJvcixpPTkwMDcxOTkyNTQ3NDA5OTE7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHQ+aSl0aHJvdyByKCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtyZXR1cm4gdH19LDM1Mjk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJjNjViIiksbz1uKCI1OWVkIiksYT1uKCJmMDY5Iikscz1uKCJlNjY3IiksYz1uKCIyMjY2IiksdT1uKCI1ZWVkIik7cih7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwLGZvcmNlZDp1fSx7cmFjZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49YS5mKGUpLHI9bi5yZWplY3QsdT1zKChmdW5jdGlvbigpe3ZhciBhPW8oZS5yZXNvbHZlKTtjKHQsKGZ1bmN0aW9uKHQpe2koYSxlLHQpLnRoZW4obi5yZXNvbHZlLHIpfSkpfSkpO3JldHVybiB1LmVycm9yJiZyKHUudmFsdWUpLG4ucHJvbWlzZX19KX0sIjM1YTEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZjVkZiIpLGk9bigiZGM0YSIpLG89bigiNzIzNCIpLGE9bigiM2Y4YyIpLHM9bigiYjYyMiIpLGM9cygiaXRlcmF0b3IiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIW8odCkpcmV0dXJuIGkodCxjKXx8aSh0LCJAQGl0ZXJhdG9yIil8fGFbcih0KV19fSwiMzZmMiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixpLG8sYSxzPW4oImNmZTkiKSxjPW4oIjJhMDciKSx1PW4oImRiZTUiKSxsPXMuc3RydWN0dXJlZENsb25lLGY9cy5BcnJheUJ1ZmZlcixkPXMuTWVzc2FnZUNoYW5uZWwsaD0hMTtpZih1KWg9ZnVuY3Rpb24odCl7bCh0LHt0cmFuc2ZlcjpbdF19KX07ZWxzZSBpZihmKXRyeXtkfHwocj1jKCJ3b3JrZXJfdGhyZWFkcyIpLHImJihkPXIuTWVzc2FnZUNoYW5uZWwpKSxkJiYoaT1uZXcgZCxvPW5ldyBmKDIpLGE9ZnVuY3Rpb24odCl7aS5wb3J0MS5wb3N0TWVzc2FnZShudWxsLFt0XSl9LDI9PT1vLmJ5dGVMZW5ndGgmJihhKG8pLDA9PT1vLmJ5dGVMZW5ndGgmJihoPWEpKSl9Y2F0Y2gocCl7fXQuZXhwb3J0cz1ofSwiMzdkYyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7bigiN2E4MiIpO3ZhciByPW4oIjRlYTQiKS5kZWZhdWx0O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkxPQ0FMRV9aSF9IQU5UPWUuTE9DQUxFX1pIX0hBTlM9ZS5MT0NBTEVfRlI9ZS5MT0NBTEVfRVM9ZS5MT0NBTEVfRU49ZS5JMThuPWUuRm9ybWF0dGVyPXZvaWQgMCxlLmNvbXBpbGVJMThuSnNvblN0cj0kLGUuaGFzSTE4bkpzb249SSxlLmluaXRWdWVJMThuPUUsZS5pc0kxOG5TdHI9TCxlLmlzU3RyaW5nPXZvaWQgMCxlLm5vcm1hbGl6ZUxvY2FsZT1DLGUucGFyc2VJMThuSnNvbj1QLGUucmVzb2x2ZUxvY2FsZT1GLG4oIjk5YWYiKSxuKCI3ZGIwIiksbigiYzk3NSIpLG4oIjE0ZDkiKSxuKCJhNDM0IiksbigiM2M2NSIpLG4oImY0YjMiKSxuKCJlOWY1IiksbigiZjY2NSIpLG4oIjdkNTQiKSxuKCJlOWM0IiksbigiYjY0YiIpLG4oImQzYjciKSxuKCJlMjVlIiksbigiYWMxZiIpLG4oIjAwYjQiKSxuKCI1MzE5IiksbigiNDk4YSIpLG4oIjE1OWIiKSxuKCJkZGIwIik7dmFyIGk9cihuKCIzODM1IikpLG89cihuKCJkNGVjIikpLGE9cihuKCJiZWUyIikpLHM9cihuKCI1M2NhIikpLGM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10JiYib2JqZWN0Ij09PSgwLHMuZGVmYXVsdCkodCl9LHU9WyJ7IiwifSJdLGw9ZS5Gb3JtYXR0ZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7KDAsby5kZWZhdWx0KSh0aGlzLHQpLHRoaXMuX2NhY2hlcz1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybigwLGEuZGVmYXVsdCkodCxbe2tleToiaW50ZXJwb2xhdGUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnU7aWYoIWUpcmV0dXJuW3RdO3ZhciByPXRoaXMuX2NhY2hlc1t0XTtyZXR1cm4gcnx8KHI9aCh0LG4pLHRoaXMuX2NhY2hlc1t0XT1yKSxwKHIsZSl9fV0pfSgpLGY9L14oPzpcZCkrLyxkPS9eKD86XHcpKy87ZnVuY3Rpb24gaCh0LGUpe3ZhciBuPSgwLGkuZGVmYXVsdCkoZSwyKSxyPW5bMF0sbz1uWzFdLGE9W10scz0wLGM9IiI7d2hpbGUoczx0Lmxlbmd0aCl7dmFyIHU9dFtzKytdO2lmKHU9PT1yKXtjJiZhLnB1c2goe3R5cGU6InRleHQiLHZhbHVlOmN9KSxjPSIiO3ZhciBsPSIiO3U9dFtzKytdO3doaWxlKHZvaWQgMCE9PXUmJnUhPT1vKWwrPXUsdT10W3MrK107dmFyIGg9dT09PW8scD1mLnRlc3QobCk/Imxpc3QiOmgmJmQudGVzdChsKT8ibmFtZWQiOiJ1bmtub3duIjthLnB1c2goe3ZhbHVlOmwsdHlwZTpwfSl9ZWxzZSBjKz11fXJldHVybiBjJiZhLnB1c2goe3R5cGU6InRleHQiLHZhbHVlOmN9KSxhfWZ1bmN0aW9uIHAodCxlKXt2YXIgbj1bXSxyPTAsaT1BcnJheS5pc0FycmF5KGUpPyJsaXN0IjpjKGUpPyJuYW1lZCI6InVua25vd24iO2lmKCJ1bmtub3duIj09PWkpcmV0dXJuIG47d2hpbGUocjx0Lmxlbmd0aCl7dmFyIG89dFtyXTtzd2l0Y2goby50eXBlKXtjYXNlInRleHQiOm4ucHVzaChvLnZhbHVlKTticmVhaztjYXNlImxpc3QiOm4ucHVzaChlW3BhcnNlSW50KG8udmFsdWUsMTApXSk7YnJlYWs7Y2FzZSJuYW1lZCI6Im5hbWVkIj09PWkmJm4ucHVzaChlW28udmFsdWVdKTticmVhaztjYXNlInVua25vd24iOjA7YnJlYWt9cisrfXJldHVybiBufXZhciB2PWUuTE9DQUxFX1pIX0hBTlM9InpoLUhhbnMiLGc9ZS5MT0NBTEVfWkhfSEFOVD0iemgtSGFudCIsbT1lLkxPQ0FMRV9FTj0iZW4iLGI9ZS5MT0NBTEVfRlI9ImZyIix5PWUuTE9DQUxFX0VTPSJlcyIsXz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHc9ZnVuY3Rpb24odCxlKXtyZXR1cm4gXy5jYWxsKHQsZSl9LFM9bmV3IGw7ZnVuY3Rpb24geCh0LGUpe3JldHVybiEhZS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4tMSE9PXQuaW5kZXhPZihlKX0pKX1mdW5jdGlvbiBrKHQsZSl7cmV0dXJuIGUuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT10LmluZGV4T2YoZSl9KSl9ZnVuY3Rpb24gQyh0LGUpe2lmKHQpe2lmKHQ9dC50cmltKCkucmVwbGFjZSgvXy9nLCItIiksZSYmZVt0XSlyZXR1cm4gdDtpZih0PXQudG9Mb3dlckNhc2UoKSwiY2hpbmVzZSI9PT10KXJldHVybiB2O2lmKDA9PT10LmluZGV4T2YoInpoIikpcmV0dXJuIHQuaW5kZXhPZigiLWhhbnMiKT4tMT92OnQuaW5kZXhPZigiLWhhbnQiKT4tMXx8eCh0LFsiLXR3IiwiLWhrIiwiLW1vIiwiLWNodCJdKT9nOnY7dmFyIG49W20sYix5XTtlJiZPYmplY3Qua2V5cyhlKS5sZW5ndGg+MCYmKG49T2JqZWN0LmtleXMoZSkpO3ZhciByPWsodCxuKTtyZXR1cm4gcnx8dm9pZCAwfX12YXIgVD1lLkkxOG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3ZhciBuPWUubG9jYWxlLHI9ZS5mYWxsYmFja0xvY2FsZSxpPWUubWVzc2FnZXMsYT1lLndhdGNoZXIscz1lLmZvcm1hdGVyOygwLG8uZGVmYXVsdCkodGhpcyx0KSx0aGlzLmxvY2FsZT1tLHRoaXMuZmFsbGJhY2tMb2NhbGU9bSx0aGlzLm1lc3NhZ2U9e30sdGhpcy5tZXNzYWdlcz17fSx0aGlzLndhdGNoZXJzPVtdLHImJih0aGlzLmZhbGxiYWNrTG9jYWxlPXIpLHRoaXMuZm9ybWF0ZXI9c3x8Uyx0aGlzLm1lc3NhZ2VzPWl8fHt9LHRoaXMuc2V0TG9jYWxlKG58fG0pLGEmJnRoaXMud2F0Y2hMb2NhbGUoYSl9cmV0dXJuKDAsYS5kZWZhdWx0KSh0LFt7a2V5OiJzZXRMb2NhbGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLmxvY2FsZTt0aGlzLmxvY2FsZT1DKHQsdGhpcy5tZXNzYWdlcyl8fHRoaXMuZmFsbGJhY2tMb2NhbGUsdGhpcy5tZXNzYWdlc1t0aGlzLmxvY2FsZV18fCh0aGlzLm1lc3NhZ2VzW3RoaXMubG9jYWxlXT17fSksdGhpcy5tZXNzYWdlPXRoaXMubWVzc2FnZXNbdGhpcy5sb2NhbGVdLG4hPT10aGlzLmxvY2FsZSYmdGhpcy53YXRjaGVycy5mb3JFYWNoKChmdW5jdGlvbih0KXt0KGUubG9jYWxlLG4pfSkpfX0se2tleToiZ2V0TG9jYWxlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZX19LHtrZXk6IndhdGNoTG9jYWxlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy53YXRjaGVycy5wdXNoKHQpLTE7cmV0dXJuIGZ1bmN0aW9uKCl7ZS53YXRjaGVycy5zcGxpY2UobiwxKX19fSx7a2V5OiJhZGQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIG49IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxyPXRoaXMubWVzc2FnZXNbdF07cj9uP09iamVjdC5hc3NpZ24ocixlKTpPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbih0KXt3KHIsdCl8fChyW3RdPWVbdF0pfSkpOnRoaXMubWVzc2FnZXNbdF09ZX19LHtrZXk6ImYiLHZhbHVlOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5mb3JtYXRlci5pbnRlcnBvbGF0ZSh0LGUsbikuam9pbigiIil9fSx7a2V5OiJ0Iix2YWx1ZTpmdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcy5tZXNzYWdlO3JldHVybiJzdHJpbmciPT09dHlwZW9mIGU/KGU9QyhlLHRoaXMubWVzc2FnZXMpLGUmJihyPXRoaXMubWVzc2FnZXNbZV0pKTpuPWUsdyhyLHQpP3RoaXMuZm9ybWF0ZXIuaW50ZXJwb2xhdGUoclt0XSxuKS5qb2luKCIiKTooY29uc29sZS53YXJuKCJDYW5ub3QgdHJhbnNsYXRlIHRoZSB2YWx1ZSBvZiBrZXlwYXRoICIuY29uY2F0KHQsIi4gVXNlIHRoZSB2YWx1ZSBvZiBrZXlwYXRoIGFzIGRlZmF1bHQuIikpLHQpfX1dKX0oKTtmdW5jdGlvbiBPKHQsZSl7dC4kd2F0Y2hMb2NhbGU/dC4kd2F0Y2hMb2NhbGUoKGZ1bmN0aW9uKHQpe2Uuc2V0TG9jYWxlKHQpfSkpOnQuJHdhdGNoKChmdW5jdGlvbigpe3JldHVybiB0LiRsb2NhbGV9KSwoZnVuY3Rpb24odCl7ZS5zZXRMb2NhbGUodCl9KSl9ZnVuY3Rpb24gQSgpe3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIHVuaSYmdW5pLmdldExvY2FsZT91bmkuZ2V0TG9jYWxlKCk6InVuZGVmaW5lZCIhPT10eXBlb2YgdCYmdC5nZXRMb2NhbGU/dC5nZXRMb2NhbGUoKTptfWZ1bmN0aW9uIEUodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LG49YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAscj1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMDtpZigic3RyaW5nIiE9PXR5cGVvZiB0KXt2YXIgaT1bZSx0XTt0PWlbMF0sZT1pWzFdfSJzdHJpbmciIT09dHlwZW9mIHQmJih0PUEoKSksInN0cmluZyIhPT10eXBlb2YgbiYmKG49InVuZGVmaW5lZCIhPT10eXBlb2YgX191bmlDb25maWcmJl9fdW5pQ29uZmlnLmZhbGxiYWNrTG9jYWxlfHxtKTt2YXIgbz1uZXcgVCh7bG9jYWxlOnQsZmFsbGJhY2tMb2NhbGU6bixtZXNzYWdlczplLHdhdGNoZXI6cn0pLGE9ZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGdldEFwcClhPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG8udCh0LGUpfTtlbHNle3ZhciBuPSExO2E9ZnVuY3Rpb24odCxlKXt2YXIgcj1nZXRBcHAoKS4kdm07cmV0dXJuIHImJihyLiRsb2NhbGUsbnx8KG49ITAsTyhyLG8pKSksby50KHQsZSl9fXJldHVybiBhKHQsZSl9O3JldHVybntpMThuOm8sZjpmdW5jdGlvbih0LGUsbil7cmV0dXJuIG8uZih0LGUsbil9LHQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYSh0LGUpfSxhZGQ6ZnVuY3Rpb24odCxlKXt2YXIgbj0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO3JldHVybiBvLmFkZCh0LGUsbil9LHdhdGNoOmZ1bmN0aW9uKHQpe3JldHVybiBvLndhdGNoTG9jYWxlKHQpfSxnZXRMb2NhbGU6ZnVuY3Rpb24oKXtyZXR1cm4gby5nZXRMb2NhbGUoKX0sc2V0TG9jYWxlOmZ1bmN0aW9uKHQpe3JldHVybiBvLnNldExvY2FsZSh0KX19fXZhciBqLE09ZS5pc1N0cmluZz1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiB0fTtmdW5jdGlvbiBJKHQsZSl7cmV0dXJuIGp8fChqPW5ldyBsKSxCKHQsKGZ1bmN0aW9uKHQsbil7dmFyIHI9dFtuXTtyZXR1cm4gTShyKT8hIUwocixlKXx8dm9pZCAwOkkocixlKX0pKX1mdW5jdGlvbiBQKHQsZSxuKXtyZXR1cm4ganx8KGo9bmV3IGwpLEIodCwoZnVuY3Rpb24odCxyKXt2YXIgaT10W3JdO00oaSk/TChpLG4pJiYodFtyXT1SKGksZSxuKSk6UChpLGUsbil9KSksdH1mdW5jdGlvbiAkKHQsZSl7dmFyIG49ZS5sb2NhbGUscj1lLmxvY2FsZXMsaT1lLmRlbGltaXRlcnM7aWYoIUwodCxpKSlyZXR1cm4gdDtqfHwoaj1uZXcgbCk7dmFyIG89W107T2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dCE9PW4mJm8ucHVzaCh7bG9jYWxlOnQsdmFsdWVzOnJbdF19KX0pKSxvLnVuc2hpZnQoe2xvY2FsZTpuLHZhbHVlczpyW25dfSk7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShEKEpTT04ucGFyc2UodCksbyxpKSxudWxsLDIpfWNhdGNoKGEpe31yZXR1cm4gdH1mdW5jdGlvbiBMKHQsZSl7cmV0dXJuIHQuaW5kZXhPZihlWzBdKT4tMX1mdW5jdGlvbiBSKHQsZSxuKXtyZXR1cm4gai5pbnRlcnBvbGF0ZSh0LGUsbikuam9pbigiIil9ZnVuY3Rpb24gTih0LGUsbixyKXt2YXIgaT10W2VdO2lmKE0oaSkpe2lmKEwoaSxyKSYmKHRbZV09UihpLG5bMF0udmFsdWVzLHIpLG4ubGVuZ3RoPjEpKXt2YXIgbz10W2UrIkxvY2FsZXMiXT17fTtuLmZvckVhY2goKGZ1bmN0aW9uKHQpe29bdC5sb2NhbGVdPVIoaSx0LnZhbHVlcyxyKX0pKX19ZWxzZSBEKGksbixyKX1mdW5jdGlvbiBEKHQsZSxuKXtyZXR1cm4gQih0LChmdW5jdGlvbih0LHIpe04odCxyLGUsbil9KSksdH1mdW5jdGlvbiBCKHQsZSl7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspaWYoZSh0LG4pKXJldHVybiEwfWVsc2UgaWYoYyh0KSlmb3IodmFyIHIgaW4gdClpZihlKHQscikpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gRih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGU/KGU9QyhlKXx8ZSx6KGUpLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmluZGV4T2YoZSk+LTF9KSkpOmV9fWZ1bmN0aW9uIHoodCl7dmFyIGU9W10sbj10LnNwbGl0KCItIik7d2hpbGUobi5sZW5ndGgpZS5wdXNoKG4uam9pbigiLSIpKSxuLnBvcCgpO3JldHVybiBlfX0pLmNhbGwodGhpcyxuKCJjOGJhIikpfSwiMzdlOCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI4M2FiIiksaT1uKCJhZWQ5Iiksbz1uKCI5YmYyIiksYT1uKCI4MjVhIikscz1uKCJmYzZhIiksYz1uKCJkZjc1Iik7ZS5mPXImJiFpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQsZSl7YSh0KTt2YXIgbixyPXMoZSksaT1jKGUpLHU9aS5sZW5ndGgsbD0wO3doaWxlKHU+bClvLmYodCxuPWlbbCsrXSxyW25dKTtyZXR1cm4gdH19LDM4MzU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD1jO3ZhciByPXMobigiMGQyMSIpKSxpPXMobigiMDlmMCIpKSxvPXMobigiMDZjNSIpKSxhPXMobigiM2Q4YyIpKTtmdW5jdGlvbiBzKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1mdW5jdGlvbiBjKHQsZSl7cmV0dXJuKDAsci5kZWZhdWx0KSh0KXx8KDAsaS5kZWZhdWx0KSh0LGUpfHwoMCxvLmRlZmF1bHQpKHQsZSl8fCgwLGEuZGVmYXVsdCkoKX19LCIzODRmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImUzMzAiKSxpPW4oIjUzODgiKSxvPW4oImNiMjciKSxhPW8uU2V0LHM9by5wcm90byxjPXIocy5mb3JFYWNoKSx1PXIocy5rZXlzKSxsPXUobmV3IGEpLm5leHQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbj9pKHtpdGVyYXRvcjp1KHQpLG5leHQ6bH0sZSk6Yyh0LGUpfX0sIjM5NWUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZGMxOSIpLGk9bigiY2IyNyIpLmhhcyxvPW4oIjhlMTYiKSxhPW4oIjdmNjUiKSxzPW4oIjUzODgiKSxjPW4oIjJhNjIiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9cih0aGlzKSxuPWEodCk7aWYobyhlKTxuLnNpemUpcmV0dXJuITE7dmFyIHU9bi5nZXRJdGVyYXRvcigpO3JldHVybiExIT09cyh1LChmdW5jdGlvbih0KXtpZighaShlLHQpKXJldHVybiBjKHUsIm5vcm1hbCIsITEpfSkpfX0sIjNhMzQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiODNhYiIpLGk9bigiZThiNSIpLG89VHlwZUVycm9yLGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixzPXImJiFmdW5jdGlvbigpe2lmKHZvaWQgMCE9PXRoaXMpcmV0dXJuITA7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS5sZW5ndGg9MX1jYXRjaCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCk7dC5leHBvcnRzPXM/ZnVuY3Rpb24odCxlKXtpZihpKHQpJiYhYSh0LCJsZW5ndGgiKS53cml0YWJsZSl0aHJvdyBuZXcgbygiQ2Fubm90IHNldCByZWFkIG9ubHkgLmxlbmd0aCIpO3JldHVybiB0Lmxlbmd0aD1lfTpmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD1lfX0sIjNhN2IiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZWJiNSIpLGk9bigiYjcyNyIpLmZpbmRJbmRleCxvPXIuYVR5cGVkQXJyYXksYT1yLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7YSgiZmluZEluZGV4IiwoZnVuY3Rpb24odCl7cmV0dXJuIGkobyh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKX0sIjNhOWIiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZTMzMCIpO3QuZXhwb3J0cz1yKHt9LmlzUHJvdG90eXBlT2YpfSwiM2JiZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIxNzg3IiksaT1TdHJpbmcsbz1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHIodCkpcmV0dXJuIHQ7dGhyb3cgbmV3IG8oIkNhbid0IHNldCAiK2kodCkrIiBhcyBhIHByb3RvdHlwZSIpfX0sIjNjMWEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06ImJyYWNrZXRzIixyPWU/Ij8iOiIiLGk9W107LTE9PVsiaW5kaWNlcyIsImJyYWNrZXRzIiwicmVwZWF0IiwiY29tbWEiXS5pbmRleE9mKG4pJiYobj0iYnJhY2tldHMiKTt2YXIgbz1mdW5jdGlvbihlKXt2YXIgcj10W2VdO2lmKFsiIix2b2lkIDAsbnVsbF0uaW5kZXhPZihyKT49MClyZXR1cm4gMTtpZihyLmNvbnN0cnVjdG9yPT09QXJyYXkpc3dpdGNoKG4pe2Nhc2UiaW5kaWNlcyI6Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspaS5wdXNoKGUrIlsiK28rIl09IityW29dKTticmVhaztjYXNlImJyYWNrZXRzIjpyLmZvckVhY2goKGZ1bmN0aW9uKHQpe2kucHVzaChlKyJbXT0iK3QpfSkpO2JyZWFrO2Nhc2UicmVwZWF0IjpyLmZvckVhY2goKGZ1bmN0aW9uKHQpe2kucHVzaChlKyI9Iit0KX0pKTticmVhaztjYXNlImNvbW1hIjp2YXIgYT0iIjtyLmZvckVhY2goKGZ1bmN0aW9uKHQpe2ErPShhPyIsIjoiIikrdH0pKSxpLnB1c2goZSsiPSIrYSk7YnJlYWs7ZGVmYXVsdDpyLmZvckVhY2goKGZ1bmN0aW9uKHQpe2kucHVzaChlKyJbXT0iK3QpfSkpfWVsc2UgaS5wdXNoKGUrIj0iK3IpfTtmb3IodmFyIGEgaW4gdClvKGEpO3JldHVybiBpLmxlbmd0aD9yK2kuam9pbigiJiIpOiIifW4oIjdhODIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXZvaWQgMCxuKCJjOTc1IiksbigiMTRkOSIpLG4oImU5ZjUiKSxuKCI3ZDU0IiksbigiZDNiNyIpLG4oIjE1OWIiKTtlLmRlZmF1bHQ9cn0sIjNjNWQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiY2ZlOSIpLGk9bigiYzY1YiIpLG89bigiZWJiNSIpLGE9bigiMDdmYSIpLHM9bigiMTgyZCIpLGM9bigiN2IwYiIpLHU9bigiZDAzOSIpLGw9ci5SYW5nZUVycm9yLGY9ci5JbnQ4QXJyYXksZD1mJiZmLnByb3RvdHlwZSxoPWQmJmQuc2V0LHA9by5hVHlwZWRBcnJheSx2PW8uZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxnPSF1KChmdW5jdGlvbigpe3ZhciB0PW5ldyBVaW50OENsYW1wZWRBcnJheSgyKTtyZXR1cm4gaShoLHQse2xlbmd0aDoxLDA6M30sMSksMyE9PXRbMV19KSksbT1nJiZvLk5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MmJnUoKGZ1bmN0aW9uKCl7dmFyIHQ9bmV3IGYoMik7cmV0dXJuIHQuc2V0KDEpLHQuc2V0KCIyIiwxKSwwIT09dFswXXx8MiE9PXRbMV19KSk7digic2V0IiwoZnVuY3Rpb24odCl7cCh0aGlzKTt2YXIgZT1zKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDEpLG49Yyh0KTtpZihnKXJldHVybiBpKGgsdGhpcyxuLGUpO3ZhciByPXRoaXMubGVuZ3RoLG89YShuKSx1PTA7aWYobytlPnIpdGhyb3cgbmV3IGwoIldyb25nIGxlbmd0aCIpO3doaWxlKHU8byl0aGlzW2UrdV09blt1KytdfSksIWd8fG0pfSwiM2M2NSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCI3YjBiIiksbz1uKCIwN2ZhIiksYT1uKCIzYTM0Iikscz1uKCIwODNhIiksYz1uKCIzNTExIiksdT0xIT09W10udW5zaGlmdCgwKSxsPWZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS51bnNoaWZ0KCl9Y2F0Y2godCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBUeXBlRXJyb3J9fSxmPXV8fCFsKCk7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsYXJpdHk6MSxmb3JjZWQ6Zn0se3Vuc2hpZnQ6ZnVuY3Rpb24odCl7dmFyIGU9aSh0aGlzKSxuPW8oZSkscj1hcmd1bWVudHMubGVuZ3RoO2lmKHIpe2MobityKTt2YXIgdT1uO3doaWxlKHUtLSl7dmFyIGw9dStyO3UgaW4gZT9lW2xdPWVbdV06cyhlLGwpfWZvcih2YXIgZj0wO2Y8cjtmKyspZVtmXT1hcmd1bWVudHNbZl19cmV0dXJuIGEoZSxuK3IpfX0pfSwiM2NhMyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI2NTQ3IikuY2hhckF0LGk9bigiNTc3ZSIpLG89bigiNjlmMyIpLGE9bigiYzZkMiIpLHM9bigiNDc1NCIpLGM9IlN0cmluZyBJdGVyYXRvciIsdT1vLnNldCxsPW8uZ2V0dGVyRm9yKGMpO2EoU3RyaW5nLCJTdHJpbmciLChmdW5jdGlvbih0KXt1KHRoaXMse3R5cGU6YyxzdHJpbmc6aSh0KSxpbmRleDowfSl9KSwoZnVuY3Rpb24oKXt2YXIgdCxlPWwodGhpcyksbj1lLnN0cmluZyxpPWUuaW5kZXg7cmV0dXJuIGk+PW4ubGVuZ3RoP3Modm9pZCAwLCEwKToodD1yKG4saSksZS5pbmRleCs9dC5sZW5ndGgscyh0LCExKSl9KSl9LCIzY2ZkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oIjdhODIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXZvaWQgMDt2YXIgcj1udWxsO2Z1bmN0aW9uIGkodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjUwMCxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07aWYobnVsbCE9PXImJmNsZWFyVGltZW91dChyKSxuKXt2YXIgaT0hcjtyPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cj1udWxsfSksZSksaSYmImZ1bmN0aW9uIj09PXR5cGVvZiB0JiZ0KCl9ZWxzZSByPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09PXR5cGVvZiB0JiZ0KCl9KSxlKX1lLmRlZmF1bHQ9aX0sIjNkOGMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9bigiN2E4MiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmRlZmF1bHQ9cixuKCJkOWUyIiksbigiZDQwMSIpfSwiM2Y3ZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJiNWRiIiksaT1yLm1hdGNoKC9maXJlZm94XC8oXGQrKS9pKTt0LmV4cG9ydHM9ISFpJiYraVsxXX0sIjNmOGMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPXt9fSwiM2ZjYyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlYmI1IiksaT1uKCJiNzI3IikubWFwLG89ci5hVHlwZWRBcnJheSxhPXIuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLHM9ci5leHBvcnRUeXBlZEFycmF5TWV0aG9kO3MoIm1hcCIsKGZ1bmN0aW9uKHQpe3JldHVybiBpKG8odGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwoZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3KGEodCkpKGUpfSkpfSkpfSw0MDAyOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bigiM2NhMyIpO3ZhciByLGk9bigiMjNlNyIpLG89bigiODNhYiIpLGE9bigiZjM1NCIpLHM9bigiY2ZlOSIpLGM9bigiMDM2NiIpLHU9bigiZTMzMCIpLGw9bigiY2IyZCIpLGY9bigiZWRkMCIpLGQ9bigiMTlhYSIpLGg9bigiMWEyZCIpLHA9bigiNjBkYSIpLHY9bigiNGRmNCIpLGc9bigiZjM2YSIpLG09bigiNjU0NyIpLmNvZGVBdCxiPW4oIjVmYjIiKSx5PW4oIjU3N2UiKSxfPW4oImQ0NGUiKSx3PW4oImQ2ZDYiKSxTPW4oIjUzNTIiKSx4PW4oIjY5ZjMiKSxrPXguc2V0LEM9eC5nZXR0ZXJGb3IoIlVSTCIpLFQ9Uy5VUkxTZWFyY2hQYXJhbXMsTz1TLmdldFN0YXRlLEE9cy5VUkwsRT1zLlR5cGVFcnJvcixqPXMucGFyc2VJbnQsTT1NYXRoLmZsb29yLEk9TWF0aC5wb3csUD11KCIiLmNoYXJBdCksJD11KC8uLy5leGVjKSxMPXUoW10uam9pbiksUj11KDEuMS50b1N0cmluZyksTj11KFtdLnBvcCksRD11KFtdLnB1c2gpLEI9dSgiIi5yZXBsYWNlKSxGPXUoW10uc2hpZnQpLHo9dSgiIi5zcGxpdCksVz11KCIiLnNsaWNlKSxIPXUoIiIudG9Mb3dlckNhc2UpLFU9dShbXS51bnNoaWZ0KSxxPSJJbnZhbGlkIGF1dGhvcml0eSIsVj0iSW52YWxpZCBzY2hlbWUiLFk9IkludmFsaWQgaG9zdCIsWD0iSW52YWxpZCBwb3J0IixHPS9bYS16XS9pLFE9L1tcZCstLmEtel0vaSxKPS9cZC8sSz0vXjB4L2ksWj0vXlswLTddKyQvLHR0PS9eXGQrJC8sZXQ9L15bXGRhLWZdKyQvaSxudD0vW1wwXHRcblxyICMlLzo8Pj9AW1xcXF1efF0vLHJ0PS9bXDBcdFxuXHIgIy86PD4/QFtcXFxdXnxdLyxpdD0vXltcdTAwMDAtXHUwMDIwXSsvLG90PS8oXnxbXlx1MDAwMC1cdTAwMjBdKVtcdTAwMDAtXHUwMDIwXSskLyxhdD0vW1x0XG5ccl0vZyxzdD1mdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGEscyxjPXoodCwiLiIpO2lmKGMubGVuZ3RoJiYiIj09PWNbYy5sZW5ndGgtMV0mJmMubGVuZ3RoLS0sZT1jLmxlbmd0aCxlPjQpcmV0dXJuIHQ7Zm9yKG49W10scj0wO3I8ZTtyKyspe2lmKGk9Y1tyXSwiIj09PWkpcmV0dXJuIHQ7aWYobz0xMCxpLmxlbmd0aD4xJiYiMCI9PT1QKGksMCkmJihvPSQoSyxpKT8xNjo4LGk9VyhpLDg9PT1vPzE6MikpLCIiPT09aSlhPTA7ZWxzZXtpZighJCgxMD09PW8/dHQ6OD09PW8/WjpldCxpKSlyZXR1cm4gdDthPWooaSxvKX1EKG4sYSl9Zm9yKHI9MDtyPGU7cisrKWlmKGE9bltyXSxyPT09ZS0xKXtpZihhPj1JKDI1Niw1LWUpKXJldHVybiBudWxsfWVsc2UgaWYoYT4yNTUpcmV0dXJuIG51bGw7Zm9yKHM9TihuKSxyPTA7cjxuLmxlbmd0aDtyKyspcys9bltyXSpJKDI1NiwzLXIpO3JldHVybiBzfSxjdD1mdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGEscyxjPVswLDAsMCwwLDAsMCwwLDBdLHU9MCxsPW51bGwsZj0wLGQ9ZnVuY3Rpb24oKXtyZXR1cm4gUCh0LGYpfTtpZigiOiI9PT1kKCkpe2lmKCI6IiE9PVAodCwxKSlyZXR1cm47Zis9Mix1KyssbD11fXdoaWxlKGQoKSl7aWYoOD09PXUpcmV0dXJuO2lmKCI6IiE9PWQoKSl7ZT1uPTA7d2hpbGUobjw0JiYkKGV0LGQoKSkpZT0xNiplK2ooZCgpLDE2KSxmKyssbisrO2lmKCIuIj09PWQoKSl7aWYoMD09PW4pcmV0dXJuO2lmKGYtPW4sdT42KXJldHVybjtyPTA7d2hpbGUoZCgpKXtpZihpPW51bGwscj4wKXtpZighKCIuIj09PWQoKSYmcjw0KSlyZXR1cm47ZisrfWlmKCEkKEosZCgpKSlyZXR1cm47d2hpbGUoJChKLGQoKSkpe2lmKG89aihkKCksMTApLG51bGw9PT1pKWk9bztlbHNle2lmKDA9PT1pKXJldHVybjtpPTEwKmkrb31pZihpPjI1NSlyZXR1cm47ZisrfWNbdV09MjU2KmNbdV0raSxyKyssMiE9PXImJjQhPT1yfHx1Kyt9aWYoNCE9PXIpcmV0dXJuO2JyZWFrfWlmKCI6Ij09PWQoKSl7aWYoZisrLCFkKCkpcmV0dXJufWVsc2UgaWYoZCgpKXJldHVybjtjW3UrK109ZX1lbHNle2lmKG51bGwhPT1sKXJldHVybjtmKyssdSsrLGw9dX19aWYobnVsbCE9PWwpe2E9dS1sLHU9Nzt3aGlsZSgwIT09dSYmYT4wKXM9Y1t1XSxjW3UtLV09Y1tsK2EtMV0sY1tsKy0tYV09c31lbHNlIGlmKDghPT11KXJldHVybjtyZXR1cm4gY30sdXQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW51bGwsbj0xLHI9bnVsbCxpPTAsbz0wO288ODtvKyspMCE9PXRbb10/KGk+biYmKGU9cixuPWkpLHI9bnVsbCxpPTApOihudWxsPT09ciYmKHI9byksKytpKTtyZXR1cm4gaT5uP3I6ZX0sbHQ9ZnVuY3Rpb24odCl7dmFyIGUsbixyLGk7aWYoIm51bWJlciI9PXR5cGVvZiB0KXtmb3IoZT1bXSxuPTA7bjw0O24rKylVKGUsdCUyNTYpLHQ9TSh0LzI1Nik7cmV0dXJuIEwoZSwiLiIpfWlmKCJvYmplY3QiPT10eXBlb2YgdCl7Zm9yKGU9IiIscj11dCh0KSxuPTA7bjw4O24rKylpJiYwPT09dFtuXXx8KGkmJihpPSExKSxyPT09bj8oZSs9bj8iOiI6Ijo6IixpPSEwKTooZSs9Uih0W25dLDE2KSxuPDcmJihlKz0iOiIpKSk7cmV0dXJuIlsiK2UrIl0ifXJldHVybiB0fSxmdD17fSxkdD1wKHt9LGZ0LHsiICI6MSwnIic6MSwiPCI6MSwiPiI6MSwiYCI6MX0pLGh0PXAoe30sZHQseyIjIjoxLCI/IjoxLCJ7IjoxLCJ9IjoxfSkscHQ9cCh7fSxodCx7Ii8iOjEsIjoiOjEsIjsiOjEsIj0iOjEsIkAiOjEsIlsiOjEsIlxcIjoxLCJdIjoxLCJeIjoxLCJ8IjoxfSksdnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1tKHQsMCk7cmV0dXJuIG4+MzImJm48MTI3JiYhaChlLHQpP3Q6ZW5jb2RlVVJJQ29tcG9uZW50KHQpfSxndD17ZnRwOjIxLGZpbGU6bnVsbCxodHRwOjgwLGh0dHBzOjQ0Myx3czo4MCx3c3M6NDQzfSxtdD1mdW5jdGlvbih0LGUpe3ZhciBuO3JldHVybiAyPT09dC5sZW5ndGgmJiQoRyxQKHQsMCkpJiYoIjoiPT09KG49UCh0LDEpKXx8IWUmJiJ8Ij09PW4pfSxidD1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gdC5sZW5ndGg+MSYmbXQoVyh0LDAsMikpJiYoMj09PXQubGVuZ3RofHwiLyI9PT0oZT1QKHQsMikpfHwiXFwiPT09ZXx8Ij8iPT09ZXx8IiMiPT09ZSl9LHl0PWZ1bmN0aW9uKHQpe3JldHVybiIuIj09PXR8fCIlMmUiPT09SCh0KX0sX3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9SCh0KSwiLi4iPT09dHx8IiUyZS4iPT09dHx8Ii4lMmUiPT09dHx8IiUyZSUyZSI9PT10fSx3dD17fSxTdD17fSx4dD17fSxrdD17fSxDdD17fSxUdD17fSxPdD17fSxBdD17fSxFdD17fSxqdD17fSxNdD17fSxJdD17fSxQdD17fSwkdD17fSxMdD17fSxSdD17fSxOdD17fSxEdD17fSxCdD17fSxGdD17fSx6dD17fSxXdD1mdW5jdGlvbih0LGUsbil7dmFyIHIsaSxvLGE9eSh0KTtpZihlKXtpZihpPXRoaXMucGFyc2UoYSksaSl0aHJvdyBuZXcgRShpKTt0aGlzLnNlYXJjaFBhcmFtcz1udWxsfWVsc2V7aWYodm9pZCAwIT09biYmKHI9bmV3IFd0KG4sITApKSxpPXRoaXMucGFyc2UoYSxudWxsLHIpLGkpdGhyb3cgbmV3IEUoaSk7bz1PKG5ldyBUKSxvLmJpbmRVUkwodGhpcyksdGhpcy5zZWFyY2hQYXJhbXM9b319O1d0LnByb3RvdHlwZT17dHlwZToiVVJMIixwYXJzZTpmdW5jdGlvbih0LGUsbil7dmFyIGksbyxhLHMsYz10aGlzLHU9ZXx8d3QsbD0wLGY9IiIsZD0hMSxwPSExLG09ITE7dD15KHQpLGV8fChjLnNjaGVtZT0iIixjLnVzZXJuYW1lPSIiLGMucGFzc3dvcmQ9IiIsYy5ob3N0PW51bGwsYy5wb3J0PW51bGwsYy5wYXRoPVtdLGMucXVlcnk9bnVsbCxjLmZyYWdtZW50PW51bGwsYy5jYW5ub3RCZUFCYXNlVVJMPSExLHQ9Qih0LGl0LCIiKSx0PUIodCxvdCwiJDEiKSksdD1CKHQsYXQsIiIpLGk9dih0KTt3aGlsZShsPD1pLmxlbmd0aCl7c3dpdGNoKG89aVtsXSx1KXtjYXNlIHd0OmlmKCFvfHwhJChHLG8pKXtpZihlKXJldHVybiBWO3U9eHQ7Y29udGludWV9Zis9SChvKSx1PVN0O2JyZWFrO2Nhc2UgU3Q6aWYobyYmKCQoUSxvKXx8IisiPT09b3x8Ii0iPT09b3x8Ii4iPT09bykpZis9SChvKTtlbHNle2lmKCI6IiE9PW8pe2lmKGUpcmV0dXJuIFY7Zj0iIix1PXh0LGw9MDtjb250aW51ZX1pZihlJiYoYy5pc1NwZWNpYWwoKSE9PWgoZ3QsZil8fCJmaWxlIj09PWYmJihjLmluY2x1ZGVzQ3JlZGVudGlhbHMoKXx8bnVsbCE9PWMucG9ydCl8fCJmaWxlIj09PWMuc2NoZW1lJiYhYy5ob3N0KSlyZXR1cm47aWYoYy5zY2hlbWU9ZixlKXJldHVybiB2b2lkKGMuaXNTcGVjaWFsKCkmJmd0W2Muc2NoZW1lXT09PWMucG9ydCYmKGMucG9ydD1udWxsKSk7Zj0iIiwiZmlsZSI9PT1jLnNjaGVtZT91PSR0OmMuaXNTcGVjaWFsKCkmJm4mJm4uc2NoZW1lPT09Yy5zY2hlbWU/dT1rdDpjLmlzU3BlY2lhbCgpP3U9QXQ6Ii8iPT09aVtsKzFdPyh1PUN0LGwrKyk6KGMuY2Fubm90QmVBQmFzZVVSTD0hMCxEKGMucGF0aCwiIiksdT1CdCl9YnJlYWs7Y2FzZSB4dDppZighbnx8bi5jYW5ub3RCZUFCYXNlVVJMJiYiIyIhPT1vKXJldHVybiBWO2lmKG4uY2Fubm90QmVBQmFzZVVSTCYmIiMiPT09byl7Yy5zY2hlbWU9bi5zY2hlbWUsYy5wYXRoPWcobi5wYXRoKSxjLnF1ZXJ5PW4ucXVlcnksYy5mcmFnbWVudD0iIixjLmNhbm5vdEJlQUJhc2VVUkw9ITAsdT16dDticmVha311PSJmaWxlIj09PW4uc2NoZW1lPyR0OlR0O2NvbnRpbnVlO2Nhc2Uga3Q6aWYoIi8iIT09b3x8Ii8iIT09aVtsKzFdKXt1PVR0O2NvbnRpbnVlfXU9RXQsbCsrO2JyZWFrO2Nhc2UgQ3Q6aWYoIi8iPT09byl7dT1qdDticmVha311PUR0O2NvbnRpbnVlO2Nhc2UgVHQ6aWYoYy5zY2hlbWU9bi5zY2hlbWUsbz09PXIpYy51c2VybmFtZT1uLnVzZXJuYW1lLGMucGFzc3dvcmQ9bi5wYXNzd29yZCxjLmhvc3Q9bi5ob3N0LGMucG9ydD1uLnBvcnQsYy5wYXRoPWcobi5wYXRoKSxjLnF1ZXJ5PW4ucXVlcnk7ZWxzZSBpZigiLyI9PT1vfHwiXFwiPT09byYmYy5pc1NwZWNpYWwoKSl1PU90O2Vsc2UgaWYoIj8iPT09byljLnVzZXJuYW1lPW4udXNlcm5hbWUsYy5wYXNzd29yZD1uLnBhc3N3b3JkLGMuaG9zdD1uLmhvc3QsYy5wb3J0PW4ucG9ydCxjLnBhdGg9ZyhuLnBhdGgpLGMucXVlcnk9IiIsdT1GdDtlbHNle2lmKCIjIiE9PW8pe2MudXNlcm5hbWU9bi51c2VybmFtZSxjLnBhc3N3b3JkPW4ucGFzc3dvcmQsYy5ob3N0PW4uaG9zdCxjLnBvcnQ9bi5wb3J0LGMucGF0aD1nKG4ucGF0aCksYy5wYXRoLmxlbmd0aC0tLHU9RHQ7Y29udGludWV9Yy51c2VybmFtZT1uLnVzZXJuYW1lLGMucGFzc3dvcmQ9bi5wYXNzd29yZCxjLmhvc3Q9bi5ob3N0LGMucG9ydD1uLnBvcnQsYy5wYXRoPWcobi5wYXRoKSxjLnF1ZXJ5PW4ucXVlcnksYy5mcmFnbWVudD0iIix1PXp0fWJyZWFrO2Nhc2UgT3Q6aWYoIWMuaXNTcGVjaWFsKCl8fCIvIiE9PW8mJiJcXCIhPT1vKXtpZigiLyIhPT1vKXtjLnVzZXJuYW1lPW4udXNlcm5hbWUsYy5wYXNzd29yZD1uLnBhc3N3b3JkLGMuaG9zdD1uLmhvc3QsYy5wb3J0PW4ucG9ydCx1PUR0O2NvbnRpbnVlfXU9anR9ZWxzZSB1PUV0O2JyZWFrO2Nhc2UgQXQ6aWYodT1FdCwiLyIhPT1vfHwiLyIhPT1QKGYsbCsxKSljb250aW51ZTtsKys7YnJlYWs7Y2FzZSBFdDppZigiLyIhPT1vJiYiXFwiIT09byl7dT1qdDtjb250aW51ZX1icmVhaztjYXNlIGp0OmlmKCJAIj09PW8pe2QmJihmPSIlNDAiK2YpLGQ9ITAsYT12KGYpO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgXz1hW2JdO2lmKCI6IiE9PV98fG0pe3ZhciB3PXZ0KF8scHQpO20/Yy5wYXNzd29yZCs9dzpjLnVzZXJuYW1lKz13fWVsc2UgbT0hMH1mPSIifWVsc2UgaWYobz09PXJ8fCIvIj09PW98fCI/Ij09PW98fCIjIj09PW98fCJcXCI9PT1vJiZjLmlzU3BlY2lhbCgpKXtpZihkJiYiIj09PWYpcmV0dXJuIHE7bC09dihmKS5sZW5ndGgrMSxmPSIiLHU9TXR9ZWxzZSBmKz1vO2JyZWFrO2Nhc2UgTXQ6Y2FzZSBJdDppZihlJiYiZmlsZSI9PT1jLnNjaGVtZSl7dT1SdDtjb250aW51ZX1pZigiOiIhPT1vfHxwKXtpZihvPT09cnx8Ii8iPT09b3x8Ij8iPT09b3x8IiMiPT09b3x8IlxcIj09PW8mJmMuaXNTcGVjaWFsKCkpe2lmKGMuaXNTcGVjaWFsKCkmJiIiPT09ZilyZXR1cm4gWTtpZihlJiYiIj09PWYmJihjLmluY2x1ZGVzQ3JlZGVudGlhbHMoKXx8bnVsbCE9PWMucG9ydCkpcmV0dXJuO2lmKHM9Yy5wYXJzZUhvc3QoZikscylyZXR1cm4gcztpZihmPSIiLHU9TnQsZSlyZXR1cm47Y29udGludWV9IlsiPT09bz9wPSEwOiJdIj09PW8mJihwPSExKSxmKz1vfWVsc2V7aWYoIiI9PT1mKXJldHVybiBZO2lmKHM9Yy5wYXJzZUhvc3QoZikscylyZXR1cm4gcztpZihmPSIiLHU9UHQsZT09PUl0KXJldHVybn1icmVhaztjYXNlIFB0OmlmKCEkKEosbykpe2lmKG89PT1yfHwiLyI9PT1vfHwiPyI9PT1vfHwiIyI9PT1vfHwiXFwiPT09byYmYy5pc1NwZWNpYWwoKXx8ZSl7aWYoIiIhPT1mKXt2YXIgUz1qKGYsMTApO2lmKFM+NjU1MzUpcmV0dXJuIFg7Yy5wb3J0PWMuaXNTcGVjaWFsKCkmJlM9PT1ndFtjLnNjaGVtZV0/bnVsbDpTLGY9IiJ9aWYoZSlyZXR1cm47dT1OdDtjb250aW51ZX1yZXR1cm4gWH1mKz1vO2JyZWFrO2Nhc2UgJHQ6aWYoYy5zY2hlbWU9ImZpbGUiLCIvIj09PW98fCJcXCI9PT1vKXU9THQ7ZWxzZXtpZighbnx8ImZpbGUiIT09bi5zY2hlbWUpe3U9RHQ7Y29udGludWV9c3dpdGNoKG8pe2Nhc2UgcjpjLmhvc3Q9bi5ob3N0LGMucGF0aD1nKG4ucGF0aCksYy5xdWVyeT1uLnF1ZXJ5O2JyZWFrO2Nhc2UiPyI6Yy5ob3N0PW4uaG9zdCxjLnBhdGg9ZyhuLnBhdGgpLGMucXVlcnk9IiIsdT1GdDticmVhaztjYXNlIiMiOmMuaG9zdD1uLmhvc3QsYy5wYXRoPWcobi5wYXRoKSxjLnF1ZXJ5PW4ucXVlcnksYy5mcmFnbWVudD0iIix1PXp0O2JyZWFrO2RlZmF1bHQ6YnQoTChnKGksbCksIiIpKXx8KGMuaG9zdD1uLmhvc3QsYy5wYXRoPWcobi5wYXRoKSxjLnNob3J0ZW5QYXRoKCkpLHU9RHQ7Y29udGludWV9fWJyZWFrO2Nhc2UgTHQ6aWYoIi8iPT09b3x8IlxcIj09PW8pe3U9UnQ7YnJlYWt9biYmImZpbGUiPT09bi5zY2hlbWUmJiFidChMKGcoaSxsKSwiIikpJiYobXQobi5wYXRoWzBdLCEwKT9EKGMucGF0aCxuLnBhdGhbMF0pOmMuaG9zdD1uLmhvc3QpLHU9RHQ7Y29udGludWU7Y2FzZSBSdDppZihvPT09cnx8Ii8iPT09b3x8IlxcIj09PW98fCI/Ij09PW98fCIjIj09PW8pe2lmKCFlJiZtdChmKSl1PUR0O2Vsc2UgaWYoIiI9PT1mKXtpZihjLmhvc3Q9IiIsZSlyZXR1cm47dT1OdH1lbHNle2lmKHM9Yy5wYXJzZUhvc3QoZikscylyZXR1cm4gcztpZigibG9jYWxob3N0Ij09PWMuaG9zdCYmKGMuaG9zdD0iIiksZSlyZXR1cm47Zj0iIix1PU50fWNvbnRpbnVlfWYrPW87YnJlYWs7Y2FzZSBOdDppZihjLmlzU3BlY2lhbCgpKXtpZih1PUR0LCIvIiE9PW8mJiJcXCIhPT1vKWNvbnRpbnVlfWVsc2UgaWYoZXx8Ij8iIT09bylpZihlfHwiIyIhPT1vKXtpZihvIT09ciYmKHU9RHQsIi8iIT09bykpY29udGludWV9ZWxzZSBjLmZyYWdtZW50PSIiLHU9enQ7ZWxzZSBjLnF1ZXJ5PSIiLHU9RnQ7YnJlYWs7Y2FzZSBEdDppZihvPT09cnx8Ii8iPT09b3x8IlxcIj09PW8mJmMuaXNTcGVjaWFsKCl8fCFlJiYoIj8iPT09b3x8IiMiPT09bykpe2lmKF90KGYpPyhjLnNob3J0ZW5QYXRoKCksIi8iPT09b3x8IlxcIj09PW8mJmMuaXNTcGVjaWFsKCl8fEQoYy5wYXRoLCIiKSk6eXQoZik/Ii8iPT09b3x8IlxcIj09PW8mJmMuaXNTcGVjaWFsKCl8fEQoYy5wYXRoLCIiKTooImZpbGUiPT09Yy5zY2hlbWUmJiFjLnBhdGgubGVuZ3RoJiZtdChmKSYmKGMuaG9zdCYmKGMuaG9zdD0iIiksZj1QKGYsMCkrIjoiKSxEKGMucGF0aCxmKSksZj0iIiwiZmlsZSI9PT1jLnNjaGVtZSYmKG89PT1yfHwiPyI9PT1vfHwiIyI9PT1vKSl3aGlsZShjLnBhdGgubGVuZ3RoPjEmJiIiPT09Yy5wYXRoWzBdKUYoYy5wYXRoKTsiPyI9PT1vPyhjLnF1ZXJ5PSIiLHU9RnQpOiIjIj09PW8mJihjLmZyYWdtZW50PSIiLHU9enQpfWVsc2UgZis9dnQobyxodCk7YnJlYWs7Y2FzZSBCdDoiPyI9PT1vPyhjLnF1ZXJ5PSIiLHU9RnQpOiIjIj09PW8/KGMuZnJhZ21lbnQ9IiIsdT16dCk6byE9PXImJihjLnBhdGhbMF0rPXZ0KG8sZnQpKTticmVhaztjYXNlIEZ0OmV8fCIjIiE9PW8/byE9PXImJigiJyI9PT1vJiZjLmlzU3BlY2lhbCgpP2MucXVlcnkrPSIlMjciOmMucXVlcnkrPSIjIj09PW8/IiUyMyI6dnQobyxmdCkpOihjLmZyYWdtZW50PSIiLHU9enQpO2JyZWFrO2Nhc2UgenQ6byE9PXImJihjLmZyYWdtZW50Kz12dChvLGR0KSk7YnJlYWt9bCsrfX0scGFyc2VIb3N0OmZ1bmN0aW9uKHQpe3ZhciBlLG4scjtpZigiWyI9PT1QKHQsMCkpe2lmKCJdIiE9PVAodCx0Lmxlbmd0aC0xKSlyZXR1cm4gWTtpZihlPWN0KFcodCwxLC0xKSksIWUpcmV0dXJuIFk7dGhpcy5ob3N0PWV9ZWxzZSBpZih0aGlzLmlzU3BlY2lhbCgpKXtpZih0PWIodCksJChudCx0KSlyZXR1cm4gWTtpZihlPXN0KHQpLG51bGw9PT1lKXJldHVybiBZO3RoaXMuaG9zdD1lfWVsc2V7aWYoJChydCx0KSlyZXR1cm4gWTtmb3IoZT0iIixuPXYodCkscj0wO3I8bi5sZW5ndGg7cisrKWUrPXZ0KG5bcl0sZnQpO3RoaXMuaG9zdD1lfX0sY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaG9zdHx8dGhpcy5jYW5ub3RCZUFCYXNlVVJMfHwiZmlsZSI9PT10aGlzLnNjaGVtZX0saW5jbHVkZXNDcmVkZW50aWFsczpmdW5jdGlvbigpe3JldHVybiIiIT09dGhpcy51c2VybmFtZXx8IiIhPT10aGlzLnBhc3N3b3JkfSxpc1NwZWNpYWw6ZnVuY3Rpb24oKXtyZXR1cm4gaChndCx0aGlzLnNjaGVtZSl9LHNob3J0ZW5QYXRoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXRoLGU9dC5sZW5ndGg7IWV8fCJmaWxlIj09PXRoaXMuc2NoZW1lJiYxPT09ZSYmbXQodFswXSwhMCl8fHQubGVuZ3RoLS19LHNlcmlhbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LnNjaGVtZSxuPXQudXNlcm5hbWUscj10LnBhc3N3b3JkLGk9dC5ob3N0LG89dC5wb3J0LGE9dC5wYXRoLHM9dC5xdWVyeSxjPXQuZnJhZ21lbnQsdT1lKyI6IjtyZXR1cm4gbnVsbCE9PWk/KHUrPSIvLyIsdC5pbmNsdWRlc0NyZWRlbnRpYWxzKCkmJih1Kz1uKyhyPyI6IityOiIiKSsiQCIpLHUrPWx0KGkpLG51bGwhPT1vJiYodSs9IjoiK28pKToiZmlsZSI9PT1lJiYodSs9Ii8vIiksdSs9dC5jYW5ub3RCZUFCYXNlVVJMP2FbMF06YS5sZW5ndGg/Ii8iK0woYSwiLyIpOiIiLG51bGwhPT1zJiYodSs9Ij8iK3MpLG51bGwhPT1jJiYodSs9IiMiK2MpLHV9LHNldEhyZWY6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJzZSh0KTtpZihlKXRocm93IG5ldyBFKGUpO3RoaXMuc2VhcmNoUGFyYW1zLnVwZGF0ZSgpfSxnZXRPcmlnaW46ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNjaGVtZSxlPXRoaXMucG9ydDtpZigiYmxvYiI9PT10KXRyeXtyZXR1cm4gbmV3IEh0KHQucGF0aFswXSkub3JpZ2lufWNhdGNoKG4pe3JldHVybiJudWxsIn1yZXR1cm4iZmlsZSIhPT10JiZ0aGlzLmlzU3BlY2lhbCgpP3QrIjovLyIrbHQodGhpcy5ob3N0KSsobnVsbCE9PWU/IjoiK2U6IiIpOiJudWxsIn0sZ2V0UHJvdG9jb2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zY2hlbWUrIjoifSxzZXRQcm90b2NvbDpmdW5jdGlvbih0KXt0aGlzLnBhcnNlKHkodCkrIjoiLHd0KX0sZ2V0VXNlcm5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51c2VybmFtZX0sc2V0VXNlcm5hbWU6ZnVuY3Rpb24odCl7dmFyIGU9dih5KHQpKTtpZighdGhpcy5jYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQoKSl7dGhpcy51c2VybmFtZT0iIjtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0aGlzLnVzZXJuYW1lKz12dChlW25dLHB0KX19LGdldFBhc3N3b3JkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFzc3dvcmR9LHNldFBhc3N3b3JkOmZ1bmN0aW9uKHQpe3ZhciBlPXYoeSh0KSk7aWYoIXRoaXMuY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0KCkpe3RoaXMucGFzc3dvcmQ9IiI7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdGhpcy5wYXNzd29yZCs9dnQoZVtuXSxwdCl9fSxnZXRIb3N0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ob3N0LGU9dGhpcy5wb3J0O3JldHVybiBudWxsPT09dD8iIjpudWxsPT09ZT9sdCh0KTpsdCh0KSsiOiIrZX0sc2V0SG9zdDpmdW5jdGlvbih0KXt0aGlzLmNhbm5vdEJlQUJhc2VVUkx8fHRoaXMucGFyc2UodCxNdCl9LGdldEhvc3RuYW1lOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ob3N0O3JldHVybiBudWxsPT09dD8iIjpsdCh0KX0sc2V0SG9zdG5hbWU6ZnVuY3Rpb24odCl7dGhpcy5jYW5ub3RCZUFCYXNlVVJMfHx0aGlzLnBhcnNlKHQsSXQpfSxnZXRQb3J0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wb3J0O3JldHVybiBudWxsPT09dD8iIjp5KHQpfSxzZXRQb3J0OmZ1bmN0aW9uKHQpe3RoaXMuY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0KCl8fCh0PXkodCksIiI9PT10P3RoaXMucG9ydD1udWxsOnRoaXMucGFyc2UodCxQdCkpfSxnZXRQYXRobmFtZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGF0aDtyZXR1cm4gdGhpcy5jYW5ub3RCZUFCYXNlVVJMP3RbMF06dC5sZW5ndGg/Ii8iK0wodCwiLyIpOiIifSxzZXRQYXRobmFtZTpmdW5jdGlvbih0KXt0aGlzLmNhbm5vdEJlQUJhc2VVUkx8fCh0aGlzLnBhdGg9W10sdGhpcy5wYXJzZSh0LE50KSl9LGdldFNlYXJjaDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucXVlcnk7cmV0dXJuIHQ/Ij8iK3Q6IiJ9LHNldFNlYXJjaDpmdW5jdGlvbih0KXt0PXkodCksIiI9PT10P3RoaXMucXVlcnk9bnVsbDooIj8iPT09UCh0LDApJiYodD1XKHQsMSkpLHRoaXMucXVlcnk9IiIsdGhpcy5wYXJzZSh0LEZ0KSksdGhpcy5zZWFyY2hQYXJhbXMudXBkYXRlKCl9LGdldFNlYXJjaFBhcmFtczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlYXJjaFBhcmFtcy5mYWNhZGV9LGdldEhhc2g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmZyYWdtZW50O3JldHVybiB0PyIjIit0OiIifSxzZXRIYXNoOmZ1bmN0aW9uKHQpe3Q9eSh0KSwiIiE9PXQ/KCIjIj09PVAodCwwKSYmKHQ9Vyh0LDEpKSx0aGlzLmZyYWdtZW50PSIiLHRoaXMucGFyc2UodCx6dCkpOnRoaXMuZnJhZ21lbnQ9bnVsbH0sdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5xdWVyeT10aGlzLnNlYXJjaFBhcmFtcy5zZXJpYWxpemUoKXx8bnVsbH19O3ZhciBIdD1mdW5jdGlvbih0KXt2YXIgZT1kKHRoaXMsVXQpLG49dyhhcmd1bWVudHMubGVuZ3RoLDEpPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxyPWsoZSxuZXcgV3QodCwhMSxuKSk7b3x8KGUuaHJlZj1yLnNlcmlhbGl6ZSgpLGUub3JpZ2luPXIuZ2V0T3JpZ2luKCksZS5wcm90b2NvbD1yLmdldFByb3RvY29sKCksZS51c2VybmFtZT1yLmdldFVzZXJuYW1lKCksZS5wYXNzd29yZD1yLmdldFBhc3N3b3JkKCksZS5ob3N0PXIuZ2V0SG9zdCgpLGUuaG9zdG5hbWU9ci5nZXRIb3N0bmFtZSgpLGUucG9ydD1yLmdldFBvcnQoKSxlLnBhdGhuYW1lPXIuZ2V0UGF0aG5hbWUoKSxlLnNlYXJjaD1yLmdldFNlYXJjaCgpLGUuc2VhcmNoUGFyYW1zPXIuZ2V0U2VhcmNoUGFyYW1zKCksZS5oYXNoPXIuZ2V0SGFzaCgpKX0sVXQ9SHQucHJvdG90eXBlLHF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJue2dldDpmdW5jdGlvbigpe3JldHVybiBDKHRoaXMpW3RdKCl9LHNldDplJiZmdW5jdGlvbih0KXtyZXR1cm4gQyh0aGlzKVtlXSh0KX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9fTtpZihvJiYoZihVdCwiaHJlZiIscXQoInNlcmlhbGl6ZSIsInNldEhyZWYiKSksZihVdCwib3JpZ2luIixxdCgiZ2V0T3JpZ2luIikpLGYoVXQsInByb3RvY29sIixxdCgiZ2V0UHJvdG9jb2wiLCJzZXRQcm90b2NvbCIpKSxmKFV0LCJ1c2VybmFtZSIscXQoImdldFVzZXJuYW1lIiwic2V0VXNlcm5hbWUiKSksZihVdCwicGFzc3dvcmQiLHF0KCJnZXRQYXNzd29yZCIsInNldFBhc3N3b3JkIikpLGYoVXQsImhvc3QiLHF0KCJnZXRIb3N0Iiwic2V0SG9zdCIpKSxmKFV0LCJob3N0bmFtZSIscXQoImdldEhvc3RuYW1lIiwic2V0SG9zdG5hbWUiKSksZihVdCwicG9ydCIscXQoImdldFBvcnQiLCJzZXRQb3J0IikpLGYoVXQsInBhdGhuYW1lIixxdCgiZ2V0UGF0aG5hbWUiLCJzZXRQYXRobmFtZSIpKSxmKFV0LCJzZWFyY2giLHF0KCJnZXRTZWFyY2giLCJzZXRTZWFyY2giKSksZihVdCwic2VhcmNoUGFyYW1zIixxdCgiZ2V0U2VhcmNoUGFyYW1zIikpLGYoVXQsImhhc2giLHF0KCJnZXRIYXNoIiwic2V0SGFzaCIpKSksbChVdCwidG9KU09OIiwoZnVuY3Rpb24oKXtyZXR1cm4gQyh0aGlzKS5zZXJpYWxpemUoKX0pLHtlbnVtZXJhYmxlOiEwfSksbChVdCwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiBDKHRoaXMpLnNlcmlhbGl6ZSgpfSkse2VudW1lcmFibGU6ITB9KSxBKXt2YXIgVnQ9QS5jcmVhdGVPYmplY3RVUkwsWXQ9QS5yZXZva2VPYmplY3RVUkw7VnQmJmwoSHQsImNyZWF0ZU9iamVjdFVSTCIsYyhWdCxBKSksWXQmJmwoSHQsInJldm9rZU9iamVjdFVSTCIsYyhZdCxBKSl9XyhIdCwiVVJMIiksaSh7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDohYSxzaGFtOiFvfSx7VVJMOkh0fSl9LCI0MDhhIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImUzMzAiKTt0LmV4cG9ydHM9cigxLjEudmFsdWVPZil9LCI0MGQ1IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImQwMzkiKTt0LmV4cG9ydHM9IXIoKGZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdHx8dC5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KSl9LCI0MGU5IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oIjQxZjYiKTtpJiZyKHt0YXJnZXQ6IkFycmF5QnVmZmVyIixwcm90bzohMH0se3RyYW5zZmVyVG9GaXhlZExlbmd0aDpmdW5jdGlvbigpe3JldHVybiBpKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwLCExKX19KX0sIjQxOGYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiY2ZlOSIpLG89bigiZTMzMCIpLGE9bigiZjY5ZCIpLHM9bigiNmIzNyIpLGM9bigiMjAwNSIpLHU9bigiYjkxNyIpLGw9bigiZGE2MyIpLGY9dS5pMmMsZD11LmkyY1VybCxoPW8oIiIuY2hhckF0KSxwPWkuVWludDhBcnJheSx2PSFwfHwhcC5wcm90b3R5cGUudG9CYXNlNjR8fCFmdW5jdGlvbigpe3RyeXt2YXIgdD1uZXcgcDt0LnRvQmFzZTY0KG51bGwpfWNhdGNoKGUpe3JldHVybiEwfX0oKTtwJiZyKHt0YXJnZXQ6IlVpbnQ4QXJyYXkiLHByb3RvOiEwLGZvcmNlZDp2fSx7dG9CYXNlNjQ6ZnVuY3Rpb24oKXt2YXIgdD1zKHRoaXMpLGU9YXJndW1lbnRzLmxlbmd0aD9hKGFyZ3VtZW50c1swXSk6dm9pZCAwLG49ImJhc2U2NCI9PT1sKGUpP2Y6ZCxyPSEhZSYmISFlLm9taXRQYWRkaW5nO2ModGhpcy5idWZmZXIpO2Zvcih2YXIgaSxvPSIiLHU9MCxwPXQubGVuZ3RoLHY9ZnVuY3Rpb24odCl7cmV0dXJuIGgobixpPj42KnQmNjMpfTt1KzI8cDt1Kz0zKWk9KHRbdV08PDE2KSsodFt1KzFdPDw4KSt0W3UrMl0sbys9digzKSt2KDIpK3YoMSkrdigwKTtyZXR1cm4gdSsyPT09cD8oaT0odFt1XTw8MTYpKyh0W3UrMV08PDgpLG8rPXYoMykrdigyKSt2KDEpKyhyPyIiOiI9IikpOnUrMT09PXAmJihpPXRbdV08PDE2LG8rPXYoMykrdigyKSsocj8iIjoiPT0iKSksb319KX0sIjQxZjYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiY2ZlOSIpLGk9bigiZTMzMCIpLG89bigiNzI4MiIpLGE9bigiMGIyNSIpLHM9bigiMjAwNSIpLGM9bigiYjYyMCIpLHU9bigiMzZmMiIpLGw9bigiZGJlNSIpLGY9ci5zdHJ1Y3R1cmVkQ2xvbmUsZD1yLkFycmF5QnVmZmVyLGg9ci5EYXRhVmlldyxwPU1hdGgubWluLHY9ZC5wcm90b3R5cGUsZz1oLnByb3RvdHlwZSxtPWkodi5zbGljZSksYj1vKHYsInJlc2l6YWJsZSIsImdldCIpLHk9byh2LCJtYXhCeXRlTGVuZ3RoIiwiZ2V0IiksXz1pKGcuZ2V0SW50OCksdz1pKGcuc2V0SW50OCk7dC5leHBvcnRzPShsfHx1KSYmZnVuY3Rpb24odCxlLG4pe3ZhciByLGk9Yyh0KSxvPXZvaWQgMD09PWU/aTphKGUpLHY9IWJ8fCFiKHQpO2lmKHModCksbCYmKHQ9Zih0LHt0cmFuc2ZlcjpbdF19KSxpPT09byYmKG58fHYpKSlyZXR1cm4gdDtpZihpPj1vJiYoIW58fHYpKXI9bSh0LDAsbyk7ZWxzZXt2YXIgZz1uJiYhdiYmeT97bWF4Qnl0ZUxlbmd0aDp5KHQpfTp2b2lkIDA7cj1uZXcgZChvLGcpO2Zvcih2YXIgUz1uZXcgaCh0KSx4PW5ldyBoKHIpLGs9cChvLGkpLEM9MDtDPGs7QysrKXcoeCxDLF8oUyxDKSl9cmV0dXJuIGx8fHUodCkscn19LCI0MjhmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKTt0LmV4cG9ydHM9cn0sIjQ0YWQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZTMzMCIpLGk9bigiZDAzOSIpLG89bigiYzZiNiIpLGE9T2JqZWN0LHM9cigiIi5zcGxpdCk7dC5leHBvcnRzPWkoKGZ1bmN0aW9uKCl7cmV0dXJuIWEoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbih0KXtyZXR1cm4iU3RyaW5nIj09PW8odCk/cyh0LCIiKTphKHQpfTphfSwiNDRkMiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJiNjIyIiksaT1uKCI3YzczIiksbz1uKCI5YmYyIikuZixhPXIoInVuc2NvcGFibGVzIikscz1BcnJheS5wcm90b3R5cGU7dm9pZCAwPT09c1thXSYmbyhzLGEse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTppKG51bGwpfSksdC5leHBvcnRzPWZ1bmN0aW9uKHQpe3NbYV1bdF09ITB9fSwiNDRkZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0cnl7MT09PWFyZ3VtZW50cy5sZW5ndGg/Y29uc29sZS5lcnJvcih0KTpjb25zb2xlLmVycm9yKHQsZSl9Y2F0Y2gobil7fX19LCI0NGU3IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjg2MWQiKSxpPW4oImM2YjYiKSxvPW4oImI2MjIiKSxhPW8oIm1hdGNoIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiByKHQpJiYodm9pZCAwIT09KGU9dFthXSk/ISFlOiJSZWdFeHAiPT09aSh0KSl9fSw0NjI1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYzZiNiIpLGk9bigiZTMzMCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigiRnVuY3Rpb24iPT09cih0KSlyZXR1cm4gaSh0KX19LCI0NjZkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImM2NWIiKSxpPW4oImUzMzAiKSxvPW4oImQ3ODQiKSxhPW4oIjgyNWEiKSxzPW4oIjg2MWQiKSxjPW4oIjUwYzQiKSx1PW4oIjU3N2UiKSxsPW4oIjFkODAiKSxmPW4oImRjNGEiKSxkPW4oIjhhYTUiKSxoPW4oIjkwZDgiKSxwPW4oIjE0YzMiKSx2PWkoIiIuaW5kZXhPZik7bygibWF0Y2giLChmdW5jdGlvbih0LGUsbil7cmV0dXJuW2Z1bmN0aW9uKGUpe3ZhciBuPWwodGhpcyksaT1zKGUpP2YoZSx0KTp2b2lkIDA7cmV0dXJuIGk/cihpLGUsbik6bmV3IFJlZ0V4cChlKVt0XSh1KG4pKX0sZnVuY3Rpb24odCl7dmFyIHI9YSh0aGlzKSxpPXUodCksbz1uKGUscixpKTtpZihvLmRvbmUpcmV0dXJuIG8udmFsdWU7dmFyIHM9dShoKHIpKTtpZigtMT09PXYocywiZyIpKXJldHVybiBwKHIsaSk7dmFyIGw9LTEhPT12KHMsInUiKTtyLmxhc3RJbmRleD0wO3ZhciBmLGc9W10sbT0wO3doaWxlKG51bGwhPT0oZj1wKHIsaSkpKXt2YXIgYj11KGZbMF0pO2dbbV09YiwiIj09PWImJihyLmxhc3RJbmRleD1kKGksYyhyLmxhc3RJbmRleCksbCkpLG0rK31yZXR1cm4gMD09PW0/bnVsbDpnfV19KSl9LCI0NmM0IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm57aXRlcmF0b3I6dCxuZXh0OnQubmV4dCxkb25lOiExfX19LDQ3Mzg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjZmU5IiksaT1uKCJkMjU2Iiksbz1uKCIxNjI2IiksYT1uKCI5NGNhIikscz1uKCI4OTI1IiksYz1uKCJiNjIyIiksdT1uKCI4NTU4IiksbD1uKCJjNDMwIiksZj1uKCIxMjEyIiksZD1pJiZpLnByb3RvdHlwZSxoPWMoInNwZWNpZXMiKSxwPSExLHY9byhyLlByb21pc2VSZWplY3Rpb25FdmVudCksZz1hKCJQcm9taXNlIiwoZnVuY3Rpb24oKXt2YXIgdD1zKGkpLGU9dCE9PVN0cmluZyhpKTtpZighZSYmNjY9PT1mKXJldHVybiEwO2lmKGwmJighZFsiY2F0Y2giXXx8IWRbImZpbmFsbHkiXSkpcmV0dXJuITA7aWYoIWZ8fGY8NTF8fCEvbmF0aXZlIGNvZGUvLnRlc3QodCkpe3ZhciBuPW5ldyBpKChmdW5jdGlvbih0KXt0KDEpfSkpLHI9ZnVuY3Rpb24odCl7dCgoZnVuY3Rpb24oKXt9KSwoZnVuY3Rpb24oKXt9KSl9LG89bi5jb25zdHJ1Y3Rvcj17fTtpZihvW2hdPXIscD1uLnRoZW4oKGZ1bmN0aW9uKCl7fSkpaW5zdGFuY2VvZiByLCFwKXJldHVybiEwfXJldHVybiFlJiYoIkJST1dTRVIiPT09dXx8IkRFTk8iPT09dSkmJiF2fSkpO3QuZXhwb3J0cz17Q09OU1RSVUNUT1I6ZyxSRUpFQ1RJT05fRVZFTlQ6dixTVUJDTEFTU0lORzpwfX0sNDc1NDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybnt2YWx1ZTp0LGRvbmU6ZX19fSw0ODAxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bigiYjg0OCIpfSw0ODQwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiODI1YSIpLGk9bigiNTA4NyIpLG89bigiNzIzNCIpLGE9bigiYjYyMiIpLHM9YSgic3BlY2llcyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLGE9cih0KS5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09YXx8byhuPXIoYSlbc10pP2U6aShuKX19LCI0ODVhIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImM2NWIiKSxpPW4oIjE2MjYiKSxvPW4oIjg2MWQiKSxhPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbixzO2lmKCJzdHJpbmciPT09ZSYmaShuPXQudG9TdHJpbmcpJiYhbyhzPXIobix0KSkpcmV0dXJuIHM7aWYoaShuPXQudmFsdWVPZikmJiFvKHM9cihuLHQpKSlyZXR1cm4gcztpZigic3RyaW5nIiE9PWUmJmkobj10LnRvU3RyaW5nKSYmIW8ocz1yKG4sdCkpKXJldHVybiBzO3Rocm93IG5ldyBhKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LCI0OGE2IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJib3RoIjtyZXR1cm4iYm90aCI9PWU/dC5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIik6ImxlZnQiPT1lP3QucmVwbGFjZSgvXlxzKi8sIiIpOiJyaWdodCI9PWU/dC5yZXBsYWNlKC8oXHMqJCkvZywiIik6ImFsbCI9PWU/dC5yZXBsYWNlKC9ccysvZywiIik6dH1uKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDAsbigiYWMxZiIpLG4oIjUzMTkiKTtlLmRlZmF1bHQ9cn0sIjQ5OGEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiNThhOCIpLnRyaW0sbz1uKCJjOGQyIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpvKCJ0cmltIil9LHt0cmltOmZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcyl9fSl9LCI0YWUxIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImQwNjYiKSxvPW4oIjJiYTQiKSxhPW4oIjA1MzgiKSxzPW4oIjUwODciKSxjPW4oIjgyNWEiKSx1PW4oIjg2MWQiKSxsPW4oIjdjNzMiKSxmPW4oImQwMzkiKSxkPWkoIlJlZmxlY3QiLCJjb25zdHJ1Y3QiKSxoPU9iamVjdC5wcm90b3R5cGUscD1bXS5wdXNoLHY9ZigoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiEoZCgoZnVuY3Rpb24oKXt9KSxbXSx0KWluc3RhbmNlb2YgdCl9KSksZz0hZigoZnVuY3Rpb24oKXtkKChmdW5jdGlvbigpe30pKX0pKSxtPXZ8fGc7cih7dGFyZ2V0OiJSZWZsZWN0IixzdGF0OiEwLGZvcmNlZDptLHNoYW06bX0se2NvbnN0cnVjdDpmdW5jdGlvbih0LGUpe3ModCksYyhlKTt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPDM/dDpzKGFyZ3VtZW50c1syXSk7aWYoZyYmIXYpcmV0dXJuIGQodCxlLG4pO2lmKHQ9PT1uKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IHQ7Y2FzZSAxOnJldHVybiBuZXcgdChlWzBdKTtjYXNlIDI6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSk7Y2FzZSA0OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdKX12YXIgcj1bbnVsbF07cmV0dXJuIG8ocCxyLGUpLG5ldyhvKGEsdCxyKSl9dmFyIGk9bi5wcm90b3R5cGUsZj1sKHUoaSk/aTpoKSxtPW8odCxmLGUpO3JldHVybiB1KG0pP206Zn19KX0sIjRiMTEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPSJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJiJ1bmRlZmluZWQiIT10eXBlb2YgRGF0YVZpZXd9LCI0ZDYzIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjgzYWIiKSxpPW4oImNmZTkiKSxvPW4oImUzMzAiKSxhPW4oIjk0Y2EiKSxzPW4oIjcxNTYiKSxjPW4oIjkxMTIiKSx1PW4oIjdjNzMiKSxsPW4oIjI0MWMiKS5mLGY9bigiM2E5YiIpLGQ9bigiNDRlNyIpLGg9bigiNTc3ZSIpLHA9bigiOTBkOCIpLHY9bigiOWY3ZiIpLGc9bigiYWViMCIpLG09bigiY2IyZCIpLGI9bigiZDAzOSIpLHk9bigiMWEyZCIpLF89bigiNjlmMyIpLmVuZm9yY2Usdz1uKCIyNjI2IiksUz1uKCJiNjIyIikseD1uKCJmY2UzIiksaz1uKCIxMDdjIiksQz1TKCJtYXRjaCIpLFQ9aS5SZWdFeHAsTz1ULnByb3RvdHlwZSxBPWkuU3ludGF4RXJyb3IsRT1vKE8uZXhlYyksaj1vKCIiLmNoYXJBdCksTT1vKCIiLnJlcGxhY2UpLEk9bygiIi5pbmRleE9mKSxQPW8oIiIuc2xpY2UpLCQ9L15cPzxbXlxzXGQhIyUmKis8PT5AXl1bXlxzISMlJiorPD0+QF5dKj4vLEw9L2EvZyxSPS9hL2csTj1uZXcgVChMKSE9PUwsRD12Lk1JU1NFRF9TVElDS1ksQj12LlVOU1VQUE9SVEVEX1ksRj1yJiYoIU58fER8fHh8fGt8fGIoKGZ1bmN0aW9uKCl7cmV0dXJuIFJbQ109ITEsVChMKSE9PUx8fFQoUik9PT1SfHwiL2EvaSIhPT1TdHJpbmcoVChMLCJpIikpfSkpKSx6PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPXQubGVuZ3RoLHI9MCxpPSIiLG89ITE7cjw9bjtyKyspZT1qKHQsciksIlxcIiE9PWU/b3x8Ii4iIT09ZT8oIlsiPT09ZT9vPSEwOiJdIj09PWUmJihvPSExKSxpKz1lKTppKz0iW1xcc1xcU10iOmkrPWUraih0LCsrcik7cmV0dXJuIGl9LFc9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49dC5sZW5ndGgscj0wLGk9IiIsbz1bXSxhPXUobnVsbCkscz0hMSxjPSExLGw9MCxmPSIiO3I8PW47cisrKXtpZihlPWoodCxyKSwiXFwiPT09ZSllKz1qKHQsKytyKTtlbHNlIGlmKCJdIj09PWUpcz0hMTtlbHNlIGlmKCFzKXN3aXRjaCghMCl7Y2FzZSJbIj09PWU6cz0hMDticmVhaztjYXNlIigiPT09ZTppZihpKz1lLCI/OiI9PT1QKHQscisxLHIrMykpY29udGludWU7RSgkLFAodCxyKzEpKSYmKHIrPTIsYz0hMCksbCsrO2NvbnRpbnVlO2Nhc2UiPiI9PT1lJiZjOmlmKCIiPT09Znx8eShhLGYpKXRocm93IG5ldyBBKCJJbnZhbGlkIGNhcHR1cmUgZ3JvdXAgbmFtZSIpO2FbZl09ITAsb1tvLmxlbmd0aF09W2YsbF0sYz0hMSxmPSIiO2NvbnRpbnVlfWM/Zis9ZTppKz1lfXJldHVybltpLG9dfTtpZihhKCJSZWdFeHAiLEYpKXtmb3IodmFyIEg9ZnVuY3Rpb24odCxlKXt2YXIgbixyLGksbyxhLHUsbD1mKE8sdGhpcyksdj1kKHQpLGc9dm9pZCAwPT09ZSxtPVtdLGI9dDtpZighbCYmdiYmZyYmdC5jb25zdHJ1Y3Rvcj09PUgpcmV0dXJuIHQ7aWYoKHZ8fGYoTyx0KSkmJih0PXQuc291cmNlLGcmJihlPXAoYikpKSx0PXZvaWQgMD09PXQ/IiI6aCh0KSxlPXZvaWQgMD09PWU/IiI6aChlKSxiPXQseCYmImRvdEFsbCJpbiBMJiYocj0hIWUmJkkoZSwicyIpPi0xLHImJihlPU0oZSwvcy9nLCIiKSkpLG49ZSxEJiYic3RpY2t5ImluIEwmJihpPSEhZSYmSShlLCJ5Iik+LTEsaSYmQiYmKGU9TShlLC95L2csIiIpKSksayYmKG89Vyh0KSx0PW9bMF0sbT1vWzFdKSxhPXMoVCh0LGUpLGw/dGhpczpPLEgpLChyfHxpfHxtLmxlbmd0aCkmJih1PV8oYSksciYmKHUuZG90QWxsPSEwLHUucmF3PUgoeih0KSxuKSksaSYmKHUuc3RpY2t5PSEwKSxtLmxlbmd0aCYmKHUuZ3JvdXBzPW0pKSx0IT09Yil0cnl7YyhhLCJzb3VyY2UiLCIiPT09Yj8iKD86KSI6Yil9Y2F0Y2goeSl7fXJldHVybiBhfSxVPWwoVCkscT0wO1UubGVuZ3RoPnE7KWcoSCxULFVbcSsrXSk7Ty5jb25zdHJ1Y3Rvcj1ILEgucHJvdG90eXBlPU8sbShpLCJSZWdFeHAiLEgse2NvbnN0cnVjdG9yOiEwfSl9dygiUmVnRXhwIil9LCI0ZDY0IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImZjNmEiKSxpPW4oIjIzY2IiKSxvPW4oIjA3ZmEiKSxhPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4sYSl7dmFyIHM9cihlKSxjPW8ocyk7aWYoMD09PWMpcmV0dXJuIXQmJi0xO3ZhciB1LGw9aShhLGMpO2lmKHQmJm4hPT1uKXt3aGlsZShjPmwpaWYodT1zW2wrK10sdSE9PXUpcmV0dXJuITB9ZWxzZSBmb3IoO2M+bDtsKyspaWYoKHR8fGwgaW4gcykmJnNbbF09PT1uKXJldHVybiB0fHxsfHwwO3JldHVybiF0JiYtMX19O3QuZXhwb3J0cz17aW5jbHVkZXM6YSghMCksaW5kZXhPZjphKCExKX19LCI0ZDkwIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oIjBjY2IiKS5zdGFydCxvPW4oIjlhMGMiKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm99LHtwYWRTdGFydDpmdW5jdGlvbih0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSwiNGRlNCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJiNzI3IikuZmlsdGVyLG89bigiMWRkZSIpLGE9bygiZmlsdGVyIik7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFhfSx7ZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSl9LCI0ZGY0IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjAzNjYiKSxpPW4oImM2NWIiKSxvPW4oIjdiMGIiKSxhPW4oIjliZGQiKSxzPW4oImU5NWEiKSxjPW4oIjY4ZWUiKSx1PW4oIjA3ZmEiKSxsPW4oIjg0MTgiKSxmPW4oIjlhMWYiKSxkPW4oIjM1YTEiKSxoPUFycmF5O3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1vKHQpLG49Yyh0aGlzKSxwPWFyZ3VtZW50cy5sZW5ndGgsdj1wPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxnPXZvaWQgMCE9PXY7ZyYmKHY9cih2LHA+Mj9hcmd1bWVudHNbMl06dm9pZCAwKSk7dmFyIG0sYix5LF8sdyxTLHg9ZChlKSxrPTA7aWYoIXh8fHRoaXM9PT1oJiZzKHgpKWZvcihtPXUoZSksYj1uP25ldyB0aGlzKG0pOmgobSk7bT5rO2srKylTPWc/dihlW2tdLGspOmVba10sbChiLGssUyk7ZWxzZSBmb3IoYj1uP25ldyB0aGlzOltdLF89ZihlLHgpLHc9Xy5uZXh0OyEoeT1pKHcsXykpLmRvbmU7aysrKVM9Zz9hKF8sdixbeS52YWx1ZSxrXSwhMCk6eS52YWx1ZSxsKGIsayxTKTtyZXR1cm4gYi5sZW5ndGg9ayxifX0sIjRlODIiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiZTMzMCIpLG89bigiNTllZCIpLGE9bigiN2IwYiIpLHM9bigiMDdmYSIpLGM9bigiMDgzYSIpLHU9bigiNTc3ZSIpLGw9bigiZDAzOSIpLGY9bigiYWRkYiIpLGQ9bigiYTY0MCIpLGg9bigiM2Y3ZSIpLHA9bigiOTlmNCIpLHY9bigiMTIxMiIpLGc9bigiZWE4MyIpLG09W10sYj1pKG0uc29ydCkseT1pKG0ucHVzaCksXz1sKChmdW5jdGlvbigpe20uc29ydCh2b2lkIDApfSkpLHc9bCgoZnVuY3Rpb24oKXttLnNvcnQobnVsbCl9KSksUz1kKCJzb3J0IikseD0hbCgoZnVuY3Rpb24oKXtpZih2KXJldHVybiB2PDcwO2lmKCEoaCYmaD4zKSl7aWYocClyZXR1cm4hMDtpZihnKXJldHVybiBnPDYwMzt2YXIgdCxlLG4scixpPSIiO2Zvcih0PTY1O3Q8NzY7dCsrKXtzd2l0Y2goZT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpLHQpe2Nhc2UgNjY6Y2FzZSA2OTpjYXNlIDcwOmNhc2UgNzI6bj0zO2JyZWFrO2Nhc2UgNjg6Y2FzZSA3MTpuPTQ7YnJlYWs7ZGVmYXVsdDpuPTJ9Zm9yKHI9MDtyPDQ3O3IrKyltLnB1c2goe2s6ZStyLHY6bn0pfWZvcihtLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUudi10LnZ9KSkscj0wO3I8bS5sZW5ndGg7cisrKWU9bVtyXS5rLmNoYXJBdCgwKSxpLmNoYXJBdChpLmxlbmd0aC0xKSE9PWUmJihpKz1lKTtyZXR1cm4iREdCRUZIQUNJSksiIT09aX19KSksaz1ffHwhd3x8IVN8fCF4LEM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIHZvaWQgMD09PW4/LTE6dm9pZCAwPT09ZT8xOnZvaWQgMCE9PXQ/K3QoZSxuKXx8MDp1KGUpPnUobik/MTotMX19O3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDprfSx7c29ydDpmdW5jdGlvbih0KXt2b2lkIDAhPT10JiZvKHQpO3ZhciBlPWEodGhpcyk7aWYoeClyZXR1cm4gdm9pZCAwPT09dD9iKGUpOmIoZSx0KTt2YXIgbixyLGk9W10sdT1zKGUpO2ZvcihyPTA7cjx1O3IrKylyIGluIGUmJnkoaSxlW3JdKTtmKGksQyh0KSksbj1zKGkpLHI9MDt3aGlsZShyPG4pZVtyXT1pW3IrK107d2hpbGUocjx1KWMoZSxyKyspO3JldHVybiBlfX0pfSwiNGVhMSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkNDI5IiksaT1uKCJlYmI1Iiksbz1uKCJiY2JmIiksYT1uKCI1OTI2Iikscz1uKCJmNDk1IiksYz1pLmFUeXBlZEFycmF5LHU9aS5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsbD1pLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsZj1mdW5jdGlvbigpe3RyeXtuZXcgSW50OEFycmF5KDEpWyJ3aXRoIl0oMix7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IDh9fSl9Y2F0Y2godCl7cmV0dXJuIDg9PT10fX0oKSxkPWYmJmZ1bmN0aW9uKCl7dHJ5e25ldyBJbnQ4QXJyYXkoMSlbIndpdGgiXSgtLjUsMSl9Y2F0Y2godCl7cmV0dXJuITB9fSgpO2woIndpdGgiLHt3aXRoOmZ1bmN0aW9uKHQsZSl7dmFyIG49Yyh0aGlzKSxpPWEodCksbD1vKG4pP3MoZSk6K2U7cmV0dXJuIHIobix1KG4pLGksbCl9fVsid2l0aCJdLCFmfHxkKX0sIjRlYTQiOmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19dC5leHBvcnRzPW4sdC5leHBvcnRzLl9fZXNNb2R1bGU9ITAsdC5leHBvcnRzWyJkZWZhdWx0Il09dC5leHBvcnRzfSwiNGVjOSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI2ZjQ4Iil9LCI0ZjA2IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIG49W10scj17fSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV0sYT1vWzBdLHM9b1sxXSxjPW9bMl0sdT1vWzNdLGw9e2lkOnQrIjoiK2ksY3NzOnMsbWVkaWE6Yyxzb3VyY2VNYXA6dX07clthXT9yW2FdLnBhcnRzLnB1c2gobCk6bi5wdXNoKHJbYV09e2lkOmEscGFydHM6W2xdfSl9cmV0dXJuIG59bi5yKGUpLG4uZChlLCJkZWZhdWx0IiwoZnVuY3Rpb24oKXtyZXR1cm4gcH0pKTt2YXIgaT0idW5kZWZpbmVkIiE9PXR5cGVvZiBkb2N1bWVudDtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBERUJVRyYmREVCVUcmJiFpKXRocm93IG5ldyBFcnJvcigidnVlLXN0eWxlLWxvYWRlciBjYW5ub3QgYmUgdXNlZCBpbiBhIG5vbi1icm93c2VyIGVudmlyb25tZW50LiBVc2UgeyB0YXJnZXQ6ICdub2RlJyB9IGluIHlvdXIgV2VicGFjayBjb25maWcgdG8gaW5kaWNhdGUgYSBzZXJ2ZXItcmVuZGVyaW5nIGVudmlyb25tZW50LiIpO3ZhciBvPXt9LGE9aSYmKGRvY3VtZW50LmhlYWR8fGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0pLHM9bnVsbCxjPTAsdT0hMSxsPWZ1bmN0aW9uKCl7fSxmPW51bGwsZD0iZGF0YS12dWUtc3NyLWlkIixoPSJ1bmRlZmluZWQiIT09dHlwZW9mIG5hdmlnYXRvciYmL21zaWUgWzYtOV1cYi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpO2Z1bmN0aW9uIHAodCxlLG4saSl7dT1uLGY9aXx8e307dmFyIGE9cih0LGUpO3JldHVybiB2KGEpLGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1bXSxpPTA7aTxhLmxlbmd0aDtpKyspe3ZhciBzPWFbaV0sYz1vW3MuaWRdO2MucmVmcy0tLG4ucHVzaChjKX1lPyhhPXIodCxlKSx2KGEpKTphPVtdO2ZvcihpPTA7aTxuLmxlbmd0aDtpKyspe2M9bltpXTtpZigwPT09Yy5yZWZzKXtmb3IodmFyIHU9MDt1PGMucGFydHMubGVuZ3RoO3UrKyljLnBhcnRzW3VdKCk7ZGVsZXRlIG9bYy5pZF19fX19ZnVuY3Rpb24gdih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49dFtlXSxyPW9bbi5pZF07aWYocil7ci5yZWZzKys7Zm9yKHZhciBpPTA7aTxyLnBhcnRzLmxlbmd0aDtpKyspci5wYXJ0c1tpXShuLnBhcnRzW2ldKTtmb3IoO2k8bi5wYXJ0cy5sZW5ndGg7aSsrKXIucGFydHMucHVzaChtKG4ucGFydHNbaV0pKTtyLnBhcnRzLmxlbmd0aD5uLnBhcnRzLmxlbmd0aCYmKHIucGFydHMubGVuZ3RoPW4ucGFydHMubGVuZ3RoKX1lbHNle3ZhciBhPVtdO2ZvcihpPTA7aTxuLnBhcnRzLmxlbmd0aDtpKyspYS5wdXNoKG0obi5wYXJ0c1tpXSkpO29bbi5pZF09e2lkOm4uaWQscmVmczoxLHBhcnRzOmF9fX19ZnVuY3Rpb24gZygpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIHQudHlwZT0idGV4dC9jc3MiLGEuYXBwZW5kQ2hpbGQodCksdH1mdW5jdGlvbiBtKHQpe3ZhciBlLG4scj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzdHlsZVsiK2QrJ349IicrdC5pZCsnIl0nKTtpZihyKXtpZih1KXJldHVybiBsO3IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKX1pZihoKXt2YXIgaT1jKys7cj1zfHwocz1nKCkpLGU9eS5iaW5kKG51bGwscixpLCExKSxuPXkuYmluZChudWxsLHIsaSwhMCl9ZWxzZSByPWcoKSxlPV8uYmluZChudWxsLHIpLG49ZnVuY3Rpb24oKXtyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocil9O3JldHVybiBlKHQpLGZ1bmN0aW9uKHIpe2lmKHIpe2lmKHIuY3NzPT09dC5jc3MmJnIubWVkaWE9PT10Lm1lZGlhJiZyLnNvdXJjZU1hcD09PXQuc291cmNlTWFwKXJldHVybjtlKHQ9cil9ZWxzZSBuKCl9fXZhciBiPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIHRbZV09bix0LmZpbHRlcihCb29sZWFuKS5qb2luKCJcbiIpfX0oKTtmdW5jdGlvbiB5KHQsZSxuLHIpe3ZhciBpPW4/IiI6aihyLmNzcyk7aWYodC5zdHlsZVNoZWV0KXQuc3R5bGVTaGVldC5jc3NUZXh0PWIoZSxpKTtlbHNle3ZhciBvPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGkpLGE9dC5jaGlsZE5vZGVzO2FbZV0mJnQucmVtb3ZlQ2hpbGQoYVtlXSksYS5sZW5ndGg/dC5pbnNlcnRCZWZvcmUobyxhW2VdKTp0LmFwcGVuZENoaWxkKG8pfX1mdW5jdGlvbiBfKHQsZSl7dmFyIG49aihlLmNzcykscj1lLm1lZGlhLGk9ZS5zb3VyY2VNYXA7aWYociYmdC5zZXRBdHRyaWJ1dGUoIm1lZGlhIixyKSxmLnNzcklkJiZ0LnNldEF0dHJpYnV0ZShkLGUuaWQpLGkmJihuKz0iXG4vKiMgc291cmNlVVJMPSIraS5zb3VyY2VzWzBdKyIgKi8iLG4rPSJcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsIitidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShpKSkpKSsiICovIiksdC5zdHlsZVNoZWV0KXQuc3R5bGVTaGVldC5jc3NUZXh0PW47ZWxzZXt3aGlsZSh0LmZpcnN0Q2hpbGQpdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpO3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobikpfX12YXIgdz0vJVw/KFsrLV0/XGQrKFwuXGQrKT8pXD8lL2csUz0vXC5cPyVQQUdFXD8lL2cseD0vXD8lUEFHRVw/JVxbZGF0YS12LVthLXowLTldezh9XF0vZyxrPS91bmktcGFnZS1ib2R5XFtkYXRhLXYtW2EtejAtOV17OH1cXS9nLEM9L3ZhclwoLS1zdGF0dXMtYmFyLWhlaWdodFwpL2dpLFQ9L3ZhclwoLS13aW5kb3ctdG9wXCkvZ2ksTz0vdmFyXCgtLXdpbmRvdy1ib3R0b21cKS9naSxBPS92YXJcKC0td2luZG93LWxlZnRcKS9naSxFPS92YXJcKC0td2luZG93LXJpZ2h0XCkvZ2k7ZnVuY3Rpb24gaih0KXt2YXIgZT1NKCk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgdW5pJiYhdW5pLmNhbklVc2UoImNzcy52YXIiKSl7dmFyIG49SSgpO3Q9dC5yZXBsYWNlKEMsIjBweCIpLnJlcGxhY2UoVCxuLnRvcCsicHgiKS5yZXBsYWNlKE8sbi5ib3R0b20rInB4IikucmVwbGFjZShBLCIwcHgiKS5yZXBsYWNlKEUsIjBweCIpfXJldHVybiB0LnJlcGxhY2UoeCxlKS5yZXBsYWNlKFMsIiIpLnJlcGxhY2UoaywiYm9keS4iK2UrIiB1bmktcGFnZS1ib2R5IikucmVwbGFjZSgvXHtbXHNcU10rP1x9fEBtZWRpYS4rP1x7L2csKGZ1bmN0aW9uKHQpe3JldHVybiJ1bmRlZmluZWQiPT09dHlwZW9mIHVuaT90OnQucmVwbGFjZSh3LChmdW5jdGlvbih0LGUpe3JldHVybiB1bmkudXB4MnB4KGUpKyJweCJ9KSl9KSl9ZnVuY3Rpb24gTSgpe3ZhciB0PSJmdW5jdGlvbiI9PT10eXBlb2YgZ2V0QXBwJiZnZXRBcHAoKTtyZXR1cm4gdCYmdC4kcm91dGUmJnQuJHJvdXRlLm1ldGEmJnQuJHJvdXRlLm1ldGEubmFtZXx8IiJ9ZnVuY3Rpb24gSSgpe3ZhciB0PSJmdW5jdGlvbiI9PT10eXBlb2YgZ2V0QXBwJiZnZXRBcHAoKTtyZXR1cm4gdCYmdC4kcm91dGUmJnQuJHJvdXRlLm1ldGEmJnQuJHJvdXRlLm1ldGEubmFtZT97dG9wOnQuJHJvdXRlLm1ldGEud2luZG93VG9wLGJvdHRvbTp0LiRyb3V0ZS5tZXRhLmlzVGFiQmFyPzUwOjB9Ont0b3A6MCxib3R0b206MH19fSwiNGZhZCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkMDM5IiksaT1uKCI4NjFkIiksbz1uKCJjNmI2IiksYT1uKCJkODZiIikscz1PYmplY3QuaXNFeHRlbnNpYmxlLGM9cigoZnVuY3Rpb24oKXtzKDEpfSkpO3QuZXhwb3J0cz1jfHxhP2Z1bmN0aW9uKHQpe3JldHVybiEhaSh0KSYmKCghYXx8IkFycmF5QnVmZmVyIiE9PW8odCkpJiYoIXN8fHModCkpKX06c30sIjRmYWRjIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oIjZmNTMiKS5lbnRyaWVzO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwfSx7ZW50cmllczpmdW5jdGlvbih0KXtyZXR1cm4gaSh0KX19KX0sNTA4NzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjY4ZWUiKSxpPW4oIjBkNTEiKSxvPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYocih0KSlyZXR1cm4gdDt0aHJvdyBuZXcgbyhpKHQpKyIgaXMgbm90IGEgY29uc3RydWN0b3IiKX19LCI1MGM0IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjU5MjYiKSxpPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1yKHQpO3JldHVybiBlPjA/aShlLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSwiNTFlYiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI4MjVhIiksaT1uKCI0ODVhIiksbz1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHIodGhpcyksInN0cmluZyI9PT10fHwiZGVmYXVsdCI9PT10KXQ9InN0cmluZyI7ZWxzZSBpZigibnVtYmVyIiE9PXQpdGhyb3cgbmV3IG8oIkluY29ycmVjdCBoaW50Iik7cmV0dXJuIGkodGhpcyx0KX19LCI1MmM4IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImI1ZGIiKTt0LmV4cG9ydHM9Lyg/OmlwYWR8aXBob25lfGlwb2QpLiphcHBsZXdlYmtpdC9pLnRlc3Qocil9LDUzMTk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyYmE0IiksaT1uKCJjNjViIiksbz1uKCJlMzMwIiksYT1uKCJkNzg0Iikscz1uKCJkMDM5IiksYz1uKCI4MjVhIiksdT1uKCIxNjI2IiksbD1uKCI4NjFkIiksZj1uKCI1OTI2IiksZD1uKCI1MGM0IiksaD1uKCI1NzdlIikscD1uKCIxZDgwIiksdj1uKCI4YWE1IiksZz1uKCJkYzRhIiksbT1uKCIwY2IyIiksYj1uKCI5MGQ4IikseT1uKCIxNGMzIiksXz1uKCJiNjIyIiksdz1fKCJyZXBsYWNlIiksUz1NYXRoLm1heCx4PU1hdGgubWluLGs9byhbXS5jb25jYXQpLEM9byhbXS5wdXNoKSxUPW8oIiIuaW5kZXhPZiksTz1vKCIiLnNsaWNlKSxBPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3Q6U3RyaW5nKHQpfSxFPWZ1bmN0aW9uKCl7cmV0dXJuIiQwIj09PSJhIi5yZXBsYWNlKC8uLywiJDAiKX0oKSxqPWZ1bmN0aW9uKCl7cmV0dXJuISEvLi9bd10mJiIiPT09Ly4vW3ddKCJhIiwiJDAiKX0oKSxNPSFzKChmdW5jdGlvbigpe3ZhciB0PS8uLztyZXR1cm4gdC5leGVjPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHQuZ3JvdXBzPXthOiI3In0sdH0sIjciIT09IiIucmVwbGFjZSh0LCIkPGE+Iil9KSk7YSgicmVwbGFjZSIsKGZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1qPyIkIjoiJDAiO3JldHVybltmdW5jdGlvbih0LG4pe3ZhciByPXAodGhpcyksbz1sKHQpP2codCx3KTp2b2lkIDA7cmV0dXJuIG8/aShvLHQscixuKTppKGUsaChyKSx0LG4pfSxmdW5jdGlvbih0LGkpe3ZhciBhPWModGhpcykscz1oKHQpO2lmKCJzdHJpbmciPT10eXBlb2YgaSYmLTE9PT1UKGksbykmJi0xPT09VChpLCIkPCIpKXt2YXIgbD1uKGUsYSxzLGkpO2lmKGwuZG9uZSlyZXR1cm4gbC52YWx1ZX12YXIgcD11KGkpO3B8fChpPWgoaSkpO3ZhciBnLF89aChiKGEpKSx3PS0xIT09VChfLCJnIik7dyYmKGc9LTEhPT1UKF8sInUiKSxhLmxhc3RJbmRleD0wKTt2YXIgRSxqPVtdO3doaWxlKDEpe2lmKEU9eShhLHMpLG51bGw9PT1FKWJyZWFrO2lmKEMoaixFKSwhdylicmVhazt2YXIgTT1oKEVbMF0pOyIiPT09TSYmKGEubGFzdEluZGV4PXYocyxkKGEubGFzdEluZGV4KSxnKSl9Zm9yKHZhciBJPSIiLFA9MCwkPTA7JDxqLmxlbmd0aDskKyspe0U9alskXTtmb3IodmFyIEwsUj1oKEVbMF0pLE49Uyh4KGYoRS5pbmRleCkscy5sZW5ndGgpLDApLEQ9W10sQj0xO0I8RS5sZW5ndGg7QisrKUMoRCxBKEVbQl0pKTt2YXIgRj1FLmdyb3VwcztpZihwKXt2YXIgej1rKFtSXSxELE4scyk7dm9pZCAwIT09RiYmQyh6LEYpLEw9aChyKGksdm9pZCAwLHopKX1lbHNlIEw9bShSLHMsTixELEYsaSk7Tj49UCYmKEkrPU8ocyxQLE4pK0wsUD1OK1IubGVuZ3RoKX1yZXR1cm4gSStPKHMsUCl9XX0pLCFNfHwhRXx8ail9LDUzMjA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3ZhciBlPW5ldyBTZXQsbj17c2l6ZTowLGhhczpmdW5jdGlvbigpe3JldHVybiEwfSxrZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwibmV4dCIse2dldDpmdW5jdGlvbigpe3JldHVybiBlLmNsZWFyKCksZS5hZGQoNCksZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTohMH19fX0pfX0scj1lW3RdKG4pO3JldHVybiAxPT09ci5zaXplJiY0PT09ci52YWx1ZXMoKS5uZXh0KCkudmFsdWV9Y2F0Y2goaSl7cmV0dXJuITF9fX0sNTM1MjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oImUyNjAiKSxuKCJmNmQ2Iik7dmFyIHI9bigiMjNlNyIpLGk9bigiY2ZlOSIpLG89bigiMTU3YSIpLGE9bigiZDA2NiIpLHM9bigiYzY1YiIpLGM9bigiZTMzMCIpLHU9bigiODNhYiIpLGw9bigiZjM1NCIpLGY9bigiY2IyZCIpLGQ9bigiZWRkMCIpLGg9bigiNjk2NCIpLHA9bigiZDQ0ZSIpLHY9bigiZGNjMyIpLGc9bigiNjlmMyIpLG09bigiMTlhYSIpLGI9bigiMTYyNiIpLHk9bigiMWEyZCIpLF89bigiMDM2NiIpLHc9bigiZjVkZiIpLFM9bigiODI1YSIpLHg9bigiODYxZCIpLGs9bigiNTc3ZSIpLEM9bigiN2M3MyIpLFQ9bigiNWM2YyIpLE89bigiOWExZiIpLEE9bigiMzVhMSIpLEU9bigiNDc1NCIpLGo9bigiZDZkNiIpLE09bigiYjYyMiIpLEk9bigiYWRkYiIpLFA9TSgiaXRlcmF0b3IiKSwkPSJVUkxTZWFyY2hQYXJhbXMiLEw9JCsiSXRlcmF0b3IiLFI9Zy5zZXQsTj1nLmdldHRlckZvcigkKSxEPWcuZ2V0dGVyRm9yKEwpLEI9bygiZmV0Y2giKSxGPW8oIlJlcXVlc3QiKSx6PW8oIkhlYWRlcnMiKSxXPUYmJkYucHJvdG90eXBlLEg9eiYmei5wcm90b3R5cGUsVT1pLlR5cGVFcnJvcixxPWkuZW5jb2RlVVJJQ29tcG9uZW50LFY9U3RyaW5nLmZyb21DaGFyQ29kZSxZPWEoIlN0cmluZyIsImZyb21Db2RlUG9pbnQiKSxYPXBhcnNlSW50LEc9YygiIi5jaGFyQXQpLFE9YyhbXS5qb2luKSxKPWMoW10ucHVzaCksSz1jKCIiLnJlcGxhY2UpLFo9YyhbXS5zaGlmdCksdHQ9YyhbXS5zcGxpY2UpLGV0PWMoIiIuc3BsaXQpLG50PWMoIiIuc2xpY2UpLHJ0PWMoLy4vLmV4ZWMpLGl0PS9cKy9nLG90PSLvv70iLGF0PS9eWzAtOWEtZl0rJC9pLHN0PWZ1bmN0aW9uKHQsZSl7dmFyIG49bnQodCxlLGUrMik7cmV0dXJuIHJ0KGF0LG4pP1gobiwxNik6TmFOfSxjdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPTEyODtuPjAmJjAhPT0odCZuKTtuPj49MSllKys7cmV0dXJuIGV9LHV0PWZ1bmN0aW9uKHQpe3ZhciBlPW51bGw7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6ZT10WzBdO2JyZWFrO2Nhc2UgMjplPSgzMSZ0WzBdKTw8Nnw2MyZ0WzFdO2JyZWFrO2Nhc2UgMzplPSgxNSZ0WzBdKTw8MTJ8KDYzJnRbMV0pPDw2fDYzJnRbMl07YnJlYWs7Y2FzZSA0OmU9KDcmdFswXSk8PDE4fCg2MyZ0WzFdKTw8MTJ8KDYzJnRbMl0pPDw2fDYzJnRbM107YnJlYWt9cmV0dXJuIGU+MTExNDExMT9udWxsOmV9LGx0PWZ1bmN0aW9uKHQpe3Q9Syh0LGl0LCIgIik7dmFyIGU9dC5sZW5ndGgsbj0iIixyPTA7d2hpbGUocjxlKXt2YXIgaT1HKHQscik7aWYoIiUiPT09aSl7aWYoIiUiPT09Ryh0LHIrMSl8fHIrMz5lKXtuKz0iJSIscisrO2NvbnRpbnVlfXZhciBvPXN0KHQscisxKTtpZihvIT09byl7bis9aSxyKys7Y29udGludWV9cis9Mjt2YXIgYT1jdChvKTtpZigwPT09YSlpPVYobyk7ZWxzZXtpZigxPT09YXx8YT40KXtuKz1vdCxyKys7Y29udGludWV9dmFyIHM9W29dLGM9MTt3aGlsZShjPGEpe2lmKHIrKyxyKzM+ZXx8IiUiIT09Ryh0LHIpKWJyZWFrO3ZhciB1PXN0KHQscisxKTtpZih1IT09dSl7cis9MzticmVha31pZih1PjE5MXx8dTwxMjgpYnJlYWs7SihzLHUpLHIrPTIsYysrfWlmKHMubGVuZ3RoIT09YSl7bis9b3Q7Y29udGludWV9dmFyIGw9dXQocyk7bnVsbD09PWw/bis9b3Q6aT1ZKGwpfX1uKz1pLHIrK31yZXR1cm4gbn0sZnQ9L1shJygpfl18JTIwL2csZHQ9eyIhIjoiJTIxIiwiJyI6IiUyNyIsIigiOiIlMjgiLCIpIjoiJTI5IiwifiI6IiU3RSIsIiUyMCI6IisifSxodD1mdW5jdGlvbih0KXtyZXR1cm4gZHRbdF19LHB0PWZ1bmN0aW9uKHQpe3JldHVybiBLKHEodCksZnQsaHQpfSx2dD12KChmdW5jdGlvbih0LGUpe1IodGhpcyx7dHlwZTpMLHRhcmdldDpOKHQpLmVudHJpZXMsaW5kZXg6MCxraW5kOmV9KX0pLCQsKGZ1bmN0aW9uKCl7dmFyIHQ9RCh0aGlzKSxlPXQudGFyZ2V0LG49dC5pbmRleCsrO2lmKCFlfHxuPj1lLmxlbmd0aClyZXR1cm4gdC50YXJnZXQ9bnVsbCxFKHZvaWQgMCwhMCk7dmFyIHI9ZVtuXTtzd2l0Y2godC5raW5kKXtjYXNlImtleXMiOnJldHVybiBFKHIua2V5LCExKTtjYXNlInZhbHVlcyI6cmV0dXJuIEUoci52YWx1ZSwhMSl9cmV0dXJuIEUoW3Iua2V5LHIudmFsdWVdLCExKX0pLCEwKSxndD1mdW5jdGlvbih0KXt0aGlzLmVudHJpZXM9W10sdGhpcy51cmw9bnVsbCx2b2lkIDAhPT10JiYoeCh0KT90aGlzLnBhcnNlT2JqZWN0KHQpOnRoaXMucGFyc2VRdWVyeSgic3RyaW5nIj09dHlwZW9mIHQ/Ij8iPT09Ryh0LDApP250KHQsMSk6dDprKHQpKSl9O2d0LnByb3RvdHlwZT17dHlwZTokLGJpbmRVUkw6ZnVuY3Rpb24odCl7dGhpcy51cmw9dCx0aGlzLnVwZGF0ZSgpfSxwYXJzZU9iamVjdDpmdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGEsYyx1PXRoaXMuZW50cmllcyxsPUEodCk7aWYobCl7ZT1PKHQsbCksbj1lLm5leHQ7d2hpbGUoIShyPXMobixlKSkuZG9uZSl7aWYoaT1PKFMoci52YWx1ZSkpLG89aS5uZXh0LChhPXMobyxpKSkuZG9uZXx8KGM9cyhvLGkpKS5kb25lfHwhcyhvLGkpLmRvbmUpdGhyb3cgbmV3IFUoIkV4cGVjdGVkIHNlcXVlbmNlIHdpdGggbGVuZ3RoIDIiKTtKKHUse2tleTprKGEudmFsdWUpLHZhbHVlOmsoYy52YWx1ZSl9KX19ZWxzZSBmb3IodmFyIGYgaW4gdCl5KHQsZikmJkoodSx7a2V5OmYsdmFsdWU6ayh0W2ZdKX0pfSxwYXJzZVF1ZXJ5OmZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlLG4scj10aGlzLmVudHJpZXMsaT1ldCh0LCImIiksbz0wO3doaWxlKG88aS5sZW5ndGgpZT1pW28rK10sZS5sZW5ndGgmJihuPWV0KGUsIj0iKSxKKHIse2tleTpsdChaKG4pKSx2YWx1ZTpsdChRKG4sIj0iKSl9KSl9fSxzZXJpYWxpemU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuZW50cmllcyxuPVtdLHI9MDt3aGlsZShyPGUubGVuZ3RoKXQ9ZVtyKytdLEoobixwdCh0LmtleSkrIj0iK3B0KHQudmFsdWUpKTtyZXR1cm4gUShuLCImIil9LHVwZGF0ZTpmdW5jdGlvbigpe3RoaXMuZW50cmllcy5sZW5ndGg9MCx0aGlzLnBhcnNlUXVlcnkodGhpcy51cmwucXVlcnkpfSx1cGRhdGVVUkw6ZnVuY3Rpb24oKXt0aGlzLnVybCYmdGhpcy51cmwudXBkYXRlKCl9fTt2YXIgbXQ9ZnVuY3Rpb24oKXttKHRoaXMsYnQpO3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MD9hcmd1bWVudHNbMF06dm9pZCAwLGU9Uih0aGlzLG5ldyBndCh0KSk7dXx8KHRoaXMuc2l6ZT1lLmVudHJpZXMubGVuZ3RoKX0sYnQ9bXQucHJvdG90eXBlO2lmKGgoYnQse2FwcGVuZDpmdW5jdGlvbih0LGUpe3ZhciBuPU4odGhpcyk7aihhcmd1bWVudHMubGVuZ3RoLDIpLEoobi5lbnRyaWVzLHtrZXk6ayh0KSx2YWx1ZTprKGUpfSksdXx8dGhpcy5sZW5ndGgrKyxuLnVwZGF0ZVVSTCgpfSxkZWxldGU6ZnVuY3Rpb24odCl7dmFyIGU9Tih0aGlzKSxuPWooYXJndW1lbnRzLmxlbmd0aCwxKSxyPWUuZW50cmllcyxpPWsodCksbz1uPDI/dm9pZCAwOmFyZ3VtZW50c1sxXSxhPXZvaWQgMD09PW8/bzprKG8pLHM9MDt3aGlsZShzPHIubGVuZ3RoKXt2YXIgYz1yW3NdO2lmKGMua2V5IT09aXx8dm9pZCAwIT09YSYmYy52YWx1ZSE9PWEpcysrO2Vsc2UgaWYodHQocixzLDEpLHZvaWQgMCE9PWEpYnJlYWt9dXx8KHRoaXMuc2l6ZT1yLmxlbmd0aCksZS51cGRhdGVVUkwoKX0sZ2V0OmZ1bmN0aW9uKHQpe3ZhciBlPU4odGhpcykuZW50cmllcztqKGFyZ3VtZW50cy5sZW5ndGgsMSk7Zm9yKHZhciBuPWsodCkscj0wO3I8ZS5sZW5ndGg7cisrKWlmKGVbcl0ua2V5PT09bilyZXR1cm4gZVtyXS52YWx1ZTtyZXR1cm4gbnVsbH0sZ2V0QWxsOmZ1bmN0aW9uKHQpe3ZhciBlPU4odGhpcykuZW50cmllcztqKGFyZ3VtZW50cy5sZW5ndGgsMSk7Zm9yKHZhciBuPWsodCkscj1bXSxpPTA7aTxlLmxlbmd0aDtpKyspZVtpXS5rZXk9PT1uJiZKKHIsZVtpXS52YWx1ZSk7cmV0dXJuIHJ9LGhhczpmdW5jdGlvbih0KXt2YXIgZT1OKHRoaXMpLmVudHJpZXMsbj1qKGFyZ3VtZW50cy5sZW5ndGgsMSkscj1rKHQpLGk9bjwyP3ZvaWQgMDphcmd1bWVudHNbMV0sbz12b2lkIDA9PT1pP2k6ayhpKSxhPTA7d2hpbGUoYTxlLmxlbmd0aCl7dmFyIHM9ZVthKytdO2lmKHMua2V5PT09ciYmKHZvaWQgMD09PW98fHMudmFsdWU9PT1vKSlyZXR1cm4hMH1yZXR1cm4hMX0sc2V0OmZ1bmN0aW9uKHQsZSl7dmFyIG49Tih0aGlzKTtqKGFyZ3VtZW50cy5sZW5ndGgsMSk7Zm9yKHZhciByLGk9bi5lbnRyaWVzLG89ITEsYT1rKHQpLHM9ayhlKSxjPTA7YzxpLmxlbmd0aDtjKyspcj1pW2NdLHIua2V5PT09YSYmKG8/dHQoaSxjLS0sMSk6KG89ITAsci52YWx1ZT1zKSk7b3x8SihpLHtrZXk6YSx2YWx1ZTpzfSksdXx8KHRoaXMuc2l6ZT1pLmxlbmd0aCksbi51cGRhdGVVUkwoKX0sc29ydDpmdW5jdGlvbigpe3ZhciB0PU4odGhpcyk7SSh0LmVudHJpZXMsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQua2V5PmUua2V5PzE6LTF9KSksdC51cGRhdGVVUkwoKX0sZm9yRWFjaDpmdW5jdGlvbih0KXt2YXIgZSxuPU4odGhpcykuZW50cmllcyxyPV8odCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCksaT0wO3doaWxlKGk8bi5sZW5ndGgpZT1uW2krK10scihlLnZhbHVlLGUua2V5LHRoaXMpfSxrZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB2dCh0aGlzLCJrZXlzIil9LHZhbHVlczpmdW5jdGlvbigpe3JldHVybiBuZXcgdnQodGhpcywidmFsdWVzIil9LGVudHJpZXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHZ0KHRoaXMsImVudHJpZXMiKX19LHtlbnVtZXJhYmxlOiEwfSksZihidCxQLGJ0LmVudHJpZXMse25hbWU6ImVudHJpZXMifSksZihidCwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiBOKHRoaXMpLnNlcmlhbGl6ZSgpfSkse2VudW1lcmFibGU6ITB9KSx1JiZkKGJ0LCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE4odGhpcykuZW50cmllcy5sZW5ndGh9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSkscChtdCwkKSxyKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOiFsfSx7VVJMU2VhcmNoUGFyYW1zOm10fSksIWwmJmIoeikpe3ZhciB5dD1jKEguaGFzKSxfdD1jKEguc2V0KSx3dD1mdW5jdGlvbih0KXtpZih4KHQpKXt2YXIgZSxuPXQuYm9keTtpZih3KG4pPT09JClyZXR1cm4gZT10LmhlYWRlcnM/bmV3IHoodC5oZWFkZXJzKTpuZXcgeix5dChlLCJjb250ZW50LXR5cGUiKXx8X3QoZSwiY29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgiKSxDKHQse2JvZHk6VCgwLGsobikpLGhlYWRlcnM6VCgwLGUpfSl9cmV0dXJuIHR9O2lmKGIoQikmJnIoe2dsb2JhbDohMCxlbnVtZXJhYmxlOiEwLGRvbnRDYWxsR2V0U2V0OiEwLGZvcmNlZDohMH0se2ZldGNoOmZ1bmN0aW9uKHQpe3JldHVybiBCKHQsYXJndW1lbnRzLmxlbmd0aD4xP3d0KGFyZ3VtZW50c1sxXSk6e30pfX0pLGIoRikpe3ZhciBTdD1mdW5jdGlvbih0KXtyZXR1cm4gbSh0aGlzLFcpLG5ldyBGKHQsYXJndW1lbnRzLmxlbmd0aD4xP3d0KGFyZ3VtZW50c1sxXSk6e30pfTtXLmNvbnN0cnVjdG9yPVN0LFN0LnByb3RvdHlwZT1XLHIoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxkb250Q2FsbEdldFNldDohMCxmb3JjZWQ6ITB9LHtSZXF1ZXN0OlN0fSl9fXQuZXhwb3J0cz17VVJMU2VhcmNoUGFyYW1zOm10LGdldFN0YXRlOk59fSw1Mzg4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYzY1YiIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIGksbyxhPW4/dDp0Lml0ZXJhdG9yLHM9dC5uZXh0O3doaWxlKCEoaT1yKHMsYSkpLmRvbmUpaWYobz1lKGkudmFsdWUpLHZvaWQgMCE9PW8pcmV0dXJuIG99fSwiNTNjYSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiBlLmRlZmF1bHQ9cj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0scih0KX1uKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD1yLG4oImE0ZDMiKSxuKCJlMDFhIiksbigiZDI4YiIpLG4oImQzYjciKSxuKCIzY2EzIiksbigiZGRiMCIpfSwiNTNkNSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDA7dmFyIHI9e3ByaW1hcnk6IiMyOTc5ZmYiLHByaW1hcnlEYXJrOiIjMmI4NWU0IixwcmltYXJ5RGlzYWJsZWQ6IiNhMGNmZmYiLHByaW1hcnlMaWdodDoiI2VjZjVmZiIsYmdDb2xvcjoiI2YzZjRmNiIsaW5mbzoiIzkwOTM5OSIsaW5mb0Rhcms6IiM4Mjg0OGEiLGluZm9EaXNhYmxlZDoiI2M4YzljYyIsaW5mb0xpZ2h0OiIjZjRmNGY1Iix3YXJuaW5nOiIjZmY5OTAwIix3YXJuaW5nRGFyazoiI2YyOTEwMCIsd2FybmluZ0Rpc2FibGVkOiIjZmNiZDcxIix3YXJuaW5nTGlnaHQ6IiNmZGY2ZWMiLGVycm9yOiIjZmEzNTM0IixlcnJvckRhcms6IiNkZDYxNjEiLGVycm9yRGlzYWJsZWQ6IiNmYWI2YjYiLGVycm9yTGlnaHQ6IiNmZWYwZjAiLHN1Y2Nlc3M6IiMxOWJlNmIiLHN1Y2Nlc3NEYXJrOiIjMThiNTY2IixzdWNjZXNzRGlzYWJsZWQ6IiM3MWQ1YTEiLHN1Y2Nlc3NMaWdodDoiI2RiZjFlMSIsbWFpbkNvbG9yOiIjMzAzMTMzIixjb250ZW50Q29sb3I6IiM2MDYyNjYiLHRpcHNDb2xvcjoiIzkwOTM5OSIsbGlnaHRDb2xvcjoiI2MwYzRjYyIsYm9yZGVyQ29sb3I6IiNlNGU3ZWQifTtlLmRlZmF1bHQ9cn0sNTQ5NDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjgzYWIiKSxpPW4oImUzMzAiKSxvPW4oImVkZDAiKSxhPVVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUscz1pKGEuZm9yRWFjaCk7ciYmISgic2l6ZSJpbiBhKSYmbyhhLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gcyh0aGlzLChmdW5jdGlvbigpe3QrK30pKSx0fSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfSw1NTMwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD1hLG4oImE0ZDMiKSxuKCI0ZGU0IiksbigiMTRkOSIpLG4oImU5ZjUiKSxuKCI5MTBkIiksbigiN2Q1NCIpLG4oIjFkMWMiKSxuKCI3YTgyIiksbigiZTQzOSIpLG4oImRiYjQiKSxuKCJiNjRiIiksbigiZDNiNyIpLG4oIjE1OWIiKTt2YXIgcj1pKG4oImFkZTMiKSk7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19ZnVuY3Rpb24gbyh0LGUpe3ZhciBuPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gYSh0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbZV0/YXJndW1lbnRzW2VdOnt9O2UlMj9vKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7KDAsci5kZWZhdWx0KSh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6byhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH19LDU2OTI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjNmNkIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHJbdF18fChyW3RdPWV8fHt9KX19LCI1NmVmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImQwNjYiKSxpPW4oImUzMzAiKSxvPW4oIjI0MWMiKSxhPW4oIjc0MTgiKSxzPW4oIjgyNWEiKSxjPWkoW10uY29uY2F0KTt0LmV4cG9ydHM9cigiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24odCl7dmFyIGU9by5mKHModCkpLG49YS5mO3JldHVybiBuP2MoZSxuKHQpKTplfX0sIjU3N2UiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZjVkZiIpLGk9U3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigiU3ltYm9sIj09PXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmciKTtyZXR1cm4gaSh0KX19LCI1N2I5IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImM2NWIiKSxpPW4oImQwNjYiKSxvPW4oImI2MjIiKSxhPW4oImNiMmQiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1pKCJTeW1ib2wiKSxlPXQmJnQucHJvdG90eXBlLG49ZSYmZS52YWx1ZU9mLHM9bygidG9QcmltaXRpdmUiKTtlJiYhZVtzXSYmYShlLHMsKGZ1bmN0aW9uKHQpe3JldHVybiByKG4sdGhpcyl9KSx7YXJpdHk6MX0pfX0sNTg5OTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz0iXHRcblx2XGZcciDCoOGagOKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LCI1OGE4IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImUzMzAiKSxpPW4oIjFkODAiKSxvPW4oIjU3N2UiKSxhPW4oIjU4OTkiKSxzPXIoIiIucmVwbGFjZSksYz1SZWdFeHAoIl5bIithKyJdKyIpLHU9UmVnRXhwKCIoXnxbXiIrYSsiXSlbIithKyJdKyQiKSxsPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1vKGkoZSkpO3JldHVybiAxJnQmJihuPXMobixjLCIiKSksMiZ0JiYobj1zKG4sdSwiJDEiKSksbn19O3QuZXhwb3J0cz17c3RhcnQ6bCgxKSxlbmQ6bCgyKSx0cmltOmwoMyl9fSw1OTI2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYjQyZSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT0rdDtyZXR1cm4gZSE9PWV8fDA9PT1lPzA6cihlKX19LCI1OWVkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjE2MjYiKSxpPW4oIjBkNTEiKSxvPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYocih0KSlyZXR1cm4gdDt0aHJvdyBuZXcgbyhpKHQpKyIgaXMgbm90IGEgZnVuY3Rpb24iKX19LCI1YTM0IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjQ0ZTciKSxpPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYocih0KSl0aHJvdyBuZXcgaSgiVGhlIG1ldGhvZCBkb2Vzbid0IGFjY2VwdCByZWd1bGFyIGV4cHJlc3Npb25zIik7cmV0dXJuIHR9fSwiNWE0NyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCIwNGY4Iiksbz1uKCJkMDM5IiksYT1uKCI3NDE4Iikscz1uKCI3YjBiIiksYz0haXx8bygoZnVuY3Rpb24oKXthLmYoMSl9KSk7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOmN9LHtnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ZnVuY3Rpb24odCl7dmFyIGU9YS5mO3JldHVybiBlP2Uocyh0KSk6W119fSl9LCI1YjgxIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImM2NWIiKSxvPW4oImUzMzAiKSxhPW4oIjFkODAiKSxzPW4oIjE2MjYiKSxjPW4oIjg2MWQiKSx1PW4oIjQ0ZTciKSxsPW4oIjU3N2UiKSxmPW4oImRjNGEiKSxkPW4oIjkwZDgiKSxoPW4oIjBjYjIiKSxwPW4oImI2MjIiKSx2PW4oImM0MzAiKSxnPXAoInJlcGxhY2UiKSxtPVR5cGVFcnJvcixiPW8oIiIuaW5kZXhPZikseT1vKCIiLnJlcGxhY2UpLF89bygiIi5zbGljZSksdz1NYXRoLm1heDtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITB9LHtyZXBsYWNlQWxsOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixvLHAsUyx4LGssQyxULE8sQT1hKHRoaXMpLEU9MCxqPSIiO2lmKGModCkpe2lmKG49dSh0KSxuJiYocj1sKGEoZCh0KSkpLCF+YihyLCJnIikpKXRocm93IG5ldyBtKCJgLnJlcGxhY2VBbGxgIGRvZXMgbm90IGFsbG93IG5vbi1nbG9iYWwgcmVnZXhlcyIpO2lmKG89Zih0LGcpLG8pcmV0dXJuIGkobyx0LEEsZSk7aWYodiYmbilyZXR1cm4geShsKEEpLHQsZSl9cD1sKEEpLFM9bCh0KSx4PXMoZSkseHx8KGU9bChlKSksaz1TLmxlbmd0aCxDPXcoMSxrKSxUPWIocCxTKTt3aGlsZSgtMSE9PVQpTz14P2woZShTLFQscCkpOmgoUyxwLFQsW10sdm9pZCAwLGUpLGorPV8ocCxFLFQpK08sRT1UK2ssVD1UK0M+cC5sZW5ndGg/LTE6YihwLFMsVCtDKTtyZXR1cm4gRTxwLmxlbmd0aCYmKGorPV8ocCxFKSksan19KX0sIjVjNmMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOmV9fX0sIjVjYzYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNzRlOCIpO3IoIlVpbnQ4IiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdCh0aGlzLGUsbixyKX19KSl9LCI1ZDQxIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImM2NWIiKSxvPW4oIjg2MWQiKSxhPW4oIjgyNWEiKSxzPW4oImM2MGQiKSxjPW4oIjA2Y2YiKSx1PW4oImUxNjMiKTtmdW5jdGlvbiBsKHQsZSl7dmFyIG4scixmPWFyZ3VtZW50cy5sZW5ndGg8Mz90OmFyZ3VtZW50c1syXTtyZXR1cm4gYSh0KT09PWY/dFtlXToobj1jLmYodCxlKSxuP3Mobik/bi52YWx1ZTp2b2lkIDA9PT1uLmdldD92b2lkIDA6aShuLmdldCxmKTpvKHI9dSh0KSk/bChyLGUsZik6dm9pZCAwKX1yKHt0YXJnZXQ6IlJlZmxlY3QiLHN0YXQ6ITB9LHtnZXQ6bH0pfSwiNWU3NyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI4M2FiIiksaT1uKCIxYTJkIiksbz1GdW5jdGlvbi5wcm90b3R5cGUsYT1yJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHM9aShvLCJuYW1lIiksYz1zJiYic29tZXRoaW5nIj09PWZ1bmN0aW9uKCl7fS5uYW1lLHU9cyYmKCFyfHxyJiZhKG8sIm5hbWUiKS5jb25maWd1cmFibGUpO3QuZXhwb3J0cz17RVhJU1RTOnMsUFJPUEVSOmMsQ09ORklHVVJBQkxFOnV9fSwiNWU3ZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixpLG8sYSxzPW4oIjIzZTciKSxjPW4oImM0MzAiKSx1PW4oIjlhZGMiKSxsPW4oImNmZTkiKSxmPW4oIjQyOGYiKSxkPW4oImM2NWIiKSxoPW4oImNiMmQiKSxwPW4oImQyYmIiKSx2PW4oImQ0NGUiKSxnPW4oIjI2MjYiKSxtPW4oIjU5ZWQiKSxiPW4oIjE2MjYiKSx5PW4oIjg2MWQiKSxfPW4oIjE5YWEiKSx3PW4oIjQ4NDAiKSxTPW4oIjJjZjQiKS5zZXQseD1uKCJiNTc1Iiksaz1uKCI0NGRlIiksQz1uKCJlNjY3IiksVD1uKCIwMWI0IiksTz1uKCI2OWYzIiksQT1uKCJkMjU2IiksRT1uKCI0NzM4Iiksaj1uKCJmMDY5IiksTT0iUHJvbWlzZSIsST1FLkNPTlNUUlVDVE9SLFA9RS5SRUpFQ1RJT05fRVZFTlQsJD1FLlNVQkNMQVNTSU5HLEw9Ty5nZXR0ZXJGb3IoTSksUj1PLnNldCxOPUEmJkEucHJvdG90eXBlLEQ9QSxCPU4sRj1sLlR5cGVFcnJvcix6PWwuZG9jdW1lbnQsVz1sLnByb2Nlc3MsSD1qLmYsVT1ILHE9ISEoeiYmei5jcmVhdGVFdmVudCYmbC5kaXNwYXRjaEV2ZW50KSxWPSJ1bmhhbmRsZWRyZWplY3Rpb24iLFk9InJlamVjdGlvbmhhbmRsZWQiLFg9MCxHPTEsUT0yLEo9MSxLPTIsWj1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4hKCF5KHQpfHwhYihlPXQudGhlbikpJiZlfSx0dD1mdW5jdGlvbih0LGUpe3ZhciBuLHIsaSxvPWUudmFsdWUsYT1lLnN0YXRlPT09RyxzPWE/dC5vazp0LmZhaWwsYz10LnJlc29sdmUsdT10LnJlamVjdCxsPXQuZG9tYWluO3RyeXtzPyhhfHwoZS5yZWplY3Rpb249PT1LJiZvdChlKSxlLnJlamVjdGlvbj1KKSwhMD09PXM/bj1vOihsJiZsLmVudGVyKCksbj1zKG8pLGwmJihsLmV4aXQoKSxpPSEwKSksbj09PXQucHJvbWlzZT91KG5ldyBGKCJQcm9taXNlLWNoYWluIGN5Y2xlIikpOihyPVoobikpP2QocixuLGMsdSk6YyhuKSk6dShvKX1jYXRjaChmKXtsJiYhaSYmbC5leGl0KCksdShmKX19LGV0PWZ1bmN0aW9uKHQsZSl7dC5ub3RpZmllZHx8KHQubm90aWZpZWQ9ITAseCgoZnVuY3Rpb24oKXt2YXIgbixyPXQucmVhY3Rpb25zO3doaWxlKG49ci5nZXQoKSl0dChuLHQpO3Qubm90aWZpZWQ9ITEsZSYmIXQucmVqZWN0aW9uJiZydCh0KX0pKSl9LG50PWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpO3E/KHI9ei5jcmVhdGVFdmVudCgiRXZlbnQiKSxyLnByb21pc2U9ZSxyLnJlYXNvbj1uLHIuaW5pdEV2ZW50KHQsITEsITApLGwuZGlzcGF0Y2hFdmVudChyKSk6cj17cHJvbWlzZTplLHJlYXNvbjpufSwhUCYmKGk9bFsib24iK3RdKT9pKHIpOnQ9PT1WJiZrKCJVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24iLG4pfSxydD1mdW5jdGlvbih0KXtkKFMsbCwoZnVuY3Rpb24oKXt2YXIgZSxuPXQuZmFjYWRlLHI9dC52YWx1ZSxpPWl0KHQpO2lmKGkmJihlPUMoKGZ1bmN0aW9uKCl7dT9XLmVtaXQoInVuaGFuZGxlZFJlamVjdGlvbiIscixuKTpudChWLG4scil9KSksdC5yZWplY3Rpb249dXx8aXQodCk/SzpKLGUuZXJyb3IpKXRocm93IGUudmFsdWV9KSl9LGl0PWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlamVjdGlvbiE9PUomJiF0LnBhcmVudH0sb3Q9ZnVuY3Rpb24odCl7ZChTLGwsKGZ1bmN0aW9uKCl7dmFyIGU9dC5mYWNhZGU7dT9XLmVtaXQoInJlamVjdGlvbkhhbmRsZWQiLGUpOm50KFksZSx0LnZhbHVlKX0pKX0sYXQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBmdW5jdGlvbihyKXt0KGUscixuKX19LHN0PWZ1bmN0aW9uKHQsZSxuKXt0LmRvbmV8fCh0LmRvbmU9ITAsbiYmKHQ9biksdC52YWx1ZT1lLHQuc3RhdGU9USxldCh0LCEwKSl9LGN0PWZ1bmN0aW9uKHQsZSxuKXtpZighdC5kb25lKXt0LmRvbmU9ITAsbiYmKHQ9bik7dHJ5e2lmKHQuZmFjYWRlPT09ZSl0aHJvdyBuZXcgRigiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGYiKTt2YXIgcj1aKGUpO3I/eCgoZnVuY3Rpb24oKXt2YXIgbj17ZG9uZTohMX07dHJ5e2QocixlLGF0KGN0LG4sdCksYXQoc3Qsbix0KSl9Y2F0Y2goaSl7c3QobixpLHQpfX0pKToodC52YWx1ZT1lLHQuc3RhdGU9RyxldCh0LCExKSl9Y2F0Y2goaSl7c3Qoe2RvbmU6ITF9LGksdCl9fX07aWYoSSYmKEQ9ZnVuY3Rpb24odCl7Xyh0aGlzLEIpLG0odCksZChyLHRoaXMpO3ZhciBlPUwodGhpcyk7dHJ5e3QoYXQoY3QsZSksYXQoc3QsZSkpfWNhdGNoKG4pe3N0KGUsbil9fSxCPUQucHJvdG90eXBlLHI9ZnVuY3Rpb24odCl7Uih0aGlzLHt0eXBlOk0sZG9uZTohMSxub3RpZmllZDohMSxwYXJlbnQ6ITEscmVhY3Rpb25zOm5ldyBULHJlamVjdGlvbjohMSxzdGF0ZTpYLHZhbHVlOm51bGx9KX0sci5wcm90b3R5cGU9aChCLCJ0aGVuIiwoZnVuY3Rpb24odCxlKXt2YXIgbj1MKHRoaXMpLHI9SCh3KHRoaXMsRCkpO3JldHVybiBuLnBhcmVudD0hMCxyLm9rPSFiKHQpfHx0LHIuZmFpbD1iKGUpJiZlLHIuZG9tYWluPXU/Vy5kb21haW46dm9pZCAwLG4uc3RhdGU9PT1YP24ucmVhY3Rpb25zLmFkZChyKTp4KChmdW5jdGlvbigpe3R0KHIsbil9KSksci5wcm9taXNlfSkpLGk9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgcixlPUwodCk7dGhpcy5wcm9taXNlPXQsdGhpcy5yZXNvbHZlPWF0KGN0LGUpLHRoaXMucmVqZWN0PWF0KHN0LGUpfSxqLmY9SD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PUR8fHQ9PT1vP25ldyBpKHQpOlUodCl9LCFjJiZiKEEpJiZOIT09T2JqZWN0LnByb3RvdHlwZSkpe2E9Ti50aGVuLCR8fGgoTiwidGhlbiIsKGZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gbmV3IEQoKGZ1bmN0aW9uKHQsZSl7ZChhLG4sdCxlKX0pKS50aGVuKHQsZSl9KSx7dW5zYWZlOiEwfSk7dHJ5e2RlbGV0ZSBOLmNvbnN0cnVjdG9yfWNhdGNoKHV0KXt9cCYmcChOLEIpfXMoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCx3cmFwOiEwLGZvcmNlZDpJfSx7UHJvbWlzZTpEfSksbz1mLlByb21pc2UsdihELE0sITEsITApLGcoTSl9LCI1ZWVkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImQyNTYiKSxpPW4oIjFjN2UiKSxvPW4oIjQ3MzgiKS5DT05TVFJVQ1RPUjt0LmV4cG9ydHM9b3x8IWkoKGZ1bmN0aW9uKHQpe3IuYWxsKHQpLnRoZW4odm9pZCAwLChmdW5jdGlvbigpe30pKX0pKX0sIjVmOTYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZWJiNSIpLGk9bigiZTMzMCIpLG89ci5hVHlwZWRBcnJheSxhPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxzPWkoW10uam9pbik7YSgiam9pbiIsKGZ1bmN0aW9uKHQpe3JldHVybiBzKG8odGhpcyksdCl9KSl9LCI1ZmIyIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImUzMzAiKSxpPTIxNDc0ODM2NDcsbz0zNixhPTEscz0yNixjPTM4LHU9NzAwLGw9NzIsZj0xMjgsZD0iLSIsaD0vW15cMC1cdTAwN0VdLyxwPS9bLlx1MzAwMlx1RkYwRVx1RkY2MV0vZyx2PSJPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcyIsZz1vLWEsbT1SYW5nZUVycm9yLGI9cihwLmV4ZWMpLHk9TWF0aC5mbG9vcixfPVN0cmluZy5mcm9tQ2hhckNvZGUsdz1yKCIiLmNoYXJDb2RlQXQpLFM9cihbXS5qb2luKSx4PXIoW10ucHVzaCksaz1yKCIiLnJlcGxhY2UpLEM9cigiIi5zcGxpdCksVD1yKCIiLnRvTG93ZXJDYXNlKSxPPWZ1bmN0aW9uKHQpe3ZhciBlPVtdLG49MCxyPXQubGVuZ3RoO3doaWxlKG48cil7dmFyIGk9dyh0LG4rKyk7aWYoaT49NTUyOTYmJmk8PTU2MzE5JiZuPHIpe3ZhciBvPXcodCxuKyspOzU2MzIwPT09KDY0NTEyJm8pP3goZSwoKDEwMjMmaSk8PDEwKSsoMTAyMyZvKSs2NTUzNik6KHgoZSxpKSxuLS0pfWVsc2UgeChlLGkpfXJldHVybiBlfSxBPWZ1bmN0aW9uKHQpe3JldHVybiB0KzIyKzc1Kih0PDI2KX0sRT1mdW5jdGlvbih0LGUsbil7dmFyIHI9MDt0PW4/eSh0L3UpOnQ+PjEsdCs9eSh0L2UpO3doaWxlKHQ+ZypzPj4xKXQ9eSh0L2cpLHIrPW87cmV0dXJuIHkocisoZysxKSp0Lyh0K2MpKX0saj1mdW5jdGlvbih0KXt2YXIgZT1bXTt0PU8odCk7dmFyIG4scixjPXQubGVuZ3RoLHU9ZixoPTAscD1sO2ZvcihuPTA7bjx0Lmxlbmd0aDtuKyspcj10W25dLHI8MTI4JiZ4KGUsXyhyKSk7dmFyIGc9ZS5sZW5ndGgsYj1nO2cmJngoZSxkKTt3aGlsZShiPGMpe3ZhciB3PWk7Zm9yKG49MDtuPHQubGVuZ3RoO24rKylyPXRbbl0scj49dSYmcjx3JiYodz1yKTt2YXIgaz1iKzE7aWYody11PnkoKGktaCkvaykpdGhyb3cgbmV3IG0odik7Zm9yKGgrPSh3LXUpKmssdT13LG49MDtuPHQubGVuZ3RoO24rKyl7aWYocj10W25dLHI8dSYmKytoPmkpdGhyb3cgbmV3IG0odik7aWYocj09PXUpe3ZhciBDPWgsVD1vO3doaWxlKDEpe3ZhciBqPVQ8PXA/YTpUPj1wK3M/czpULXA7aWYoQzxqKWJyZWFrO3ZhciBNPUMtaixJPW8tajt4KGUsXyhBKGorTSVJKSkpLEM9eShNL0kpLFQrPW99eChlLF8oQShDKSkpLHA9RShoLGssYj09PWcpLGg9MCxiKyt9fWgrKyx1Kyt9cmV0dXJuIFMoZSwiIil9O3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxuLHI9W10saT1DKGsoVCh0KSxwLCIuIiksIi4iKTtmb3IoZT0wO2U8aS5sZW5ndGg7ZSsrKW49aVtlXSx4KHIsYihoLG4pPyJ4bi0tIitqKG4pOm4pO3JldHVybiBTKHIsIi4iKX19LCI1ZmM2IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06InN1Y2Nlc3MiLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTstMT09WyJwcmltYXJ5IiwiaW5mbyIsImVycm9yIiwid2FybmluZyIsInN1Y2Nlc3MiXS5pbmRleE9mKHQpJiYodD0ic3VjY2VzcyIpO3ZhciBuPSIiO3N3aXRjaCh0KXtjYXNlInByaW1hcnkiOm49ImluZm8tY2lyY2xlIjticmVhaztjYXNlImluZm8iOm49ImluZm8tY2lyY2xlIjticmVhaztjYXNlImVycm9yIjpuPSJjbG9zZS1jaXJjbGUiO2JyZWFrO2Nhc2Uid2FybmluZyI6bj0iZXJyb3ItY2lyY2xlIjticmVhaztjYXNlInN1Y2Nlc3MiOm49ImNoZWNrbWFyay1jaXJjbGUiO2JyZWFrO2RlZmF1bHQ6bj0iY2hlY2ttYXJrLWNpcmNsZSJ9cmV0dXJuIGUmJihuKz0iLWZpbGwiKSxufW4oIjdhODIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXZvaWQgMCxuKCJjOTc1Iik7ZS5kZWZhdWx0PXJ9LDYwNjI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCIxYzU5Iil9LCI2MGJkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKSxpPW4oImQwMzkiKSxvPW4oImUzMzAiKSxhPW4oImViYjUiKSxzPW4oImUyNjAiKSxjPW4oImI2MjIiKSx1PWMoIml0ZXJhdG9yIiksbD1yLlVpbnQ4QXJyYXksZj1vKHMudmFsdWVzKSxkPW8ocy5rZXlzKSxoPW8ocy5lbnRyaWVzKSxwPWEuYVR5cGVkQXJyYXksdj1hLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsZz1sJiZsLnByb3RvdHlwZSxtPSFpKChmdW5jdGlvbigpe2dbdV0uY2FsbChbMV0pfSkpLGI9ISFnJiZnLnZhbHVlcyYmZ1t1XT09PWcudmFsdWVzJiYidmFsdWVzIj09PWcudmFsdWVzLm5hbWUseT1mdW5jdGlvbigpe3JldHVybiBmKHAodGhpcykpfTt2KCJlbnRyaWVzIiwoZnVuY3Rpb24oKXtyZXR1cm4gaChwKHRoaXMpKX0pLG0pLHYoImtleXMiLChmdW5jdGlvbigpe3JldHVybiBkKHAodGhpcykpfSksbSksdigidmFsdWVzIix5LG18fCFiLHtuYW1lOiJ2YWx1ZXMifSksdih1LHksbXx8IWIse25hbWU6InZhbHVlcyJ9KX0sIjYwZGEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiODNhYiIpLGk9bigiZTMzMCIpLG89bigiYzY1YiIpLGE9bigiZDAzOSIpLHM9bigiZGY3NSIpLGM9bigiNzQxOCIpLHU9bigiZDFlNyIpLGw9bigiN2IwYiIpLGY9bigiNDRhZCIpLGQ9T2JqZWN0LmFzc2lnbixoPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxwPWkoW10uY29uY2F0KTt0LmV4cG9ydHM9IWR8fGEoKGZ1bmN0aW9uKCl7aWYociYmMSE9PWQoe2I6MX0sZChoKHt9LCJhIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtoKHRoaXMsImIiLHt2YWx1ZTozLGVudW1lcmFibGU6ITF9KX19KSx7YjoyfSkpLmIpcmV0dXJuITA7dmFyIHQ9e30sZT17fSxuPVN5bWJvbCgiYXNzaWduIGRldGVjdGlvbiIpLGk9ImFiY2RlZmdoaWprbG1ub3BxcnN0IjtyZXR1cm4gdFtuXT03LGkuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2VbdF09dH0pKSw3IT09ZCh7fSx0KVtuXXx8cyhkKHt9LGUpKS5qb2luKCIiKSE9PWl9KSk/ZnVuY3Rpb24odCxlKXt2YXIgbj1sKHQpLGk9YXJndW1lbnRzLmxlbmd0aCxhPTEsZD1jLmYsaD11LmY7d2hpbGUoaT5hKXt2YXIgdixnPWYoYXJndW1lbnRzW2ErK10pLG09ZD9wKHMoZyksZChnKSk6cyhnKSxiPW0ubGVuZ3RoLHk9MDt3aGlsZShiPnkpdj1tW3krK10sciYmIW8oaCxnLHYpfHwoblt2XT1nW3ZdKX1yZXR1cm4gbn06ZH0sIjYxYWUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bigiODQwNyIpfSwiNjIxYSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjZmU5IiksaT1uKCJlMzMwIiksbz1uKCI4M2FiIiksYT1uKCI0YjExIikscz1uKCI1ZTc3IiksYz1uKCI5MTEyIiksdT1uKCJlZGQwIiksbD1uKCI2OTY0IiksZj1uKCJkMDM5IiksZD1uKCIxOWFhIiksaD1uKCI1OTI2IikscD1uKCI1MGM0Iiksdj1uKCIwYjI1IiksZz1uKCJiZThlIiksbT1uKCI3N2E3IiksYj1uKCJlMTYzIikseT1uKCJkMmJiIiksXz1uKCI4MWQ1Iiksdz1uKCJmMzZhIiksUz1uKCI3MTU2IikseD1uKCJlODkzIiksaz1uKCJkNDRlIiksQz1uKCI2OWYzIiksVD1zLlBST1BFUixPPXMuQ09ORklHVVJBQkxFLEE9IkFycmF5QnVmZmVyIixFPSJEYXRhVmlldyIsaj0icHJvdG90eXBlIixNPSJXcm9uZyBsZW5ndGgiLEk9Ildyb25nIGluZGV4IixQPUMuZ2V0dGVyRm9yKEEpLCQ9Qy5nZXR0ZXJGb3IoRSksTD1DLnNldCxSPXJbQV0sTj1SLEQ9TiYmTltqXSxCPXJbRV0sRj1CJiZCW2pdLHo9T2JqZWN0LnByb3RvdHlwZSxXPXIuQXJyYXksSD1yLlJhbmdlRXJyb3IsVT1pKF8pLHE9aShbXS5yZXZlcnNlKSxWPW0ucGFjayxZPW0udW5wYWNrLFg9ZnVuY3Rpb24odCl7cmV0dXJuWzI1NSZ0XX0sRz1mdW5jdGlvbih0KXtyZXR1cm5bMjU1JnQsdD4+OCYyNTVdfSxRPWZ1bmN0aW9uKHQpe3JldHVyblsyNTUmdCx0Pj44JjI1NSx0Pj4xNiYyNTUsdD4+MjQmMjU1XX0sSj1mdW5jdGlvbih0KXtyZXR1cm4gdFszXTw8MjR8dFsyXTw8MTZ8dFsxXTw8OHx0WzBdfSxLPWZ1bmN0aW9uKHQpe3JldHVybiBWKGcodCksMjMsNCl9LFo9ZnVuY3Rpb24odCl7cmV0dXJuIFYodCw1Miw4KX0sdHQ9ZnVuY3Rpb24odCxlLG4pe3UodFtqXSxlLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcylbZV19fSl9LGV0PWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPSQodCksbz12KG4pLGE9ISFyO2lmKG8rZT5pLmJ5dGVMZW5ndGgpdGhyb3cgbmV3IEgoSSk7dmFyIHM9aS5ieXRlcyxjPW8raS5ieXRlT2Zmc2V0LHU9dyhzLGMsYytlKTtyZXR1cm4gYT91OnEodSl9LG50PWZ1bmN0aW9uKHQsZSxuLHIsaSxvKXt2YXIgYT0kKHQpLHM9dihuKSxjPXIoK2kpLHU9ISFvO2lmKHMrZT5hLmJ5dGVMZW5ndGgpdGhyb3cgbmV3IEgoSSk7Zm9yKHZhciBsPWEuYnl0ZXMsZj1zK2EuYnl0ZU9mZnNldCxkPTA7ZDxlO2QrKylsW2YrZF09Y1t1P2Q6ZS1kLTFdfTtpZihhKXt2YXIgcnQ9VCYmUi5uYW1lIT09QTtmKChmdW5jdGlvbigpe1IoMSl9KSkmJmYoKGZ1bmN0aW9uKCl7bmV3IFIoLTEpfSkpJiYhZigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFIsbmV3IFIoMS41KSxuZXcgUihOYU4pLDEhPT1SLmxlbmd0aHx8cnQmJiFPfSkpP3J0JiZPJiZjKFIsIm5hbWUiLEEpOihOPWZ1bmN0aW9uKHQpe3JldHVybiBkKHRoaXMsRCksUyhuZXcgUih2KHQpKSx0aGlzLE4pfSxOW2pdPUQsRC5jb25zdHJ1Y3Rvcj1OLHgoTixSKSkseSYmYihGKSE9PXomJnkoRix6KTt2YXIgaXQ9bmV3IEIobmV3IE4oMikpLG90PWkoRi5zZXRJbnQ4KTtpdC5zZXRJbnQ4KDAsMjE0NzQ4MzY0OCksaXQuc2V0SW50OCgxLDIxNDc0ODM2NDkpLCFpdC5nZXRJbnQ4KDApJiZpdC5nZXRJbnQ4KDEpfHxsKEYse3NldEludDg6ZnVuY3Rpb24odCxlKXtvdCh0aGlzLHQsZTw8MjQ+PjI0KX0sc2V0VWludDg6ZnVuY3Rpb24odCxlKXtvdCh0aGlzLHQsZTw8MjQ+PjI0KX19LHt1bnNhZmU6ITB9KX1lbHNlIE49ZnVuY3Rpb24odCl7ZCh0aGlzLEQpO3ZhciBlPXYodCk7TCh0aGlzLHt0eXBlOkEsYnl0ZXM6VShXKGUpLDApLGJ5dGVMZW5ndGg6ZX0pLG98fCh0aGlzLmJ5dGVMZW5ndGg9ZSx0aGlzLmRldGFjaGVkPSExKX0sRD1OW2pdLEI9ZnVuY3Rpb24odCxlLG4pe2QodGhpcyxGKSxkKHQsRCk7dmFyIHI9UCh0KSxpPXIuYnl0ZUxlbmd0aCxhPWgoZSk7aWYoYTwwfHxhPmkpdGhyb3cgbmV3IEgoIldyb25nIG9mZnNldCIpO2lmKG49dm9pZCAwPT09bj9pLWE6cChuKSxhK24+aSl0aHJvdyBuZXcgSChNKTtMKHRoaXMse3R5cGU6RSxidWZmZXI6dCxieXRlTGVuZ3RoOm4sYnl0ZU9mZnNldDphLGJ5dGVzOnIuYnl0ZXN9KSxvfHwodGhpcy5idWZmZXI9dCx0aGlzLmJ5dGVMZW5ndGg9bix0aGlzLmJ5dGVPZmZzZXQ9YSl9LEY9QltqXSxvJiYodHQoTiwiYnl0ZUxlbmd0aCIsUCksdHQoQiwiYnVmZmVyIiwkKSx0dChCLCJieXRlTGVuZ3RoIiwkKSx0dChCLCJieXRlT2Zmc2V0IiwkKSksbChGLHtnZXRJbnQ4OmZ1bmN0aW9uKHQpe3JldHVybiBldCh0aGlzLDEsdClbMF08PDI0Pj4yNH0sZ2V0VWludDg6ZnVuY3Rpb24odCl7cmV0dXJuIGV0KHRoaXMsMSx0KVswXX0sZ2V0SW50MTY6ZnVuY3Rpb24odCl7dmFyIGU9ZXQodGhpcywyLHQsYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0pO3JldHVybihlWzFdPDw4fGVbMF0pPDwxNj4+MTZ9LGdldFVpbnQxNjpmdW5jdGlvbih0KXt2YXIgZT1ldCh0aGlzLDIsdCxhcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSk7cmV0dXJuIGVbMV08PDh8ZVswXX0sZ2V0SW50MzI6ZnVuY3Rpb24odCl7cmV0dXJuIEooZXQodGhpcyw0LHQsYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0pKX0sZ2V0VWludDMyOmZ1bmN0aW9uKHQpe3JldHVybiBKKGV0KHRoaXMsNCx0LGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdKSk+Pj4wfSxnZXRGbG9hdDMyOmZ1bmN0aW9uKHQpe3JldHVybiBZKGV0KHRoaXMsNCx0LGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdKSwyMyl9LGdldEZsb2F0NjQ6ZnVuY3Rpb24odCl7cmV0dXJuIFkoZXQodGhpcyw4LHQsYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0pLDUyKX0sc2V0SW50ODpmdW5jdGlvbih0LGUpe250KHRoaXMsMSx0LFgsZSl9LHNldFVpbnQ4OmZ1bmN0aW9uKHQsZSl7bnQodGhpcywxLHQsWCxlKX0sc2V0SW50MTY6ZnVuY3Rpb24odCxlKXtudCh0aGlzLDIsdCxHLGUsYXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0pfSxzZXRVaW50MTY6ZnVuY3Rpb24odCxlKXtudCh0aGlzLDIsdCxHLGUsYXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0pfSxzZXRJbnQzMjpmdW5jdGlvbih0LGUpe250KHRoaXMsNCx0LFEsZSxhcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSl9LHNldFVpbnQzMjpmdW5jdGlvbih0LGUpe250KHRoaXMsNCx0LFEsZSxhcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSl9LHNldEZsb2F0MzI6ZnVuY3Rpb24odCxlKXtudCh0aGlzLDQsdCxLLGUsYXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0pfSxzZXRGbG9hdDY0OmZ1bmN0aW9uKHQsZSl7bnQodGhpcyw4LHQsWixlLGFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdKX19KTtrKE4sQSksayhCLEUpLHQuZXhwb3J0cz17QXJyYXlCdWZmZXI6TixEYXRhVmlldzpCfX0sNjI5MzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MzIsZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwscj0iMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLnNwbGl0KCIiKSxpPVtdO2lmKG49bnx8ci5sZW5ndGgsdClmb3IodmFyIG89MDtvPHQ7bysrKWlbb109clswfE1hdGgucmFuZG9tKCkqbl07ZWxzZXt2YXIgYTtpWzhdPWlbMTNdPWlbMThdPWlbMjNdPSItIixpWzE0XT0iNCI7Zm9yKHZhciBzPTA7czwzNjtzKyspaVtzXXx8KGE9MHwxNipNYXRoLnJhbmRvbSgpLGlbc109clsxOT09cz8zJmF8ODphXSl9cmV0dXJuIGU/KGkuc2hpZnQoKSwidSIraS5qb2luKCIiKSk6aS5qb2luKCIiKX1uKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDA7ZS5kZWZhdWx0PXJ9LCI2MmU0IjpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdC53ZWJwYWNrUG9seWZpbGx8fCh0LmRlcHJlY2F0ZT1mdW5jdGlvbigpe30sdC5wYXRocz1bXSx0LmNoaWxkcmVufHwodC5jaGlsZHJlbj1bXSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImxvYWRlZCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQubH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaWQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0Lml9fSksdC53ZWJwYWNrUG9seWZpbGw9MSksdH19LDYzNzQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjZmU5IiksaT1PYmplY3QuZGVmaW5lUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dHJ5e2kocix0LHt2YWx1ZTplLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfWNhdGNoKG4pe3JbdF09ZX1yZXR1cm4gZX19LCI2NDllIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImViYjUiKSxpPW4oImI3MjciKS5zb21lLG89ci5hVHlwZWRBcnJheSxhPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDthKCJzb21lIiwoZnVuY3Rpb24odCl7cmV0dXJuIGkobyh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKX0sNjU0NzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImUzMzAiKSxpPW4oIjU5MjYiKSxvPW4oIjU3N2UiKSxhPW4oIjFkODAiKSxzPXIoIiIuY2hhckF0KSxjPXIoIiIuY2hhckNvZGVBdCksdT1yKCIiLnNsaWNlKSxsPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciByLGwsZj1vKGEoZSkpLGQ9aShuKSxoPWYubGVuZ3RoO3JldHVybiBkPDB8fGQ+PWg/dD8iIjp2b2lkIDA6KHI9YyhmLGQpLHI8NTUyOTZ8fHI+NTYzMTl8fGQrMT09PWh8fChsPWMoZixkKzEpKTw1NjMyMHx8bD41NzM0Mz90P3MoZixkKTpyOnQ/dShmLGQsZCsyKTpsLTU2MzIwKyhyLTU1Mjk2PDwxMCkrNjU1MzYpfX07dC5leHBvcnRzPXtjb2RlQXQ6bCghMSksY2hhckF0OmwoITApfX0sNjU2NjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjdjNzMiKSxpPW4oImVkZDAiKSxvPW4oIjY5NjQiKSxhPW4oIjAzNjYiKSxzPW4oIjE5YWEiKSxjPW4oIjcyMzQiKSx1PW4oIjIyNjYiKSxsPW4oImM2ZDIiKSxmPW4oIjQ3NTQiKSxkPW4oIjI2MjYiKSxoPW4oIjgzYWIiKSxwPW4oImYxODMiKS5mYXN0S2V5LHY9bigiNjlmMyIpLGc9di5zZXQsbT12LmdldHRlckZvcjt0LmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsZSxuLGwpe3ZhciBmPXQoKGZ1bmN0aW9uKHQsaSl7cyh0LGQpLGcodCx7dHlwZTplLGluZGV4OnIobnVsbCksZmlyc3Q6bnVsbCxsYXN0Om51bGwsc2l6ZTowfSksaHx8KHQuc2l6ZT0wKSxjKGkpfHx1KGksdFtsXSx7dGhhdDp0LEFTX0VOVFJJRVM6bn0pfSkpLGQ9Zi5wcm90b3R5cGUsdj1tKGUpLGI9ZnVuY3Rpb24odCxlLG4pe3ZhciByLGksbz12KHQpLGE9eSh0LGUpO3JldHVybiBhP2EudmFsdWU9bjooby5sYXN0PWE9e2luZGV4Omk9cChlLCEwKSxrZXk6ZSx2YWx1ZTpuLHByZXZpb3VzOnI9by5sYXN0LG5leHQ6bnVsbCxyZW1vdmVkOiExfSxvLmZpcnN0fHwoby5maXJzdD1hKSxyJiYoci5uZXh0PWEpLGg/by5zaXplKys6dC5zaXplKyssIkYiIT09aSYmKG8uaW5kZXhbaV09YSkpLHR9LHk9ZnVuY3Rpb24odCxlKXt2YXIgbixyPXYodCksaT1wKGUpO2lmKCJGIiE9PWkpcmV0dXJuIHIuaW5kZXhbaV07Zm9yKG49ci5maXJzdDtuO249bi5uZXh0KWlmKG4ua2V5PT09ZSlyZXR1cm4gbn07cmV0dXJuIG8oZCx7Y2xlYXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dih0KSxuPWUuZmlyc3Q7d2hpbGUobiluLnJlbW92ZWQ9ITAsbi5wcmV2aW91cyYmKG4ucHJldmlvdXM9bi5wcmV2aW91cy5uZXh0PW51bGwpLG49bi5uZXh0O2UuZmlyc3Q9ZS5sYXN0PW51bGwsZS5pbmRleD1yKG51bGwpLGg/ZS5zaXplPTA6dC5zaXplPTB9LGRlbGV0ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dihlKSxyPXkoZSx0KTtpZihyKXt2YXIgaT1yLm5leHQsbz1yLnByZXZpb3VzO2RlbGV0ZSBuLmluZGV4W3IuaW5kZXhdLHIucmVtb3ZlZD0hMCxvJiYoby5uZXh0PWkpLGkmJihpLnByZXZpb3VzPW8pLG4uZmlyc3Q9PT1yJiYobi5maXJzdD1pKSxuLmxhc3Q9PT1yJiYobi5sYXN0PW8pLGg/bi5zaXplLS06ZS5zaXplLS19cmV0dXJuISFyfSxmb3JFYWNoOmZ1bmN0aW9uKHQpe3ZhciBlLG49dih0aGlzKSxyPWEodCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCk7d2hpbGUoZT1lP2UubmV4dDpuLmZpcnN0KXtyKGUudmFsdWUsZS5rZXksdGhpcyk7d2hpbGUoZSYmZS5yZW1vdmVkKWU9ZS5wcmV2aW91c319LGhhczpmdW5jdGlvbih0KXtyZXR1cm4hIXkodGhpcyx0KX19KSxvKGQsbj97Z2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXkodGhpcyx0KTtyZXR1cm4gZSYmZS52YWx1ZX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGIodGhpcywwPT09dD8wOnQsZSl9fTp7YWRkOmZ1bmN0aW9uKHQpe3JldHVybiBiKHRoaXMsdD0wPT09dD8wOnQsdCl9fSksaCYmaShkLCJzaXplIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB2KHRoaXMpLnNpemV9fSksZn0sc2V0U3Ryb25nOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1lKyIgSXRlcmF0b3IiLGk9bShlKSxvPW0ocik7bCh0LGUsKGZ1bmN0aW9uKHQsZSl7Zyh0aGlzLHt0eXBlOnIsdGFyZ2V0OnQsc3RhdGU6aSh0KSxraW5kOmUsbGFzdDpudWxsfSl9KSwoZnVuY3Rpb24oKXt2YXIgdD1vKHRoaXMpLGU9dC5raW5kLG49dC5sYXN0O3doaWxlKG4mJm4ucmVtb3ZlZCluPW4ucHJldmlvdXM7cmV0dXJuIHQudGFyZ2V0JiYodC5sYXN0PW49bj9uLm5leHQ6dC5zdGF0ZS5maXJzdCk/Zigia2V5cyI9PT1lP24ua2V5OiJ2YWx1ZXMiPT09ZT9uLnZhbHVlOltuLmtleSxuLnZhbHVlXSwhMSk6KHQudGFyZ2V0PW51bGwsZih2b2lkIDAsITApKX0pLG4/ImVudHJpZXMiOiJ2YWx1ZXMiLCFuLCEwKSxkKGUpfX19LCI2NWYwIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjBiNDIiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3KHIodCkpKDA9PT1lPzA6ZSl9fSwiNjhkZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkYzE5IiksaT1uKCI4ZTE2Iiksbz1uKCIzODRmIiksYT1uKCI3ZjY1Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXIodGhpcyksbj1hKHQpO3JldHVybiEoaShlKT5uLnNpemUpJiYhMSE9PW8oZSwoZnVuY3Rpb24odCl7aWYoIW4uaW5jbHVkZXModCkpcmV0dXJuITF9KSwhMCl9fSwiNjhlZSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlMzMwIiksaT1uKCJkMDM5Iiksbz1uKCIxNjI2IiksYT1uKCJmNWRmIikscz1uKCJkMDY2IiksYz1uKCI4OTI1IiksdT1mdW5jdGlvbigpe30sbD1zKCJSZWZsZWN0IiwiY29uc3RydWN0IiksZj0vXlxzKig/OmNsYXNzfGZ1bmN0aW9uKVxiLyxkPXIoZi5leGVjKSxoPSFmLnRlc3QodSkscD1mdW5jdGlvbih0KXtpZighbyh0KSlyZXR1cm4hMTt0cnl7cmV0dXJuIGwodSxbXSx0KSwhMH1jYXRjaChlKXtyZXR1cm4hMX19LHY9ZnVuY3Rpb24odCl7aWYoIW8odCkpcmV0dXJuITE7c3dpdGNoKGEodCkpe2Nhc2UiQXN5bmNGdW5jdGlvbiI6Y2FzZSJHZW5lcmF0b3JGdW5jdGlvbiI6Y2FzZSJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIjpyZXR1cm4hMX10cnl7cmV0dXJuIGh8fCEhZChmLGModCkpfWNhdGNoKGUpe3JldHVybiEwfX07di5zaGFtPSEwLHQuZXhwb3J0cz0hbHx8aSgoZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gcChwLmNhbGwpfHwhcChPYmplY3QpfHwhcCgoZnVuY3Rpb24oKXt0PSEwfSkpfHx0fSkpP3Y6cH0sNjk2NDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNiMmQiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaSBpbiBlKXIodCxpLGVbaV0sbik7cmV0dXJuIHR9fSwiNjlmMyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixpLG8sYT1uKCJjZGNlIikscz1uKCJjZmU5IiksYz1uKCI4NjFkIiksdT1uKCI5MTEyIiksbD1uKCIxYTJkIiksZj1uKCJjNmNkIiksZD1uKCJmNzcyIiksaD1uKCJkMDEyIikscD0iT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQiLHY9cy5UeXBlRXJyb3IsZz1zLldlYWtNYXAsbT1mdW5jdGlvbih0KXtyZXR1cm4gbyh0KT9pKHQpOnIodCx7fSl9LGI9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuO2lmKCFjKGUpfHwobj1pKGUpKS50eXBlIT09dCl0aHJvdyBuZXcgdigiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK3QrIiByZXF1aXJlZCIpO3JldHVybiBufX07aWYoYXx8Zi5zdGF0ZSl7dmFyIHk9Zi5zdGF0ZXx8KGYuc3RhdGU9bmV3IGcpO3kuZ2V0PXkuZ2V0LHkuaGFzPXkuaGFzLHkuc2V0PXkuc2V0LHI9ZnVuY3Rpb24odCxlKXtpZih5Lmhhcyh0KSl0aHJvdyBuZXcgdihwKTtyZXR1cm4gZS5mYWNhZGU9dCx5LnNldCh0LGUpLGV9LGk9ZnVuY3Rpb24odCl7cmV0dXJuIHkuZ2V0KHQpfHx7fX0sbz1mdW5jdGlvbih0KXtyZXR1cm4geS5oYXModCl9fWVsc2V7dmFyIF89ZCgic3RhdGUiKTtoW19dPSEwLHI9ZnVuY3Rpb24odCxlKXtpZihsKHQsXykpdGhyb3cgbmV3IHYocCk7cmV0dXJuIGUuZmFjYWRlPXQsdSh0LF8sZSksZX0saT1mdW5jdGlvbih0KXtyZXR1cm4gbCh0LF8pP3RbX106e319LG89ZnVuY3Rpb24odCl7cmV0dXJuIGwodCxfKX19dC5leHBvcnRzPXtzZXQ6cixnZXQ6aSxoYXM6byxlbmZvcmNlOm0sZ2V0dGVyRm9yOmJ9fSwiNmIzNyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJmNWRmIiksaT1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJVaW50OEFycmF5Ij09PXIodCkpcmV0dXJuIHQ7dGhyb3cgbmV3IGkoIkFyZ3VtZW50IGlzIG5vdCBhbiBVaW50OEFycmF5Iil9fSwiNmI1MiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIik7dmFyIHI9bigiNGVhNCIpLmRlZmF1bHQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDAsbigiNGRlNCIpLG4oImU5ZjUiKSxuKCI5MTBkIiksbigiZDNiNyIpO3ZhciBpPXIobigiNzNlOCIpKSxvPXIobigiZDdhNSIpKSxhPXIobigiM2MxYSIpKSxzPXIobigiMGRjNiIpKSxjPXIobigiZjAyNiIpKSx1PXIobigiZDlmYSIpKSxsPXIobigiNzEzMyIpKSxmPXIobigiNjI5MyIpKSxkPXIobigiNTNkNSIpKSxoPXIobigiNWZjNiIpKSxwPXIobigiMzBiNCIpKSx2PXIobigiNzY3OCIpKSxnPXIobigiMTM0YiIpKSxtPXIobigiMjVlOSIpKSxiPXIobigiZjZhNyIpKSx5PXIobigiZjgwOSIpKSxfPXIobigiNDhhNiIpKSx3PXIobigiZjk4ZiIpKSxTPXIobigiMjA3MyIpKSx4PXIobigiZmQ3ZiIpKSxrPW4oImMzNGQiKSxDPXIobigiM2NmZCIpKSxUPXIobigiNzk1OCIpKSxPPXIobigiY2Q1YiIpKSxBPXIobigiYzM4OCIpKTtmdW5jdGlvbiBFKHQpezB9dmFyIGo9e3F1ZXJ5UGFyYW1zOmEuZGVmYXVsdCxyb3V0ZTpzLmRlZmF1bHQsdGltZUZvcm1hdDpjLmRlZmF1bHQsZGF0ZTpjLmRlZmF1bHQsdGltZUZyb206dS5kZWZhdWx0LGNvbG9yR3JhZGllbnQ6bC5kZWZhdWx0LmNvbG9yR3JhZGllbnQsY29sb3JUb1JnYmE6bC5kZWZhdWx0LmNvbG9yVG9SZ2JhLGd1aWQ6Zi5kZWZhdWx0LGNvbG9yOmQuZGVmYXVsdCxzeXM6ay5zeXMsb3M6ay5vcyx0eXBlMmljb246aC5kZWZhdWx0LHJhbmRvbUFycmF5OnAuZGVmYXVsdCx3cmFubmluZzpFLGdldDpvLmRlZmF1bHQuZ2V0LHBvc3Q6by5kZWZhdWx0LnBvc3QscHV0Om8uZGVmYXVsdC5wdXQsZGVsZXRlOm8uZGVmYXVsdC5kZWxldGUsaGV4VG9SZ2I6bC5kZWZhdWx0LmhleFRvUmdiLHJnYlRvSGV4OmwuZGVmYXVsdC5yZ2JUb0hleCx0ZXN0OmIuZGVmYXVsdCxyYW5kb206eS5kZWZhdWx0LGRlZXBDbG9uZTp2LmRlZmF1bHQsZGVlcE1lcmdlOmcuZGVmYXVsdCxnZXRQYXJlbnQ6Uy5kZWZhdWx0LCRwYXJlbnQ6eC5kZWZhdWx0LGFkZFVuaXQ6bS5kZWZhdWx0LHRyaW06Xy5kZWZhdWx0LHR5cGU6WyJwcmltYXJ5Iiwic3VjY2VzcyIsImVycm9yIiwid2FybmluZyIsImluZm8iXSxodHRwOm8uZGVmYXVsdCx0b2FzdDp3LmRlZmF1bHQsY29uZmlnOk8uZGVmYXVsdCx6SW5kZXg6QS5kZWZhdWx0LGRlYm91bmNlOkMuZGVmYXVsdCx0aHJvdHRsZTpULmRlZmF1bHR9O3VuaS4kdT1qO3ZhciBNPWZ1bmN0aW9uKHQpe3QubWl4aW4oaS5kZWZhdWx0KSx0LnByb3RvdHlwZS5vcGVuU2hhcmUmJnQubWl4aW4obXBTaGFyZSksdC5maWx0ZXIoInRpbWVGb3JtYXQiLChmdW5jdGlvbih0LGUpe3JldHVybigwLGMuZGVmYXVsdCkodCxlKX0pKSx0LmZpbHRlcigiZGF0ZSIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKDAsYy5kZWZhdWx0KSh0LGUpfSkpLHQuZmlsdGVyKCJ0aW1lRnJvbSIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKDAsdS5kZWZhdWx0KSh0LGUpfSkpLHQucHJvdG90eXBlLiR1PWp9O2UuZGVmYXVsdD17aW5zdGFsbDpNfX0sIjZiNzUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9bigiN2E4MiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmRlZmF1bHQ9cn0sIjZjZTUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZGY3ZSIpLGk9bigiZWJiNSIpLG89aS5hVHlwZWRBcnJheSxhPWkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxzPWkuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yO2EoInRvUmV2ZXJzZWQiLChmdW5jdGlvbigpe3JldHVybiByKG8odGhpcykscyh0aGlzKSl9KSl9LCI2ZDYxIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImNmZTkiKSxvPW4oImUzMzAiKSxhPW4oIjk0Y2EiKSxzPW4oImNiMmQiKSxjPW4oImYxODMiKSx1PW4oIjIyNjYiKSxsPW4oIjE5YWEiKSxmPW4oIjE2MjYiKSxkPW4oIjcyMzQiKSxoPW4oIjg2MWQiKSxwPW4oImQwMzkiKSx2PW4oIjFjN2UiKSxnPW4oImQ0NGUiKSxtPW4oIjcxNTYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBiPS0xIT09dC5pbmRleE9mKCJNYXAiKSx5PS0xIT09dC5pbmRleE9mKCJXZWFrIiksXz1iPyJzZXQiOiJhZGQiLHc9aVt0XSxTPXcmJncucHJvdG90eXBlLHg9dyxrPXt9LEM9ZnVuY3Rpb24odCl7dmFyIGU9byhTW3RdKTtzKFMsdCwiYWRkIj09PXQ/ZnVuY3Rpb24odCl7cmV0dXJuIGUodGhpcywwPT09dD8wOnQpLHRoaXN9OiJkZWxldGUiPT09dD9mdW5jdGlvbih0KXtyZXR1cm4hKHkmJiFoKHQpKSYmZSh0aGlzLDA9PT10PzA6dCl9OiJnZXQiPT09dD9mdW5jdGlvbih0KXtyZXR1cm4geSYmIWgodCk/dm9pZCAwOmUodGhpcywwPT09dD8wOnQpfToiaGFzIj09PXQ/ZnVuY3Rpb24odCl7cmV0dXJuISh5JiYhaCh0KSkmJmUodGhpcywwPT09dD8wOnQpfTpmdW5jdGlvbih0LG4pe3JldHVybiBlKHRoaXMsMD09PXQ/MDp0LG4pLHRoaXN9KX0sVD1hKHQsIWYodyl8fCEoeXx8Uy5mb3JFYWNoJiYhcCgoZnVuY3Rpb24oKXsobmV3IHcpLmVudHJpZXMoKS5uZXh0KCl9KSkpKTtpZihUKXg9bi5nZXRDb25zdHJ1Y3RvcihlLHQsYixfKSxjLmVuYWJsZSgpO2Vsc2UgaWYoYSh0LCEwKSl7dmFyIE89bmV3IHgsQT1PW19dKHk/e306LTAsMSkhPT1PLEU9cCgoZnVuY3Rpb24oKXtPLmhhcygxKX0pKSxqPXYoKGZ1bmN0aW9uKHQpe25ldyB3KHQpfSkpLE09IXkmJnAoKGZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHcsZT01O3doaWxlKGUtLSl0W19dKGUsZSk7cmV0dXJuIXQuaGFzKC0wKX0pKTtqfHwoeD1lKChmdW5jdGlvbih0LGUpe2wodCxTKTt2YXIgbj1tKG5ldyB3LHQseCk7cmV0dXJuIGQoZSl8fHUoZSxuW19dLHt0aGF0Om4sQVNfRU5UUklFUzpifSksbn0pKSx4LnByb3RvdHlwZT1TLFMuY29uc3RydWN0b3I9eCksKEV8fE0pJiYoQygiZGVsZXRlIiksQygiaGFzIiksYiYmQygiZ2V0IikpLChNfHxBKSYmQyhfKSx5JiZTLmNsZWFyJiZkZWxldGUgUy5jbGVhcn1yZXR1cm4ga1t0XT14LHIoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6eCE9PXd9LGspLGcoeCx0KSx5fHxuLnNldFN0cm9uZyh4LHQsYikseH19LCI2ZjE5IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjkxMTIiKSxpPW4oIjBkMjYiKSxvPW4oImI5ODAiKSxhPUVycm9yLmNhcHR1cmVTdGFja1RyYWNlO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixzKXtvJiYoYT9hKHQsZSk6cih0LCJzdGFjayIsaShuLHMpKSl9fSwiNmY0OCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI2ZDYxIiksaT1uKCI2NTY2Iik7cigiTWFwIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0pLGkpfSwiNmY1MyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI4M2FiIiksaT1uKCJkMDM5Iiksbz1uKCJlMzMwIiksYT1uKCJlMTYzIikscz1uKCJkZjc1IiksYz1uKCJmYzZhIiksdT1uKCJkMWU3IikuZixsPW8odSksZj1vKFtdLnB1c2gpLGQ9ciYmaSgoZnVuY3Rpb24oKXt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiB0WzJdPTIsIWwodCwyKX0pKSxoPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbixpPWMoZSksbz1zKGkpLHU9ZCYmbnVsbD09PWEoaSksaD1vLmxlbmd0aCxwPTAsdj1bXTt3aGlsZShoPnApbj1vW3ArK10sciYmISh1P24gaW4gaTpsKGksbikpfHxmKHYsdD9bbixpW25dXTppW25dKTtyZXR1cm4gdn19O3QuZXhwb3J0cz17ZW50cmllczpoKCEwKSx2YWx1ZXM6aCghMSl9fSw3MDM3OmZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKGUpe3JldHVybiB0LmV4cG9ydHM9cj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sdC5leHBvcnRzLl9fZXNNb2R1bGU9ITAsdC5leHBvcnRzWyJkZWZhdWx0Il09dC5leHBvcnRzLHIoZSl9bigiYTRkMyIpLG4oImUwMWEiKSxuKCJkMjhiIiksbigiZDNiNyIpLG4oIjNjYTMiKSxuKCJkZGIwIiksdC5leHBvcnRzPXIsdC5leHBvcnRzLl9fZXNNb2R1bGU9ITAsdC5leHBvcnRzWyJkZWZhdWx0Il09dC5leHBvcnRzfSw3MTMzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06InJnYigwLCAwLCAwKSIsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06InJnYigyNTUsIDI1NSwgMjU1KSIsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTAscj1pKHQsITEpLGE9clswXSxzPXJbMV0sYz1yWzJdLHU9aShlLCExKSxsPXVbMF0sZj11WzFdLGQ9dVsyXSxoPShsLWEpL24scD0oZi1zKS9uLHY9KGQtYykvbixnPVtdLG09MDttPG47bSsrKXt2YXIgYj1vKCJyZ2IoIitNYXRoLnJvdW5kKGgqbSthKSsiLCIrTWF0aC5yb3VuZChwKm0rcykrIiwiK01hdGgucm91bmQodiptK2MpKyIpIik7Zy5wdXNoKGIpfXJldHVybiBnfWZ1bmN0aW9uIGkodCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxuPS9eIyhbMC05YS1mQS1mXXszfXxbMC05YS1mQS1mXXs2fSkkLztpZih0PXQudG9Mb3dlckNhc2UoKSx0JiZuLnRlc3QodCkpe2lmKDQ9PT10Lmxlbmd0aCl7Zm9yKHZhciByPSIjIixpPTE7aTw0O2krPTEpcis9dC5zbGljZShpLGkrMSkuY29uY2F0KHQuc2xpY2UoaSxpKzEpKTt0PXJ9Zm9yKHZhciBvPVtdLGE9MTthPDc7YSs9MilvLnB1c2gocGFyc2VJbnQoIjB4Iit0LnNsaWNlKGEsYSsyKSkpO3JldHVybiBlPyJyZ2IoIi5jb25jYXQob1swXSwiLCIpLmNvbmNhdChvWzFdLCIsIikuY29uY2F0KG9bMl0sIikiKTpvfWlmKC9eKHJnYnxSR0IpLy50ZXN0KHQpKXt2YXIgcz10LnJlcGxhY2UoLyg/OlwofFwpfHJnYnxSR0IpKi9nLCIiKS5zcGxpdCgiLCIpO3JldHVybiBzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIE51bWJlcih0KX0pKX1yZXR1cm4gdH1mdW5jdGlvbiBvKHQpe3ZhciBlPXQsbj0vXiMoWzAtOWEtZkEtZl17M318WzAtOWEtZkEtZl17Nn0pJC87aWYoL14ocmdifFJHQikvLnRlc3QoZSkpe2Zvcih2YXIgcj1lLnJlcGxhY2UoLyg/OlwofFwpfHJnYnxSR0IpKi9nLCIiKS5zcGxpdCgiLCIpLGk9IiMiLG89MDtvPHIubGVuZ3RoO28rKyl7dmFyIGE9TnVtYmVyKHJbb10pLnRvU3RyaW5nKDE2KTthPTE9PVN0cmluZyhhKS5sZW5ndGg/IjAiK2E6YSwiMCI9PT1hJiYoYSs9YSksaSs9YX1yZXR1cm4gNyE9PWkubGVuZ3RoJiYoaT1lKSxpfWlmKCFuLnRlc3QoZSkpcmV0dXJuIGU7dmFyIHM9ZS5yZXBsYWNlKC8jLywiIikuc3BsaXQoIiIpO2lmKDY9PT1zLmxlbmd0aClyZXR1cm4gZTtpZigzPT09cy5sZW5ndGgpe2Zvcih2YXIgYz0iIyIsdT0wO3U8cy5sZW5ndGg7dSs9MSljKz1zW3VdK3NbdV07cmV0dXJuIGN9fWZ1bmN0aW9uIGEodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOi4zO3Q9byh0KTt2YXIgbj0vXiMoWzAtOWEtZkEtZl17M318WzAtOWEtZkEtZl17Nn0pJC8scj10LnRvTG93ZXJDYXNlKCk7aWYociYmbi50ZXN0KHIpKXtpZig0PT09ci5sZW5ndGgpe2Zvcih2YXIgaT0iIyIsYT0xO2E8NDthKz0xKWkrPXIuc2xpY2UoYSxhKzEpLmNvbmNhdChyLnNsaWNlKGEsYSsxKSk7cj1pfWZvcih2YXIgcz1bXSxjPTE7Yzw3O2MrPTIpcy5wdXNoKHBhcnNlSW50KCIweCIrci5zbGljZShjLGMrMikpKTtyZXR1cm4icmdiYSgiK3Muam9pbigiLCIpKyIsIitlKyIpIn1yZXR1cm4gcn1uKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDAsbigiZDQwMSIpLG4oIjk5YWYiKSxuKCJkODFkIiksbigiMTRkOSIpLG4oImZiNmEiKSxuKCJlOWY1IiksbigiYWI0MyIpLG4oImE5ZTMiKSxuKCJkM2I3IiksbigiZTI1ZSIpLG4oImFjMWYiKSxuKCIwMGI0IiksbigiMjVmMCIpLG4oIjUzMTkiKTtlLmRlZmF1bHQ9e2NvbG9yR3JhZGllbnQ6cixoZXhUb1JnYjppLHJnYlRvSGV4Om8sY29sb3JUb1JnYmE6YX19LDcxNDk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJkMDY2Iiksbz1uKCJjNDMwIiksYT1uKCJkMjU2Iikscz1uKCI0NzM4IikuQ09OU1RSVUNUT1IsYz1uKCJjZGY5IiksdT1pKCJQcm9taXNlIiksbD1vJiYhcztyKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITAsZm9yY2VkOm98fHN9LHtyZXNvbHZlOmZ1bmN0aW9uKHQpe3JldHVybiBjKGwmJnRoaXM9PT11P2E6dGhpcyx0KX19KX0sNzE1NjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjE2MjYiKSxpPW4oIjg2MWQiKSxvPW4oImQyYmIiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBhLHM7cmV0dXJuIG8mJnIoYT1lLmNvbnN0cnVjdG9yKSYmYSE9PW4mJmkocz1hLnByb3RvdHlwZSkmJnMhPT1uLnByb3RvdHlwZSYmbyh0LHMpLHR9fSw3MTkyOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiY2ZlOSIpLGk9bigiZTMzMCIpLG89bigiZjY5ZCIpLGE9bigiOGE5NiIpLHM9bigiMWEyZCIpLGM9bigiYjkxNyIpLHU9bigiZGE2MyIpLGw9bigiMjAwNSIpLGY9Yy5jMmksZD1jLmMyaVVybCxoPXIuU3ludGF4RXJyb3IscD1yLlR5cGVFcnJvcix2PWkoIiIuY2hhckF0KSxnPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoO2U8bjtlKyspe3ZhciByPXYodCxlKTtpZigiICIhPT1yJiYiXHQiIT09ciYmIlxuIiE9PXImJiJcZiIhPT1yJiYiXHIiIT09cilicmVha31yZXR1cm4gZX0sbT1mdW5jdGlvbih0LGUsbil7dmFyIHI9dC5sZW5ndGg7cjw0JiYodCs9Mj09PXI/IkFBIjoiQSIpO3ZhciBpPShlW3YodCwwKV08PDE4KSsoZVt2KHQsMSldPDwxMikrKGVbdih0LDIpXTw8NikrZVt2KHQsMyldLG89W2k+PjE2JjI1NSxpPj44JjI1NSwyNTUmaV07aWYoMj09PXIpe2lmKG4mJjAhPT1vWzFdKXRocm93IG5ldyBoKCJFeHRyYSBiaXRzIik7cmV0dXJuW29bMF1dfWlmKDM9PT1yKXtpZihuJiYwIT09b1syXSl0aHJvdyBuZXcgaCgiRXh0cmEgYml0cyIpO3JldHVybltvWzBdLG9bMV1dfXJldHVybiBvfSxiPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIHI9ZS5sZW5ndGgsaT0wO2k8cjtpKyspdFtuK2ldPWVbaV07cmV0dXJuIG4rcn07dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHIpe2EodCksbyhlKTt2YXIgaT0iYmFzZTY0Ij09PXUoZSk/ZjpkLGM9ZT9lLmxhc3RDaHVua0hhbmRsaW5nOnZvaWQgMDtpZih2b2lkIDA9PT1jJiYoYz0ibG9vc2UiKSwibG9vc2UiIT09YyYmInN0cmljdCIhPT1jJiYic3RvcC1iZWZvcmUtcGFydGlhbCIhPT1jKXRocm93IG5ldyBwKCJJbmNvcnJlY3QgYGxhc3RDaHVua0hhbmRsaW5nYCBvcHRpb24iKTtuJiZsKG4uYnVmZmVyKTt2YXIgeT10Lmxlbmd0aCxfPW58fFtdLHc9MCxTPTAseD0iIixrPTA7aWYocil3aGlsZSgxKXtpZihrPWcodCxrKSxrPT09eSl7aWYoeC5sZW5ndGg+MCl7aWYoInN0b3AtYmVmb3JlLXBhcnRpYWwiPT09YylicmVhaztpZigibG9vc2UiIT09Yyl0aHJvdyBuZXcgaCgiTWlzc2luZyBwYWRkaW5nIik7aWYoMT09PXgubGVuZ3RoKXRocm93IG5ldyBoKCJNYWxmb3JtZWQgcGFkZGluZzogZXhhY3RseSBvbmUgYWRkaXRpb25hbCBjaGFyYWN0ZXIiKTt3PWIoXyxtKHgsaSwhMSksdyl9Uz15O2JyZWFrfXZhciBDPXYodCxrKTtpZigrK2ssIj0iPT09Qyl7aWYoeC5sZW5ndGg8Mil0aHJvdyBuZXcgaCgiUGFkZGluZyBpcyB0b28gZWFybHkiKTtpZihrPWcodCxrKSwyPT09eC5sZW5ndGgpe2lmKGs9PT15KXtpZigic3RvcC1iZWZvcmUtcGFydGlhbCI9PT1jKWJyZWFrO3Rocm93IG5ldyBoKCJNYWxmb3JtZWQgcGFkZGluZzogb25seSBvbmUgPSIpfSI9Ij09PXYodCxrKSYmKCsrayxrPWcodCxrKSl9aWYoazx5KXRocm93IG5ldyBoKCJVbmV4cGVjdGVkIGNoYXJhY3RlciBhZnRlciBwYWRkaW5nIik7dz1iKF8sbSh4LGksInN0cmljdCI9PT1jKSx3KSxTPXk7YnJlYWt9aWYoIXMoaSxDKSl0aHJvdyBuZXcgaCgiVW5leHBlY3RlZCBjaGFyYWN0ZXIiKTt2YXIgVD1yLXc7aWYoMT09PVQmJjI9PT14Lmxlbmd0aHx8Mj09PVQmJjM9PT14Lmxlbmd0aClicmVhaztpZih4Kz1DLDQ9PT14Lmxlbmd0aCYmKHc9YihfLG0oeCxpLCExKSx3KSx4PSIiLFM9ayx3PT09cikpYnJlYWt9cmV0dXJue2J5dGVzOl8scmVhZDpTLHdyaXR0ZW46d319fSw3MjM0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dHx8dm9pZCAwPT09dH19LDcyODI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlMzMwIiksaT1uKCI1OWVkIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt0cnl7cmV0dXJuIHIoaShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSlbbl0pKX1jYXRjaChvKXt9fX0sIjcyYzMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiZTliYyIpLG89bigiNTMyMCIpLGE9bigiZGFkMiIpLHM9IWEoInVuaW9uIil8fCFvKCJ1bmlvbiIpO3Ioe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpzfSx7dW5pb246aX0pfSwiNzJmNyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlYmI1IikuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxpPW4oImQwMzkiKSxvPW4oImNmZTkiKSxhPW4oImUzMzAiKSxzPW8uVWludDhBcnJheSxjPXMmJnMucHJvdG90eXBlfHx7fSx1PVtdLnRvU3RyaW5nLGw9YShbXS5qb2luKTtpKChmdW5jdGlvbigpe3UuY2FsbCh7fSl9KSkmJih1PWZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcyl9KTt2YXIgZj1jLnRvU3RyaW5nIT09dTtyKCJ0b1N0cmluZyIsdSxmKX0sIjczNWUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZWJiNSIpLGk9bigiODFkNSIpLG89bigiZjQ5NSIpLGE9bigiZjVkZiIpLHM9bigiYzY1YiIpLGM9bigiZTMzMCIpLHU9bigiZDAzOSIpLGw9ci5hVHlwZWRBcnJheSxmPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxkPWMoIiIuc2xpY2UpLGg9dSgoZnVuY3Rpb24oKXt2YXIgdD0wO3JldHVybiBuZXcgSW50OEFycmF5KDIpLmZpbGwoe3ZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdCsrfX0pLDEhPT10fSkpO2YoImZpbGwiLChmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoO2wodGhpcyk7dmFyIG49IkJpZyI9PT1kKGEodGhpcyksMCwzKT9vKHQpOit0O3JldHVybiBzKGksdGhpcyxuLGU+MT9hcmd1bWVudHNbMV06dm9pZCAwLGU+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0pLGgpfSwiNzNlOCI6ZnVuY3Rpb24odCxlLG4pe24oImQ4MWQiKSxuKCJhNDM0IiksbigiZTlmNSIpLG4oImFiNDMiKSxuKCJiNjRiIiksbigiZDNiNyIpLG4oImFjMWYiKSxuKCIwMGI0IiksdC5leHBvcnRzPXtkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue319LG9uTG9hZDpmdW5jdGlvbigpe3RoaXMuJHUuZ2V0UmVjdD10aGlzLiR1R2V0UmVjdH0sbWV0aG9kczp7JHVHZXRSZWN0OmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIpe3VuaS5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuaW4obilbZT8ic2VsZWN0QWxsIjoic2VsZWN0Il0odCkuYm91bmRpbmdDbGllbnRSZWN0KChmdW5jdGlvbih0KXtlJiZBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aCYmcih0KSwhZSYmdCYmcih0KX0pKS5leGVjKCl9KSl9LGdldFBhcmVudERhdGE6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiIiO3RoaXMucGFyZW50fHwodGhpcy5wYXJlbnQ9ITEpLHRoaXMucGFyZW50PXRoaXMuJHUuJHBhcmVudC5jYWxsKHRoaXMsZSksdGhpcy5wYXJlbnQmJk9iamVjdC5rZXlzKHRoaXMucGFyZW50RGF0YSkubWFwKChmdW5jdGlvbihlKXt0LnBhcmVudERhdGFbZV09dC5wYXJlbnRbZV19KSl9LHByZXZlbnRFdmVudDpmdW5jdGlvbih0KXt0JiZ0LnN0b3BQcm9wYWdhdGlvbiYmdC5zdG9wUHJvcGFnYXRpb24oKX19LG9uUmVhY2hCb3R0b206ZnVuY3Rpb24oKXt1bmkuJGVtaXQoInVPblJlYWNoQm90dG9tIil9LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKHRoaXMucGFyZW50JiZ1bmkuJHUudGVzdC5hcnJheSh0aGlzLnBhcmVudC5jaGlsZHJlbikpe3ZhciBlPXRoaXMucGFyZW50LmNoaWxkcmVuO2UubWFwKChmdW5jdGlvbihuLHIpe249PT10JiZlLnNwbGljZShyLDEpfSkpfX19fSw3NDE4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LCI3NGU4IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImNmZTkiKSxvPW4oImM2NWIiKSxhPW4oIjgzYWIiKSxzPW4oIjhhYTciKSxjPW4oImViYjUiKSx1PW4oIjYyMWEiKSxsPW4oIjE5YWEiKSxmPW4oIjVjNmMiKSxkPW4oIjkxMTIiKSxoPW4oImVhYzUiKSxwPW4oIjUwYzQiKSx2PW4oIjBiMjUiKSxnPW4oIjE4MmQiKSxtPW4oIjEzYTYiKSxiPW4oImEwNGIiKSx5PW4oIjFhMmQiKSxfPW4oImY1ZGYiKSx3PW4oIjg2MWQiKSxTPW4oImQ5YjUiKSx4PW4oIjdjNzMiKSxrPW4oIjNhOWIiKSxDPW4oImQyYmIiKSxUPW4oIjI0MWMiKS5mLE89bigiYTA3OCIpLEE9bigiYjcyNyIpLmZvckVhY2gsRT1uKCIyNjI2Iiksaj1uKCJlZGQwIiksTT1uKCI5YmYyIiksST1uKCIwNmNmIiksUD1uKCJkZmI5IiksJD1uKCI2OWYzIiksTD1uKCI3MTU2IiksUj0kLmdldCxOPSQuc2V0LEQ9JC5lbmZvcmNlLEI9TS5mLEY9SS5mLHo9aS5SYW5nZUVycm9yLFc9dS5BcnJheUJ1ZmZlcixIPVcucHJvdG90eXBlLFU9dS5EYXRhVmlldyxxPWMuTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyxWPWMuVFlQRURfQVJSQVlfVEFHLFk9Yy5UeXBlZEFycmF5LFg9Yy5UeXBlZEFycmF5UHJvdG90eXBlLEc9Yy5pc1R5cGVkQXJyYXksUT0iQllURVNfUEVSX0VMRU1FTlQiLEo9Ildyb25nIGxlbmd0aCIsSz1mdW5jdGlvbih0LGUpe2oodCxlLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFIodGhpcylbZV19fSl9LFo9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIGsoSCx0KXx8IkFycmF5QnVmZmVyIj09PShlPV8odCkpfHwiU2hhcmVkQXJyYXlCdWZmZXIiPT09ZX0sdHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gRyh0KSYmIVMoZSkmJmUgaW4gdCYmaCgrZSkmJmU+PTB9LGV0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9YihlKSx0dCh0LGUpP2YoMix0W2VdKTpGKHQsZSl9LG50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZT1iKGUpLCEodHQodCxlKSYmdyhuKSYmeShuLCJ2YWx1ZSIpKXx8eShuLCJnZXQiKXx8eShuLCJzZXQiKXx8bi5jb25maWd1cmFibGV8fHkobiwid3JpdGFibGUiKSYmIW4ud3JpdGFibGV8fHkobiwiZW51bWVyYWJsZSIpJiYhbi5lbnVtZXJhYmxlP0IodCxlLG4pOih0W2VdPW4udmFsdWUsdCl9O2E/KHF8fChJLmY9ZXQsTS5mPW50LEsoWCwiYnVmZmVyIiksSyhYLCJieXRlT2Zmc2V0IiksSyhYLCJieXRlTGVuZ3RoIiksSyhYLCJsZW5ndGgiKSkscih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFxfSx7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOmV0LGRlZmluZVByb3BlcnR5Om50fSksdC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT10Lm1hdGNoKC9cZCsvKVswXS84LGM9dCsobj8iQ2xhbXBlZCI6IiIpKyJBcnJheSIsdT0iZ2V0Iit0LGY9InNldCIrdCxoPWlbY10sYj1oLHk9YiYmYi5wcm90b3R5cGUsXz17fSxTPWZ1bmN0aW9uKHQsZSl7dmFyIG49Uih0KTtyZXR1cm4gbi52aWV3W3VdKGUqYStuLmJ5dGVPZmZzZXQsITApfSxrPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT1SKHQpO2kudmlld1tmXShlKmEraS5ieXRlT2Zmc2V0LG4/bShyKTpyLCEwKX0saj1mdW5jdGlvbih0LGUpe0IodCxlLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLGUpfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGsodGhpcyxlLHQpfSxlbnVtZXJhYmxlOiEwfSl9O3E/cyYmKGI9ZSgoZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIGwodCx5KSxMKGZ1bmN0aW9uKCl7cmV0dXJuIHcoZSk/WihlKT92b2lkIDAhPT1yP25ldyBoKGUsZyhuLGEpLHIpOnZvaWQgMCE9PW4/bmV3IGgoZSxnKG4sYSkpOm5ldyBoKGUpOkcoZSk/UChiLGUpOm8oTyxiLGUpOm5ldyBoKHYoZSkpfSgpLHQsYil9KSksQyYmQyhiLFkpLEEoVChoKSwoZnVuY3Rpb24odCl7dCBpbiBifHxkKGIsdCxoW3RdKX0pKSxiLnByb3RvdHlwZT15KTooYj1lKChmdW5jdGlvbih0LGUsbixyKXtsKHQseSk7dmFyIGkscyxjLHU9MCxmPTA7aWYodyhlKSl7aWYoIVooZSkpcmV0dXJuIEcoZSk/UChiLGUpOm8oTyxiLGUpO2k9ZSxmPWcobixhKTt2YXIgZD1lLmJ5dGVMZW5ndGg7aWYodm9pZCAwPT09cil7aWYoZCVhKXRocm93IG5ldyB6KEopO2lmKHM9ZC1mLHM8MCl0aHJvdyBuZXcgeihKKX1lbHNlIGlmKHM9cChyKSphLHMrZj5kKXRocm93IG5ldyB6KEopO2M9cy9hfWVsc2UgYz12KGUpLHM9YyphLGk9bmV3IFcocyk7Tih0LHtidWZmZXI6aSxieXRlT2Zmc2V0OmYsYnl0ZUxlbmd0aDpzLGxlbmd0aDpjLHZpZXc6bmV3IFUoaSl9KTt3aGlsZSh1PGMpaih0LHUrKyl9KSksQyYmQyhiLFkpLHk9Yi5wcm90b3R5cGU9eChYKSkseS5jb25zdHJ1Y3RvciE9PWImJmQoeSwiY29uc3RydWN0b3IiLGIpLEQoeSkuVHlwZWRBcnJheUNvbnN0cnVjdG9yPWIsViYmZCh5LFYsYyk7dmFyIE09YiE9PWg7X1tjXT1iLHIoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6TSxzaGFtOiFxfSxfKSxRIGluIGJ8fGQoYixRLGEpLFEgaW4geXx8ZCh5LFEsYSksRShjKX0pOnQuZXhwb3J0cz1mdW5jdGlvbigpe319LCI3NWJkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKSxpPW4oIjRiMTEiKSxvPW4oImI2MjAiKSxhPXIuRGF0YVZpZXc7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFpfHwwIT09byh0KSlyZXR1cm4hMTt0cnl7cmV0dXJuIG5ldyBhKHQpLCExfWNhdGNoKGUpe3JldHVybiEwfX19LDc2Nzg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIik7dmFyIHI9bigiNGVhNCIpLmRlZmF1bHQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDA7dmFyIGk9cihuKCIzODM1IikpLG89cihuKCI1M2NhIikpO2Z1bmN0aW9uIGEodCl7dmFyIGUsbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bmV3IFdlYWtNYXA7aWYobnVsbD09PXR8fCJvYmplY3QiIT09KDAsby5kZWZhdWx0KSh0KSlyZXR1cm4gdDtpZihuLmhhcyh0KSlyZXR1cm4gbi5nZXQodCk7aWYodCBpbnN0YW5jZW9mIERhdGUpZT1uZXcgRGF0ZSh0LmdldFRpbWUoKSk7ZWxzZSBpZih0IGluc3RhbmNlb2YgUmVnRXhwKWU9bmV3IFJlZ0V4cCh0KTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBNYXApZT1uZXcgTWFwKEFycmF5LmZyb20odCwoZnVuY3Rpb24odCl7dmFyIGU9KDAsaS5kZWZhdWx0KSh0LDIpLHI9ZVswXSxvPWVbMV07cmV0dXJuW3IsYShvLG4pXX0pKSk7ZWxzZSBpZih0IGluc3RhbmNlb2YgU2V0KWU9bmV3IFNldChBcnJheS5mcm9tKHQsKGZ1bmN0aW9uKHQpe3JldHVybiBhKHQsbil9KSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSllPXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gYSh0LG4pfSkpO2Vsc2UgaWYoIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkpe2U9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLG4uc2V0KHQsZSk7Zm9yKHZhciByPTAscz1PYmplY3QuZW50cmllcyh0KTtyPHMubGVuZ3RoO3IrKyl7dmFyIGM9KDAsaS5kZWZhdWx0KShzW3JdLDIpLHU9Y1swXSxsPWNbMV07ZVt1XT1hKGwsbil9fWVsc2UgZT1PYmplY3QuYXNzaWduKHt9LHQpO3JldHVybiBuLnNldCh0LGUpLGV9bigiZDQwMSIpLG4oImE2MzAiKSxuKCJkODFkIiksbigiZTlmNSIpLG4oImFiNDMiKSxuKCI0ZWM5IiksbigiNGZhZGMiKSxuKCIzNDEwIiksbigiZDNiNyIpLG4oIjRkNjMiKSxuKCJjNjA3IiksbigiYWMxZiIpLG4oIjJjM2UiKSxuKCIyNWYwIiksbigiNjA2MiIpLG4oIjFlNzAiKSxuKCI3OWE0IiksbigiYzFhMSIpLG4oIjhiMDAiKSxuKCJhNGU3IiksbigiMWU1YSIpLG4oIjcyYzMiKSxuKCIzY2EzIiksbigiMTBkMSIpLG4oImRkYjAiKTtlLmRlZmF1bHQ9YX0sIjc3YTciOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9QXJyYXksaT1NYXRoLmFicyxvPU1hdGgucG93LGE9TWF0aC5mbG9vcixzPU1hdGgubG9nLGM9TWF0aC5MTjIsdT1mdW5jdGlvbih0LGUsbil7dmFyIHUsbCxmLGQ9cihuKSxoPTgqbi1lLTEscD0oMTw8aCktMSx2PXA+PjEsZz0yMz09PWU/bygyLC0yNCktbygyLC03Nyk6MCxtPXQ8MHx8MD09PXQmJjEvdDwwPzE6MCxiPTA7dD1pKHQpLHQhPT10fHx0PT09MS8wPyhsPXQhPT10PzE6MCx1PXApOih1PWEocyh0KS9jKSxmPW8oMiwtdSksdCpmPDEmJih1LS0sZio9MiksdCs9dSt2Pj0xP2cvZjpnKm8oMiwxLXYpLHQqZj49MiYmKHUrKyxmLz0yKSx1K3Y+PXA/KGw9MCx1PXApOnUrdj49MT8obD0odCpmLTEpKm8oMixlKSx1Kz12KToobD10Km8oMix2LTEpKm8oMixlKSx1PTApKTt3aGlsZShlPj04KWRbYisrXT0yNTUmbCxsLz0yNTYsZS09ODt1PXU8PGV8bCxoKz1lO3doaWxlKGg+MClkW2IrK109MjU1JnUsdS89MjU2LGgtPTg7cmV0dXJuIGRbYi0xXXw9MTI4Km0sZH0sbD1mdW5jdGlvbih0LGUpe3ZhciBuLHI9dC5sZW5ndGgsaT04KnItZS0xLGE9KDE8PGkpLTEscz1hPj4xLGM9aS03LHU9ci0xLGw9dFt1LS1dLGY9MTI3Jmw7bD4+PTc7d2hpbGUoYz4wKWY9MjU2KmYrdFt1LS1dLGMtPTg7bj1mJigxPDwtYyktMSxmPj49LWMsYys9ZTt3aGlsZShjPjApbj0yNTYqbit0W3UtLV0sYy09ODtpZigwPT09ZilmPTEtcztlbHNle2lmKGY9PT1hKXJldHVybiBuP05hTjpsPy0xLzA6MS8wO24rPW8oMixlKSxmLT1zfXJldHVybihsPy0xOjEpKm4qbygyLGYtZSl9O3QuZXhwb3J0cz17cGFjazp1LHVucGFjazpsfX0sNzgzOTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz1bImNvbnN0cnVjdG9yIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJ0b0xvY2FsZVN0cmluZyIsInRvU3RyaW5nIiwidmFsdWVPZiJdfSwiNzg1YSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjYzEyIiksaT1yKCJzcGFuIikuY2xhc3NMaXN0LG89aSYmaS5jb25zdHJ1Y3RvciYmaS5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7dC5leHBvcnRzPW89PT1PYmplY3QucHJvdG90eXBlP3ZvaWQgMDpvfSw3OTU4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI7ZnVuY3Rpb24gaSh0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NTAwLG49IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXTtuP3J8fChyPSEwLCJmdW5jdGlvbiI9PT10eXBlb2YgdCYmdCgpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cj0hMX0pLGUpKTpyfHwocj0hMCxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3I9ITEsImZ1bmN0aW9uIj09PXR5cGVvZiB0JiZ0KCl9KSxlKSl9bigiN2E4MiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmRlZmF1bHQ9dm9pZCAwO2UuZGVmYXVsdD1pfSwiNzlhNCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJkMDM5Iiksbz1uKCI5NTNiIiksYT1uKCJkYWQyIikscz0hYSgiaW50ZXJzZWN0aW9uIiwoZnVuY3Rpb24odCl7cmV0dXJuIDI9PT10LnNpemUmJnQuaGFzKDEpJiZ0LmhhcygyKX0pKXx8aSgoZnVuY3Rpb24oKXtyZXR1cm4iMywyIiE9PVN0cmluZyhBcnJheS5mcm9tKG5ldyBTZXQoWzEsMiwzXSkuaW50ZXJzZWN0aW9uKG5ldyBTZXQoWzMsMl0pKSkpfSkpO3Ioe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpzfSx7aW50ZXJzZWN0aW9uOm99KX0sIjdhODIiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiODNhYiIpLG89bigiOWJmMiIpLmY7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOk9iamVjdC5kZWZpbmVQcm9wZXJ0eSE9PW8sc2hhbTohaX0se2RlZmluZVByb3BlcnR5Om99KX0sIjdiMGIiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMWQ4MCIpLGk9T2JqZWN0O3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaShyKHQpKX19LCI3YzczIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByLGk9bigiODI1YSIpLG89bigiMzdlOCIpLGE9bigiNzgzOSIpLHM9bigiZDAxMiIpLGM9bigiMWJlNCIpLHU9bigiY2MxMiIpLGw9bigiZjc3MiIpLGY9Ij4iLGQ9IjwiLGg9InByb3RvdHlwZSIscD0ic2NyaXB0Iix2PWwoIklFX1BST1RPIiksZz1mdW5jdGlvbigpe30sbT1mdW5jdGlvbih0KXtyZXR1cm4gZCtwK2YrdCtkKyIvIitwK2Z9LGI9ZnVuY3Rpb24odCl7dC53cml0ZShtKCIiKSksdC5jbG9zZSgpO3ZhciBlPXQucGFyZW50V2luZG93Lk9iamVjdDtyZXR1cm4gdD1udWxsLGV9LHk9ZnVuY3Rpb24oKXt2YXIgdCxlPXUoImlmcmFtZSIpLG49ImphdmEiK3ArIjoiO3JldHVybiBlLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGMuYXBwZW5kQ2hpbGQoZSksZS5zcmM9U3RyaW5nKG4pLHQ9ZS5jb250ZW50V2luZG93LmRvY3VtZW50LHQub3BlbigpLHQud3JpdGUobSgiZG9jdW1lbnQuRj1PYmplY3QiKSksdC5jbG9zZSgpLHQuRn0sXz1mdW5jdGlvbigpe3RyeXtyPW5ldyBBY3RpdmVYT2JqZWN0KCJodG1sZmlsZSIpfWNhdGNoKGUpe31fPSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuZG9tYWluJiZyP2Iocik6eSgpOmIocik7dmFyIHQ9YS5sZW5ndGg7d2hpbGUodC0tKWRlbGV0ZSBfW2hdW2FbdF1dO3JldHVybiBfKCl9O3Nbdl09ITAsdC5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKHQsZSl7dmFyIG47cmV0dXJuIG51bGwhPT10PyhnW2hdPWkodCksbj1uZXcgZyxnW2hdPW51bGwsblt2XT10KTpuPV8oKSx2b2lkIDA9PT1lP246by5mKG4sZSl9fSwiN2Q1NCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJjNjViIiksbz1uKCIyMjY2IiksYT1uKCI1OWVkIikscz1uKCI4MjVhIiksYz1uKCI0NmM0IiksdT1uKCIyYTYyIiksbD1uKCJmOTlmIiksZj1sKCJmb3JFYWNoIixUeXBlRXJyb3IpO3Ioe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmZ9LHtmb3JFYWNoOmZ1bmN0aW9uKHQpe3ModGhpcyk7dHJ5e2EodCl9Y2F0Y2gocil7dSh0aGlzLCJ0aHJvdyIscil9aWYoZilyZXR1cm4gaShmLHRoaXMsdCk7dmFyIGU9Yyh0aGlzKSxuPTA7byhlLChmdW5jdGlvbihlKXt0KGUsbisrKX0pLHtJU19SRUNPUkQ6ITB9KX19KX0sIjdkYjAiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiYjcyNyIpLmZpbmQsbz1uKCI0NGQyIiksYT0iZmluZCIscz0hMDthIGluW10mJkFycmF5KDEpW2FdKChmdW5jdGlvbigpe3M9ITF9KSkscih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOnN9LHtmaW5kOmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksbyhhKX0sIjdlMTIiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiY2ZlOSIpLGk9bigiZDAzOSIpLG89bigiZTMzMCIpLGE9bigiNTc3ZSIpLHM9bigiNThhOCIpLnRyaW0sYz1uKCI1ODk5IiksdT1vKCIiLmNoYXJBdCksbD1yLnBhcnNlRmxvYXQsZj1yLlN5bWJvbCxkPWYmJmYuaXRlcmF0b3IsaD0xL2woYysiLTAiKSE9PS0xLzB8fGQmJiFpKChmdW5jdGlvbigpe2woT2JqZWN0KGQpKX0pKTt0LmV4cG9ydHM9aD9mdW5jdGlvbih0KXt2YXIgZT1zKGEodCkpLG49bChlKTtyZXR1cm4gMD09PW4mJiItIj09PXUoZSwwKT8tMDpufTpsfSwiN2Y2NSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI1OWVkIiksaT1uKCI4MjVhIiksbz1uKCJjNjViIiksYT1uKCI1OTI2Iikscz1uKCI0NmM0IiksYz0iSW52YWxpZCBzaXplIix1PVJhbmdlRXJyb3IsbD1UeXBlRXJyb3IsZj1NYXRoLm1heCxkPWZ1bmN0aW9uKHQsZSl7dGhpcy5zZXQ9dCx0aGlzLnNpemU9ZihlLDApLHRoaXMuaGFzPXIodC5oYXMpLHRoaXMua2V5cz1yKHQua2V5cyl9O2QucHJvdG90eXBlPXtnZXRJdGVyYXRvcjpmdW5jdGlvbigpe3JldHVybiBzKGkobyh0aGlzLmtleXMsdGhpcy5zZXQpKSl9LGluY2x1ZGVzOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMuaGFzLHRoaXMuc2V0LHQpfX0sdC5leHBvcnRzPWZ1bmN0aW9uKHQpe2kodCk7dmFyIGU9K3Quc2l6ZTtpZihlIT09ZSl0aHJvdyBuZXcgbChjKTt2YXIgbj1hKGUpO2lmKG48MCl0aHJvdyBuZXcgdShjKTtyZXR1cm4gbmV3IGQodCxuKX19LDgxNzI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlMDY1IiksaT1uKCI1N2I5Iik7cigidG9QcmltaXRpdmUiKSxpKCl9LCI4MWIyIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImNmZTkiKSxvPW4oImQwNjYiKSxhPW4oImUzMzAiKSxzPW4oImM2NWIiKSxjPW4oImQwMzkiKSx1PW4oIjU3N2UiKSxsPW4oImQ2ZDYiKSxmPW4oImI5MTciKS5jMmksZD0vW15cZCsvYS16XS9pLGg9L1tcdFxuXGZcciBdKy9nLHA9L1s9XXsxLDJ9JC8sdj1vKCJhdG9iIiksZz1TdHJpbmcuZnJvbUNoYXJDb2RlLG09YSgiIi5jaGFyQXQpLGI9YSgiIi5yZXBsYWNlKSx5PWEoZC5leGVjKSxfPSEhdiYmIWMoKGZ1bmN0aW9uKCl7cmV0dXJuImhpIiE9PXYoImFHaz0iKX0pKSx3PV8mJmMoKGZ1bmN0aW9uKCl7cmV0dXJuIiIhPT12KCIgIil9KSksUz1fJiYhYygoZnVuY3Rpb24oKXt2KCJhIil9KSkseD1fJiYhYygoZnVuY3Rpb24oKXt2KCl9KSksaz1fJiYxIT09di5sZW5ndGgsQz0hX3x8d3x8U3x8eHx8aztyKHtnbG9iYWw6ITAsYmluZDohMCxlbnVtZXJhYmxlOiEwLGZvcmNlZDpDfSx7YXRvYjpmdW5jdGlvbih0KXtpZihsKGFyZ3VtZW50cy5sZW5ndGgsMSksXyYmIXcmJiFTKXJldHVybiBzKHYsaSx0KTt2YXIgZSxuLHIsYT1iKHUodCksaCwiIiksYz0iIix4PTAsaz0wO2lmKGEubGVuZ3RoJTQ9PT0wJiYoYT1iKGEscCwiIikpLGU9YS5sZW5ndGgsZSU0PT09MXx8eShkLGEpKXRocm93IG5ldyhvKCJET01FeGNlcHRpb24iKSkoIlRoZSBzdHJpbmcgaXMgbm90IGNvcnJlY3RseSBlbmNvZGVkIiwiSW52YWxpZENoYXJhY3RlckVycm9yIik7d2hpbGUoeDxlKW49bShhLHgrKykscj1rJTQ/NjQqcitmW25dOmZbbl0saysrJTQmJihjKz1nKDI1NSZyPj4oLTIqayY2KSkpO3JldHVybiBjfX0pfSwiODFkNSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI3YjBiIiksaT1uKCIyM2NiIiksbz1uKCIwN2ZhIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXIodGhpcyksbj1vKGUpLGE9YXJndW1lbnRzLmxlbmd0aCxzPWkoYT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsbiksYz1hPjI/YXJndW1lbnRzWzJdOnZvaWQgMCx1PXZvaWQgMD09PWM/bjppKGMsbik7d2hpbGUodT5zKWVbcysrXT10O3JldHVybiBlfX0sIjgyNWEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiODYxZCIpLGk9U3RyaW5nLG89VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihyKHQpKXJldHVybiB0O3Rocm93IG5ldyBvKGkodCkrIiBpcyBub3QgYW4gb2JqZWN0Iil9fSwiODJlMyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0yMjIwNDQ2MDQ5MjUwMzEzZS0zMSxpPTEvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQraS1pfX0sIjgyZjgiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZWJiNSIpLGk9bigiNGQ2NCIpLmluY2x1ZGVzLG89ci5hVHlwZWRBcnJheSxhPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDthKCJpbmNsdWRlcyIsKGZ1bmN0aW9uKHQpe3JldHVybiBpKG8odGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSl9LCI4M2FiIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImQwMzkiKTt0LmV4cG9ydHM9IXIoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSlbMV19KSl9LCI4M2I5IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNiMjciKSxpPW4oIjM4NGYiKSxvPXIuU2V0LGE9ci5hZGQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBvO3JldHVybiBpKHQsKGZ1bmN0aW9uKHQpe2EoZSx0KX0pKSxlfX0sODQwNzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImNmZTkiKSxvPW4oIjcxOTIiKSxhPW4oIjZiMzciKSxzPWkuVWludDhBcnJheSxjPSFzfHwhcy5wcm90b3R5cGUuc2V0RnJvbUJhc2U2NHx8IWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHMoWzI1NSwyNTUsMjU1LDI1NSwyNTVdKTt0cnl7cmV0dXJuIHZvaWQgdC5zZXRGcm9tQmFzZTY0KCIiLG51bGwpfWNhdGNoKGUpe310cnl7cmV0dXJuIHZvaWQgdC5zZXRGcm9tQmFzZTY0KCJhIil9Y2F0Y2goZSl7fXRyeXt0LnNldEZyb21CYXNlNjQoIk1qWXlaZz09PSIpfWNhdGNoKGUpe3JldHVybiA1MD09PXRbMF0mJjU0PT09dFsxXSYmNTA9PT10WzJdJiYyNTU9PT10WzNdJiYyNTU9PT10WzRdfX0oKTtzJiZyKHt0YXJnZXQ6IlVpbnQ4QXJyYXkiLHByb3RvOiEwLGZvcmNlZDpjfSx7c2V0RnJvbUJhc2U2NDpmdW5jdGlvbih0KXthKHRoaXMpO3ZhciBlPW8odCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCx0aGlzLHRoaXMubGVuZ3RoKTtyZXR1cm57cmVhZDplLnJlYWQsd3JpdHRlbjplLndyaXR0ZW59fX0pfSw4NDE4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiODNhYiIpLGk9bigiOWJmMiIpLG89bigiNWM2YyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7cj9pLmYodCxlLG8oMCxuKSk6dFtlXT1ufX0sIjg0MWMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYzY1YiIpLGk9bigiZDc4NCIpLG89bigiODI1YSIpLGE9bigiODYxZCIpLHM9bigiMWQ4MCIpLGM9bigiMTI5ZiIpLHU9bigiNTc3ZSIpLGw9bigiZGM0YSIpLGY9bigiMTRjMyIpO2koInNlYXJjaCIsKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bZnVuY3Rpb24oZSl7dmFyIG49cyh0aGlzKSxpPWEoZSk/bChlLHQpOnZvaWQgMDtyZXR1cm4gaT9yKGksZSxuKTpuZXcgUmVnRXhwKGUpW3RdKHUobikpfSxmdW5jdGlvbih0KXt2YXIgcj1vKHRoaXMpLGk9dSh0KSxhPW4oZSxyLGkpO2lmKGEuZG9uZSlyZXR1cm4gYS52YWx1ZTt2YXIgcz1yLmxhc3RJbmRleDtjKHMsMCl8fChyLmxhc3RJbmRleD0wKTt2YXIgbD1mKHIsaSk7cmV0dXJuIGMoci5sYXN0SW5kZXgscyl8fChyLmxhc3RJbmRleD1zKSxudWxsPT09bD8tMTpsLmluZGV4fV19KSl9LDg1NTg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjZmU5IiksaT1uKCJiNWRiIiksbz1uKCJjNmI2IiksYT1mdW5jdGlvbih0KXtyZXR1cm4gaS5zbGljZSgwLHQubGVuZ3RoKT09PXR9O3QuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBhKCJCdW4vIik/IkJVTiI6YSgiQ2xvdWRmbGFyZS1Xb3JrZXJzIik/IkNMT1VERkxBUkUiOmEoIkRlbm8vIik/IkRFTk8iOmEoIk5vZGUuanMvIik/Ik5PREUiOnIuQnVuJiYic3RyaW5nIj09dHlwZW9mIEJ1bi52ZXJzaW9uPyJCVU4iOnIuRGVubyYmIm9iamVjdCI9PXR5cGVvZiBEZW5vLnZlcnNpb24/IkRFTk8iOiJwcm9jZXNzIj09PW8oci5wcm9jZXNzKT8iTk9ERSI6ci53aW5kb3cmJnIuZG9jdW1lbnQ/IkJST1dTRVIiOiJSRVNUIn0oKX0sIjg2MWQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMTYyNiIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQ/bnVsbCE9PXQ6cih0KX19LCI4OGE3IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNiMmQiKSxpPW4oImUzMzAiKSxvPW4oIjU3N2UiKSxhPW4oImQ2ZDYiKSxzPVVSTFNlYXJjaFBhcmFtcyxjPXMucHJvdG90eXBlLHU9aShjLmFwcGVuZCksbD1pKGNbImRlbGV0ZSJdKSxmPWkoYy5mb3JFYWNoKSxkPWkoW10ucHVzaCksaD1uZXcgcygiYT0xJmE9MiZiPTMiKTtoWyJkZWxldGUiXSgiYSIsMSksaFsiZGVsZXRlIl0oImIiLHZvaWQgMCksaCsiIiE9PSJhPTIiJiZyKGMsImRlbGV0ZSIsKGZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1lPDI/dm9pZCAwOmFyZ3VtZW50c1sxXTtpZihlJiZ2b2lkIDA9PT1uKXJldHVybiBsKHRoaXMsdCk7dmFyIHI9W107Zih0aGlzLChmdW5jdGlvbih0LGUpe2Qocix7a2V5OmUsdmFsdWU6dH0pfSkpLGEoZSwxKTt2YXIgaSxzPW8odCksYz1vKG4pLGg9MCxwPTAsdj0hMSxnPXIubGVuZ3RoO3doaWxlKGg8ZylpPXJbaCsrXSx2fHxpLmtleT09PXM/KHY9ITAsbCh0aGlzLGkua2V5KSk6cCsrO3doaWxlKHA8ZylpPXJbcCsrXSxpLmtleT09PXMmJmkudmFsdWU9PT1jfHx1KHRoaXMsaS5rZXksaS52YWx1ZSl9KSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sODkyNTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImUzMzAiKSxpPW4oIjE2MjYiKSxvPW4oImM2Y2QiKSxhPXIoRnVuY3Rpb24udG9TdHJpbmcpO2koby5pbnNwZWN0U291cmNlKXx8KG8uaW5zcGVjdFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYSh0KX0pLHQuZXhwb3J0cz1vLmluc3BlY3RTb3VyY2V9LCI4YTRmIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxuLGksbyl7dmFyIGE9T2JqZWN0LmRlZmluZVByb3BlcnR5O3RyeXthKHt9LCIiLHt9KX1jYXRjaCh0KXthPTB9ZS5kZWZhdWx0PXI9ZnVuY3Rpb24odCxlLG4saSl7ZnVuY3Rpb24gbyhlLG4pe3IodCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsbix0KX0pKX1lP2E/YSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohaSxjb25maWd1cmFibGU6IWksd3JpdGFibGU6IWl9KTp0W2VdPW46KG8oIm5leHQiLDApLG8oInRocm93IiwxKSxvKCJyZXR1cm4iLDIpKX0scih0LG4saSxvKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXIsbigiN2E4MiIpfSwiOGE1OSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI3NGU4Iik7cigiVWludDgiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0KHRoaXMsZSxuLHIpfX0pLCEwKX0sIjhhOTYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7dGhyb3cgbmV3IHIoIkFyZ3VtZW50IGlzIG5vdCBhIHN0cmluZyIpfX0sIjhhYTUiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNjU0NyIpLmNoYXJBdDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBlKyhuP3IodCxlKS5sZW5ndGg6MSl9fSwiOGFhNyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjZmU5IiksaT1uKCJkMDM5Iiksbz1uKCIxYzdlIiksYT1uKCJlYmI1IikuTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyxzPXIuQXJyYXlCdWZmZXIsYz1yLkludDhBcnJheTt0LmV4cG9ydHM9IWF8fCFpKChmdW5jdGlvbigpe2MoMSl9KSl8fCFpKChmdW5jdGlvbigpe25ldyBjKC0xKX0pKXx8IW8oKGZ1bmN0aW9uKHQpe25ldyBjLG5ldyBjKG51bGwpLG5ldyBjKDEuNSksbmV3IGModCl9KSwhMCl8fGkoKGZ1bmN0aW9uKCl7cmV0dXJuIDEhPT1uZXcgYyhuZXcgcygyKSwxLHZvaWQgMCkubGVuZ3RofSkpfSwiOGIwMCI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCI2OGRmIiksbz1uKCJkYWQyIiksYT0hbygiaXNTdWJzZXRPZiIsKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpO3Ioe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDphfSx7aXNTdWJzZXRPZjppfSl9LCI4YmQ0IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImQwNjYiKSxpPW4oImQ0NGUiKSxvPSJET01FeGNlcHRpb24iO2kocihvKSxvKX0sIjhlMTYiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNzI4MiIpLGk9bigiY2IyNyIpO3QuZXhwb3J0cz1yKGkucHJvdG8sInNpemUiLCJnZXQiKXx8ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2l6ZX19LCI5MDdhIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImViYjUiKSxpPW4oIjA3ZmEiKSxvPW4oIjU5MjYiKSxhPXIuYVR5cGVkQXJyYXkscz1yLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7cygiYXQiLChmdW5jdGlvbih0KXt2YXIgZT1hKHRoaXMpLG49aShlKSxyPW8odCkscz1yPj0wP3I6bityO3JldHVybiBzPDB8fHM+PW4/dm9pZCAwOmVbc119KSl9LCI5MGQ4IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImM2NWIiKSxpPW4oIjFhMmQiKSxvPW4oIjNhOWIiKSxhPW4oIjBmMzMiKSxzPW4oImFkNmQiKSxjPVJlZ0V4cC5wcm90b3R5cGU7dC5leHBvcnRzPWEuY29ycmVjdD9mdW5jdGlvbih0KXtyZXR1cm4gdC5mbGFnc306ZnVuY3Rpb24odCl7cmV0dXJuIGEuY29ycmVjdHx8IW8oYyx0KXx8aSh0LCJmbGFncyIpP3QuZmxhZ3M6cihzLHQpfX0sIjkwZTMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZTMzMCIpLGk9MCxvPU1hdGgucmFuZG9tKCksYT1yKDEuMS50b1N0cmluZyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJTeW1ib2woIisodm9pZCAwPT09dD8iIjp0KSsiKV8iK2EoKytpK28sMzYpfX0sIjkxMGQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiYzY1YiIpLG89bigiNTllZCIpLGE9bigiODI1YSIpLHM9bigiNDZjNCIpLGM9bigiYzVjYyIpLHU9bigiOWJkZCIpLGw9bigiYzQzMCIpLGY9bigiMmE2MiIpLGQ9bigiMmJhYSIpLGg9bigiZjk5ZiIpLHA9IWwmJiFkKCJmaWx0ZXIiLChmdW5jdGlvbigpe30pKSx2PSFsJiYhcCYmaCgiZmlsdGVyIixUeXBlRXJyb3IpLGc9bHx8cHx8dixtPWMoKGZ1bmN0aW9uKCl7dmFyIHQsZSxuLHI9dGhpcy5pdGVyYXRvcixvPXRoaXMucHJlZGljYXRlLHM9dGhpcy5uZXh0O3doaWxlKDEpe2lmKHQ9YShpKHMscikpLGU9dGhpcy5kb25lPSEhdC5kb25lLGUpcmV0dXJuO2lmKG49dC52YWx1ZSx1KHIsbyxbbix0aGlzLmNvdW50ZXIrK10sITApKXJldHVybiBufX0pKTtyKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpnfSx7ZmlsdGVyOmZ1bmN0aW9uKHQpe2EodGhpcyk7dHJ5e28odCl9Y2F0Y2goZSl7Zih0aGlzLCJ0aHJvdyIsZSl9cmV0dXJuIHY/aSh2LHRoaXMsdCk6bmV3IG0ocyh0aGlzKSx7cHJlZGljYXRlOnR9KX19KX0sOTExMjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjgzYWIiKSxpPW4oIjliZjIiKSxvPW4oIjVjNmMiKTt0LmV4cG9ydHM9cj9mdW5jdGlvbih0LGUsbil7cmV0dXJuIGkuZih0LGUsbygxLG4pKX06ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW4sdH19LDkyNjM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjNjViIiksaT1uKCJlMzMwIiksbz1uKCI1NzdlIiksYT1uKCJhZDZkIikscz1uKCI5ZjdmIiksYz1uKCI1NjkyIiksdT1uKCI3YzczIiksbD1uKCI2OWYzIikuZ2V0LGY9bigiZmNlMyIpLGQ9bigiMTA3YyIpLGg9YygibmF0aXZlLXN0cmluZy1yZXBsYWNlIixTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLHA9UmVnRXhwLnByb3RvdHlwZS5leGVjLHY9cCxnPWkoIiIuY2hhckF0KSxtPWkoIiIuaW5kZXhPZiksYj1pKCIiLnJlcGxhY2UpLHk9aSgiIi5zbGljZSksXz1mdW5jdGlvbigpe3ZhciB0PS9hLyxlPS9iKi9nO3JldHVybiByKHAsdCwiYSIpLHIocCxlLCJhIiksMCE9PXQubGFzdEluZGV4fHwwIT09ZS5sYXN0SW5kZXh9KCksdz1zLkJST0tFTl9DQVJFVCxTPXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXSx4PV98fFN8fHd8fGZ8fGQ7eCYmKHY9ZnVuY3Rpb24odCl7dmFyIGUsbixpLHMsYyxmLGQseD10aGlzLGs9bCh4KSxDPW8odCksVD1rLnJhdztpZihUKXJldHVybiBULmxhc3RJbmRleD14Lmxhc3RJbmRleCxlPXIodixULEMpLHgubGFzdEluZGV4PVQubGFzdEluZGV4LGU7dmFyIE89ay5ncm91cHMsQT13JiZ4LnN0aWNreSxFPXIoYSx4KSxqPXguc291cmNlLE09MCxJPUM7aWYoQSYmKEU9YihFLCJ5IiwiIiksLTE9PT1tKEUsImciKSYmKEUrPSJnIiksST15KEMseC5sYXN0SW5kZXgpLHgubGFzdEluZGV4PjAmJigheC5tdWx0aWxpbmV8fHgubXVsdGlsaW5lJiYiXG4iIT09ZyhDLHgubGFzdEluZGV4LTEpKSYmKGo9Iig/OiAiK2orIikiLEk9IiAiK0ksTSsrKSxuPW5ldyBSZWdFeHAoIl4oPzoiK2orIikiLEUpKSxTJiYobj1uZXcgUmVnRXhwKCJeIitqKyIkKD8hXFxzKSIsRSkpLF8mJihpPXgubGFzdEluZGV4KSxzPXIocCxBP246eCxJKSxBP3M/KHMuaW5wdXQ9eShzLmlucHV0LE0pLHNbMF09eShzWzBdLE0pLHMuaW5kZXg9eC5sYXN0SW5kZXgseC5sYXN0SW5kZXgrPXNbMF0ubGVuZ3RoKTp4Lmxhc3RJbmRleD0wOl8mJnMmJih4Lmxhc3RJbmRleD14Lmdsb2JhbD9zLmluZGV4K3NbMF0ubGVuZ3RoOmkpLFMmJnMmJnMubGVuZ3RoPjEmJnIoaCxzWzBdLG4sKGZ1bmN0aW9uKCl7Zm9yKGM9MTtjPGFyZ3VtZW50cy5sZW5ndGgtMjtjKyspdm9pZCAwPT09YXJndW1lbnRzW2NdJiYoc1tjXT12b2lkIDApfSkpLHMmJk8pZm9yKHMuZ3JvdXBzPWY9dShudWxsKSxjPTA7YzxPLmxlbmd0aDtjKyspZD1PW2NdLGZbZFswXV09c1tkWzFdXTtyZXR1cm4gc30pLHQuZXhwb3J0cz12fSwiOTQ0YSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkMDY2IiksaT1uKCJlMDY1Iiksbz1uKCJkNDRlIik7aSgidG9TdHJpbmdUYWciKSxvKHIoIlN5bWJvbCIpLCJTeW1ib2wiKX0sOTQ4NTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oIjIyNjYiKSxvPW4oIjU5ZWQiKSxhPW4oIjgyNWEiKSxzPW4oIjQ2YzQiKSxjPW4oIjJhNjIiKSx1PW4oImY5OWYiKSxsPW4oIjJiYTQiKSxmPW4oImQwMzkiKSxkPVR5cGVFcnJvcixoPWYoKGZ1bmN0aW9uKCl7W10ua2V5cygpLnJlZHVjZSgoZnVuY3Rpb24oKXt9KSx2b2lkIDApfSkpLHA9IWgmJnUoInJlZHVjZSIsZCk7cih7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6aHx8cH0se3JlZHVjZTpmdW5jdGlvbih0KXthKHRoaXMpO3RyeXtvKHQpfWNhdGNoKGYpe2ModGhpcywidGhyb3ciLGYpfXZhciBlPWFyZ3VtZW50cy5sZW5ndGg8MixuPWU/dm9pZCAwOmFyZ3VtZW50c1sxXTtpZihwKXJldHVybiBsKHAsdGhpcyxlP1t0XTpbdCxuXSk7dmFyIHI9cyh0aGlzKSx1PTA7aWYoaShyLChmdW5jdGlvbihyKXtlPyhlPSExLG49cik6bj10KG4scix1KSx1Kyt9KSx7SVNfUkVDT1JEOiEwfSksZSl0aHJvdyBuZXcgZCgiUmVkdWNlIG9mIGVtcHR5IGl0ZXJhdG9yIHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpO3JldHVybiBufX0pfSwiOTRjYSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkMDM5IiksaT1uKCIxNjI2Iiksbz0vI3xcLnByb3RvdHlwZVwuLyxhPWZ1bmN0aW9uKHQsZSl7dmFyIG49Y1tzKHQpXTtyZXR1cm4gbj09PWx8fG4hPT11JiYoaShlKT9yKGUpOiEhZSl9LHM9YS5ub3JtYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KS5yZXBsYWNlKG8sIi4iKS50b0xvd2VyQ2FzZSgpfSxjPWEuZGF0YT17fSx1PWEuTkFUSVZFPSJOIixsPWEuUE9MWUZJTEw9IlAiO3QuZXhwb3J0cz1hfSwiOTUzYiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkYzE5IiksaT1uKCJjYjI3Iiksbz1uKCI4ZTE2IiksYT1uKCI3ZjY1Iikscz1uKCIzODRmIiksYz1uKCI1Mzg4IiksdT1pLlNldCxsPWkuYWRkLGY9aS5oYXM7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXIodGhpcyksbj1hKHQpLGk9bmV3IHU7cmV0dXJuIG8oZSk+bi5zaXplP2Mobi5nZXRJdGVyYXRvcigpLChmdW5jdGlvbih0KXtmKGUsdCkmJmwoaSx0KX0pKTpzKGUsKGZ1bmN0aW9uKHQpe24uaW5jbHVkZXModCkmJmwoaSx0KX0pKSxpfX0sOTg2MTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oIjUzNTIiKX0sIjk4NmEiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZWJiNSIpLGk9bigiYTI1OCIpLmZpbmRMYXN0LG89ci5hVHlwZWRBcnJheSxhPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDthKCJmaW5kTGFzdCIsKGZ1bmN0aW9uKHQpe3JldHVybiBpKG8odGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSl9LDk5NjE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkYzE5IiksaT1uKCJjYjI3Iiksbz1uKCI4M2I5IiksYT1uKCI3ZjY1Iikscz1uKCI1Mzg4IiksYz1pLmFkZCx1PWkuaGFzLGw9aS5yZW1vdmU7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXIodGhpcyksbj1hKHQpLmdldEl0ZXJhdG9yKCksaT1vKGUpO3JldHVybiBzKG4sKGZ1bmN0aW9uKHQpe3UoZSx0KT9sKGksdCk6YyhpLHQpfSkpLGl9fSwiOTlhZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJkMDM5Iiksbz1uKCJlOGI1IiksYT1uKCI4NjFkIikscz1uKCI3YjBiIiksYz1uKCIwN2ZhIiksdT1uKCIzNTExIiksbD1uKCI4NDE4IiksZj1uKCI2NWYwIiksZD1uKCIxZGRlIiksaD1uKCJiNjIyIikscD1uKCIxMjEyIiksdj1oKCJpc0NvbmNhdFNwcmVhZGFibGUiKSxnPXA+PTUxfHwhaSgoZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdFt2XT0hMSx0LmNvbmNhdCgpWzBdIT09dH0pKSxtPWZ1bmN0aW9uKHQpe2lmKCFhKHQpKXJldHVybiExO3ZhciBlPXRbdl07cmV0dXJuIHZvaWQgMCE9PWU/ISFlOm8odCl9LGI9IWd8fCFkKCJjb25jYXQiKTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxhcml0eToxLGZvcmNlZDpifSx7Y29uY2F0OmZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLG8sYT1zKHRoaXMpLGQ9ZihhLDApLGg9MDtmb3IoZT0tMSxyPWFyZ3VtZW50cy5sZW5ndGg7ZTxyO2UrKylpZihvPS0xPT09ZT9hOmFyZ3VtZW50c1tlXSxtKG8pKWZvcihpPWMobyksdShoK2kpLG49MDtuPGk7bisrLGgrKyluIGluIG8mJmwoZCxoLG9bbl0pO2Vsc2UgdShoKzEpLGwoZCxoKyssbyk7cmV0dXJuIGQubGVuZ3RoPWgsZH19KX0sIjk5ZjQiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYjVkYiIpO3QuZXhwb3J0cz0vTVNJRXxUcmlkZW50Ly50ZXN0KHIpfSwiOWEwYyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJiNWRiIik7dC5leHBvcnRzPS9WZXJzaW9uXC8xMCg/OlwuXGQrKXsxLDJ9KD86IFtcdy4vXSspPyg/OiBNb2JpbGVcL1x3Kyk/IFNhZmFyaVwvLy50ZXN0KHIpfSwiOWExZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjNjViIiksaT1uKCI1OWVkIiksbz1uKCI4MjVhIiksYT1uKCIwZDUxIikscz1uKCIzNWExIiksYz1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aDwyP3ModCk6ZTtpZihpKG4pKXJldHVybiBvKHIobix0KSk7dGhyb3cgbmV3IGMoYSh0KSsiIGlzIG5vdCBpdGVyYWJsZSIpfX0sIjlhOGMiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZTMzMCIpLGk9bigiZWJiNSIpLG89bigiMTQ1ZSIpLGE9cihvKSxzPWkuYVR5cGVkQXJyYXksYz1pLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7YygiY29weVdpdGhpbiIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEocyh0aGlzKSx0LGUsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSkpfSwiOWFkYyI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI4NTU4Iik7dC5leHBvcnRzPSJOT0RFIj09PXJ9LCI5YmRkIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjgyNWEiKSxpPW4oIjJhNjIiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sbyl7dHJ5e3JldHVybiBvP2UocihuKVswXSxuWzFdKTplKG4pfWNhdGNoKGEpe2kodCwidGhyb3ciLGEpfX19LCI5YmYyIjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjgzYWIiKSxpPW4oIjBjZmIiKSxvPW4oImFlZDkiKSxhPW4oIjgyNWEiKSxzPW4oImEwNGIiKSxjPVR5cGVFcnJvcix1PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsZj0iZW51bWVyYWJsZSIsZD0iY29uZmlndXJhYmxlIixoPSJ3cml0YWJsZSI7ZS5mPXI/bz9mdW5jdGlvbih0LGUsbil7aWYoYSh0KSxlPXMoZSksYShuKSwiZnVuY3Rpb24iPT09dHlwZW9mIHQmJiJwcm90b3R5cGUiPT09ZSYmInZhbHVlImluIG4mJmggaW4gbiYmIW5baF0pe3ZhciByPWwodCxlKTtyJiZyW2hdJiYodFtlXT1uLnZhbHVlLG49e2NvbmZpZ3VyYWJsZTpkIGluIG4/bltkXTpyW2RdLGVudW1lcmFibGU6ZiBpbiBuP25bZl06cltmXSx3cml0YWJsZTohMX0pfXJldHVybiB1KHQsZSxuKX06dTpmdW5jdGlvbih0LGUsbil7aWYoYSh0KSxlPXMoZSksYShuKSxpKXRyeXtyZXR1cm4gdSh0LGUsbil9Y2F0Y2gocil7fWlmKCJnZXQiaW4gbnx8InNldCJpbiBuKXRocm93IG5ldyBjKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCIpO3JldHVybiJ2YWx1ZSJpbiBuJiYodFtlXT1uLnZhbHVlKSx0fX0sIjlmN2YiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZDAzOSIpLGk9bigiY2ZlOSIpLG89aS5SZWdFeHAsYT1yKChmdW5jdGlvbigpe3ZhciB0PW8oImEiLCJ5Iik7cmV0dXJuIHQubGFzdEluZGV4PTIsbnVsbCE9PXQuZXhlYygiYWJjZCIpfSkpLHM9YXx8cigoZnVuY3Rpb24oKXtyZXR1cm4hbygiYSIsInkiKS5zdGlja3l9KSksYz1hfHxyKChmdW5jdGlvbigpe3ZhciB0PW8oIl5yIiwiZ3kiKTtyZXR1cm4gdC5sYXN0SW5kZXg9MixudWxsIT09dC5leGVjKCJzdHIiKX0pKTt0LmV4cG9ydHM9e0JST0tFTl9DQVJFVDpjLE1JU1NFRF9TVElDS1k6cyxVTlNVUFBPUlRFRF9ZOmF9fSxhMDRiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYzA0ZSIpLGk9bigiZDliNSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1yKHQsInN0cmluZyIpO3JldHVybiBpKGUpP2U6ZSsiIn19LGEwNzg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIwMzY2IiksaT1uKCJjNjViIiksbz1uKCI1MDg3IiksYT1uKCI3YjBiIikscz1uKCIwN2ZhIiksYz1uKCI5YTFmIiksdT1uKCIzNWExIiksbD1uKCJlOTVhIiksZj1uKCJiY2JmIiksZD1uKCJlYmI1IikuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcixoPW4oImY0OTUiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUsbixwLHYsZyxtLGIseSxfPW8odGhpcyksdz1hKHQpLFM9YXJndW1lbnRzLmxlbmd0aCx4PVM+MT9hcmd1bWVudHNbMV06dm9pZCAwLGs9dm9pZCAwIT09eCxDPXUodyk7aWYoQyYmIWwoQykpe2I9Yyh3LEMpLHk9Yi5uZXh0LHc9W107d2hpbGUoIShtPWkoeSxiKSkuZG9uZSl3LnB1c2gobS52YWx1ZSl9Zm9yKGsmJlM+MiYmKHg9cih4LGFyZ3VtZW50c1syXSkpLG49cyh3KSxwPW5ldyhkKF8pKShuKSx2PWYocCksZT0wO24+ZTtlKyspZz1rP3god1tlXSxlKTp3W2VdLHBbZV09dj9oKGcpOitnO3JldHVybiBwfX0sYTI1ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjAzNjYiKSxpPW4oIjQ0YWQiKSxvPW4oIjdiMGIiKSxhPW4oIjA3ZmEiKSxzPWZ1bmN0aW9uKHQpe3ZhciBlPTE9PT10O3JldHVybiBmdW5jdGlvbihuLHMsYyl7dmFyIHUsbCxmPW8obiksZD1pKGYpLGg9YShkKSxwPXIocyxjKTt3aGlsZShoLS0gPjApaWYodT1kW2hdLGw9cCh1LGgsZiksbClzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB1O2Nhc2UgMTpyZXR1cm4gaH1yZXR1cm4gZT8tMTp2b2lkIDB9fTt0LmV4cG9ydHM9e2ZpbmRMYXN0OnMoMCksZmluZExhc3RJbmRleDpzKDEpfX0sYTM4ZTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oIjdhODIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PWE7dmFyIHI9byhuKCI1M2NhIikpLGk9byhuKCJhZjUwIikpO2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fWZ1bmN0aW9uIGEodCl7dmFyIGU9KDAsaS5kZWZhdWx0KSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09KDAsci5kZWZhdWx0KShlKT9lOmUrIiJ9fSxhNDM0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiN2IwYiIpLG89bigiMjNjYiIpLGE9bigiNTkyNiIpLHM9bigiMDdmYSIpLGM9bigiM2EzNCIpLHU9bigiMzUxMSIpLGw9bigiNjVmMCIpLGY9bigiODQxOCIpLGQ9bigiMDgzYSIpLGg9bigiMWRkZSIpLHA9aCgic3BsaWNlIiksdj1NYXRoLm1heCxnPU1hdGgubWluO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohcH0se3NwbGljZTpmdW5jdGlvbih0LGUpe3ZhciBuLHIsaCxwLG0sYix5PWkodGhpcyksXz1zKHkpLHc9byh0LF8pLFM9YXJndW1lbnRzLmxlbmd0aDtmb3IoMD09PVM/bj1yPTA6MT09PVM/KG49MCxyPV8tdyk6KG49Uy0yLHI9Zyh2KGEoZSksMCksXy13KSksdShfK24tciksaD1sKHkscikscD0wO3A8cjtwKyspbT13K3AsbSBpbiB5JiZmKGgscCx5W21dKTtpZihoLmxlbmd0aD1yLG48cil7Zm9yKHA9dztwPF8tcjtwKyspbT1wK3IsYj1wK24sbSBpbiB5P3lbYl09eVttXTpkKHksYik7Zm9yKHA9XztwPl8tcituO3AtLSlkKHkscC0xKX1lbHNlIGlmKG4+cilmb3IocD1fLXI7cD53O3AtLSltPXArci0xLGI9cCtuLTEsbSBpbiB5P3lbYl09eVttXTpkKHksYik7Zm9yKHA9MDtwPG47cCsrKXlbcCt3XT1hcmd1bWVudHNbcCsyXTtyZXR1cm4gYyh5LF8tcituKSxofX0pfSxhNGQzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bigiZDlmNSIpLG4oImI0ZjgiKSxuKCJjNTEzIiksbigiZTljNCIpLG4oIjVhNDciKX0sYTRlNzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oIjM5NWUiKSxvPW4oImRhZDIiKSxhPSFvKCJpc1N1cGVyc2V0T2YiLChmdW5jdGlvbih0KXtyZXR1cm4hdH0pKTtyKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6YX0se2lzU3VwZXJzZXRPZjppfSl9LGE1Zjc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkYzE5IiksaT1uKCJjYjI3Iiksbz1uKCI4M2I5IiksYT1uKCI4ZTE2Iikscz1uKCI3ZjY1IiksYz1uKCIzODRmIiksdT1uKCI1Mzg4IiksbD1pLmhhcyxmPWkucmVtb3ZlO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1yKHRoaXMpLG49cyh0KSxpPW8oZSk7cmV0dXJuIGEoZSk8PW4uc2l6ZT9jKGUsKGZ1bmN0aW9uKHQpe24uaW5jbHVkZXModCkmJmYoaSx0KX0pKTp1KG4uZ2V0SXRlcmF0b3IoKSwoZnVuY3Rpb24odCl7bChpLHQpJiZmKGksdCl9KSksaX19LGE2MzA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCI0ZGY0Iiksbz1uKCIxYzdlIiksYT0hbygoZnVuY3Rpb24odCl7QXJyYXkuZnJvbSh0KX0pKTtyKHt0YXJnZXQ6IkFycmF5IixzdGF0OiEwLGZvcmNlZDphfSx7ZnJvbTppfSl9LGE2NDA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkMDM5Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49W11bdF07cmV0dXJuISFuJiZyKChmdW5jdGlvbigpe24uY2FsbChudWxsLGV8fGZ1bmN0aW9uKCl7cmV0dXJuIDF9LDEpfSkpfX0sYTczMjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImM2NWIiKSxvPW4oIjIyNjYiKSxhPW4oIjU5ZWQiKSxzPW4oIjgyNWEiKSxjPW4oIjQ2YzQiKSx1PW4oIjJhNjIiKSxsPW4oImY5OWYiKSxmPWwoInNvbWUiLFR5cGVFcnJvcik7cih7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6Zn0se3NvbWU6ZnVuY3Rpb24odCl7cyh0aGlzKTt0cnl7YSh0KX1jYXRjaChyKXt1KHRoaXMsInRocm93IixyKX1pZihmKXJldHVybiBpKGYsdGhpcyx0KTt2YXIgZT1jKHRoaXMpLG49MDtyZXR1cm4gbyhlLChmdW5jdGlvbihlLHIpe2lmKHQoZSxuKyspKXJldHVybiByKCl9KSx7SVNfUkVDT1JEOiEwLElOVEVSUlVQVEVEOiEwfSkuc3RvcHBlZH19KX0sYTc5ZDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImM0MzAiKSxvPW4oImQyNTYiKSxhPW4oImQwMzkiKSxzPW4oImQwNjYiKSxjPW4oIjE2MjYiKSx1PW4oIjQ4NDAiKSxsPW4oImNkZjkiKSxmPW4oImNiMmQiKSxkPW8mJm8ucHJvdG90eXBlLGg9ISFvJiZhKChmdW5jdGlvbigpe2RbImZpbmFsbHkiXS5jYWxsKHt0aGVuOmZ1bmN0aW9uKCl7fX0sKGZ1bmN0aW9uKCl7fSkpfSkpO2lmKHIoe3RhcmdldDoiUHJvbWlzZSIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6aH0se2ZpbmFsbHk6ZnVuY3Rpb24odCl7dmFyIGU9dSh0aGlzLHMoIlByb21pc2UiKSksbj1jKHQpO3JldHVybiB0aGlzLnRoZW4obj9mdW5jdGlvbihuKXtyZXR1cm4gbChlLHQoKSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKX06dCxuP2Z1bmN0aW9uKG4pe3JldHVybiBsKGUsdCgpKS50aGVuKChmdW5jdGlvbigpe3Rocm93IG59KSl9OnQpfX0pLCFpJiZjKG8pKXt2YXIgcD1zKCJQcm9taXNlIikucHJvdG90eXBlWyJmaW5hbGx5Il07ZFsiZmluYWxseSJdIT09cCYmZihkLCJmaW5hbGx5IixwLHt1bnNhZmU6ITB9KX19LGE3YTc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSl7MH1mdW5jdGlvbiBpKHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuaW5kZXhPZigiRXJyb3IiKT4tMX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dO3JldHVybiB0fW4ucihlKTt2YXIgYT17bmFtZToiUm91dGVyVmlldyIsZnVuY3Rpb25hbDohMCxwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiZGVmYXVsdCJ9fSxyZW5kZXI6ZnVuY3Rpb24odCxlKXt2YXIgbj1lLnByb3BzLHI9ZS5jaGlsZHJlbixpPWUucGFyZW50LGE9ZS5kYXRhO2Eucm91dGVyVmlldz0hMDt2YXIgYz1pLiRjcmVhdGVFbGVtZW50LHU9bi5uYW1lLGw9aS4kcm91dGUsZj1pLl9yb3V0ZXJWaWV3Q2FjaGV8fChpLl9yb3V0ZXJWaWV3Q2FjaGU9e30pLGQ9MCxoPSExO3doaWxlKGkmJmkuX3JvdXRlclJvb3QhPT1pKWkuJHZub2RlJiZpLiR2bm9kZS5kYXRhLnJvdXRlclZpZXcmJmQrKyxpLl9pbmFjdGl2ZSYmKGg9ITApLGk9aS4kcGFyZW50O2lmKGEucm91dGVyVmlld0RlcHRoPWQsaClyZXR1cm4gYyhmW3VdLGEscik7dmFyIHA9bC5tYXRjaGVkW2RdO2lmKCFwKXJldHVybiBmW3VdPW51bGwsYygpO3ZhciB2PWZbdV09cC5jb21wb25lbnRzW3VdO2EucmVnaXN0ZXJSb3V0ZUluc3RhbmNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49cC5pbnN0YW5jZXNbdV07KGUmJm4hPT10fHwhZSYmbj09PXQpJiYocC5pbnN0YW5jZXNbdV09ZSl9LChhLmhvb2t8fChhLmhvb2s9e30pKS5wcmVwYXRjaD1mdW5jdGlvbih0LGUpe3AuaW5zdGFuY2VzW3VdPWUuY29tcG9uZW50SW5zdGFuY2V9O3ZhciBnPWEucHJvcHM9cyhsLHAucHJvcHMmJnAucHJvcHNbdV0pO2lmKGcpe2c9YS5wcm9wcz1vKHt9LGcpO3ZhciBtPWEuYXR0cnM9YS5hdHRyc3x8e307Zm9yKHZhciBiIGluIGcpdi5wcm9wcyYmYiBpbiB2LnByb3BzfHwobVtiXT1nW2JdLGRlbGV0ZSBnW2JdKX1yZXR1cm4gYyh2LGEscil9fTtmdW5jdGlvbiBzKHQsZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlInVuZGVmaW5lZCI6cmV0dXJuO2Nhc2Uib2JqZWN0IjpyZXR1cm4gZTtjYXNlImZ1bmN0aW9uIjpyZXR1cm4gZSh0KTtjYXNlImJvb2xlYW4iOnJldHVybiBlP3QucGFyYW1zOnZvaWQgMDtkZWZhdWx0OjB9fXZhciBjPS9bIScoKSpdL2csdT1mdW5jdGlvbih0KXtyZXR1cm4iJSIrdC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KX0sbD0vJTJDL2csZj1mdW5jdGlvbih0KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHQpLnJlcGxhY2UoYyx1KS5yZXBsYWNlKGwsIiwiKX0sZD1kZWNvZGVVUklDb21wb25lbnQ7ZnVuY3Rpb24gaCh0LGUsbil7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciByLGk9bnx8cDt0cnl7cj1pKHR8fCIiKX1jYXRjaChhKXtyPXt9fWZvcih2YXIgbyBpbiBlKXJbb109ZVtvXTtyZXR1cm4gcn1mdW5jdGlvbiBwKHQpe3ZhciBlPXt9O3JldHVybiB0PXQudHJpbSgpLnJlcGxhY2UoL14oXD98I3wmKS8sIiIpLHQ/KHQuc3BsaXQoIiYiKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj10LnJlcGxhY2UoL1wrL2csIiAiKS5zcGxpdCgiPSIpLHI9ZChuLnNoaWZ0KCkpLGk9bi5sZW5ndGg+MD9kKG4uam9pbigiPSIpKTpudWxsO3ZvaWQgMD09PWVbcl0/ZVtyXT1pOkFycmF5LmlzQXJyYXkoZVtyXSk/ZVtyXS5wdXNoKGkpOmVbcl09W2Vbcl0saV19KSksZSk6ZX1mdW5jdGlvbiB2KHQpe3ZhciBlPXQ/T2JqZWN0LmtleXModCkubWFwKChmdW5jdGlvbihlKXt2YXIgbj10W2VdO2lmKHZvaWQgMD09PW4pcmV0dXJuIiI7aWYobnVsbD09PW4pcmV0dXJuIGYoZSk7aWYoQXJyYXkuaXNBcnJheShuKSl7dmFyIHI9W107cmV0dXJuIG4uZm9yRWFjaCgoZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmKG51bGw9PT10P3IucHVzaChmKGUpKTpyLnB1c2goZihlKSsiPSIrZih0KSkpfSkpLHIuam9pbigiJiIpfXJldHVybiBmKGUpKyI9IitmKG4pfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RoPjB9KSkuam9pbigiJiIpOm51bGw7cmV0dXJuIGU/Ij8iK2U6IiJ9dmFyIGc9L1wvPyQvO2Z1bmN0aW9uIG0odCxlLG4scil7dmFyIGk9ciYmci5vcHRpb25zLnN0cmluZ2lmeVF1ZXJ5LG89ZS5xdWVyeXx8e307dHJ5e289YihvKX1jYXRjaChzKXt9dmFyIGE9e25hbWU6ZS5uYW1lfHx0JiZ0Lm5hbWUsbWV0YTp0JiZ0Lm1ldGF8fHt9LHBhdGg6ZS5wYXRofHwiLyIsaGFzaDplLmhhc2h8fCIiLHR5cGU6ZS50eXBlLHF1ZXJ5Om8scGFyYW1zOmUucGFyYW1zfHx7fSxmdWxsUGF0aDp3KGUsaSksbWF0Y2hlZDp0P18odCk6W119O3JldHVybiBuJiYoYS5yZWRpcmVjdGVkRnJvbT13KG4saSkpLE9iamVjdC5mcmVlemUoYSl9ZnVuY3Rpb24gYih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0Lm1hcChiKTtpZih0JiYib2JqZWN0Ij09PXR5cGVvZiB0KXt2YXIgZT17fTtmb3IodmFyIG4gaW4gdCllW25dPWIodFtuXSk7cmV0dXJuIGV9cmV0dXJuIHR9dmFyIHk9bShudWxsLHtwYXRoOiIvIn0pO2Z1bmN0aW9uIF8odCl7dmFyIGU9W107d2hpbGUodCllLnVuc2hpZnQodCksdD10LnBhcmVudDtyZXR1cm4gZX1mdW5jdGlvbiB3KHQsZSl7dmFyIG49dC5wYXRoLHI9dC5xdWVyeTt2b2lkIDA9PT1yJiYocj17fSk7dmFyIGk9dC5oYXNoO3ZvaWQgMD09PWkmJihpPSIiKTt2YXIgbz1lfHx2O3JldHVybihufHwiLyIpK28ocikraX1mdW5jdGlvbiBTKHQsZSl7cmV0dXJuIGU9PT15P3Q9PT1lOiEhZSYmKHQucGF0aCYmZS5wYXRoP3QucGF0aC5yZXBsYWNlKGcsIiIpPT09ZS5wYXRoLnJlcGxhY2UoZywiIikmJnQuaGFzaD09PWUuaGFzaCYmeCh0LnF1ZXJ5LGUucXVlcnkpOiEoIXQubmFtZXx8IWUubmFtZSkmJih0Lm5hbWU9PT1lLm5hbWUmJnQuaGFzaD09PWUuaGFzaCYmeCh0LnF1ZXJ5LGUucXVlcnkpJiZ4KHQucGFyYW1zLGUucGFyYW1zKSkpfWZ1bmN0aW9uIHgodCxlKXtpZih2b2lkIDA9PT10JiYodD17fSksdm9pZCAwPT09ZSYmKGU9e30pLCF0fHwhZSlyZXR1cm4gdD09PWU7dmFyIG49T2JqZWN0LmtleXModCkscj1PYmplY3Qua2V5cyhlKTtyZXR1cm4gbi5sZW5ndGg9PT1yLmxlbmd0aCYmbi5ldmVyeSgoZnVuY3Rpb24obil7dmFyIHI9dFtuXSxpPWVbbl07cmV0dXJuIm9iamVjdCI9PT10eXBlb2YgciYmIm9iamVjdCI9PT10eXBlb2YgaT94KHIsaSk6U3RyaW5nKHIpPT09U3RyaW5nKGkpfSkpfWZ1bmN0aW9uIGsodCxlKXtyZXR1cm4gMD09PXQucGF0aC5yZXBsYWNlKGcsIi8iKS5pbmRleE9mKGUucGF0aC5yZXBsYWNlKGcsIi8iKSkmJighZS5oYXNofHx0Lmhhc2g9PT1lLmhhc2gpJiZDKHQucXVlcnksZS5xdWVyeSl9ZnVuY3Rpb24gQyh0LGUpe2Zvcih2YXIgbiBpbiBlKWlmKCEobiBpbiB0KSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgVCxPPVtTdHJpbmcsT2JqZWN0XSxBPVtTdHJpbmcsQXJyYXldLEU9e25hbWU6IlJvdXRlckxpbmsiLHByb3BzOnt0bzp7dHlwZTpPLHJlcXVpcmVkOiEwfSx0YWc6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6ImEifSxleGFjdDpCb29sZWFuLGFwcGVuZDpCb29sZWFuLHJlcGxhY2U6Qm9vbGVhbixhY3RpdmVDbGFzczpTdHJpbmcsZXhhY3RBY3RpdmVDbGFzczpTdHJpbmcsZXZlbnQ6e3R5cGU6QSxkZWZhdWx0OiJjbGljayJ9fSxyZW5kZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuJHJvdXRlcixyPXRoaXMuJHJvdXRlLGk9bi5yZXNvbHZlKHRoaXMudG8scix0aGlzLmFwcGVuZCksYT1pLmxvY2F0aW9uLHM9aS5yb3V0ZSxjPWkuaHJlZix1PXt9LGw9bi5vcHRpb25zLmxpbmtBY3RpdmVDbGFzcyxmPW4ub3B0aW9ucy5saW5rRXhhY3RBY3RpdmVDbGFzcyxkPW51bGw9PWw/InJvdXRlci1saW5rLWFjdGl2ZSI6bCxoPW51bGw9PWY/InJvdXRlci1saW5rLWV4YWN0LWFjdGl2ZSI6ZixwPW51bGw9PXRoaXMuYWN0aXZlQ2xhc3M/ZDp0aGlzLmFjdGl2ZUNsYXNzLHY9bnVsbD09dGhpcy5leGFjdEFjdGl2ZUNsYXNzP2g6dGhpcy5leGFjdEFjdGl2ZUNsYXNzLGc9YS5wYXRoP20obnVsbCxhLG51bGwsbik6czt1W3ZdPVMocixnKSx1W3BdPXRoaXMuZXhhY3Q/dVt2XTprKHIsZyk7dmFyIGI9ZnVuY3Rpb24odCl7aih0KSYmKGUucmVwbGFjZT9uLnJlcGxhY2UoYSk6bi5wdXNoKGEpKX0seT17Y2xpY2s6an07QXJyYXkuaXNBcnJheSh0aGlzLmV2ZW50KT90aGlzLmV2ZW50LmZvckVhY2goKGZ1bmN0aW9uKHQpe3lbdF09Yn0pKTp5W3RoaXMuZXZlbnRdPWI7dmFyIF89e2NsYXNzOnV9O2lmKCJhIj09PXRoaXMudGFnKV8ub249eSxfLmF0dHJzPXtocmVmOmN9O2Vsc2V7dmFyIHc9TSh0aGlzLiRzbG90cy5kZWZhdWx0KTtpZih3KXt3LmlzU3RhdGljPSExO3ZhciB4PXcuZGF0YT1vKHt9LHcuZGF0YSk7eC5vbj15O3ZhciBDPXcuZGF0YS5hdHRycz1vKHt9LHcuZGF0YS5hdHRycyk7Qy5ocmVmPWN9ZWxzZSBfLm9uPXl9cmV0dXJuIHQodGhpcy50YWcsXyx0aGlzLiRzbG90cy5kZWZhdWx0KX19O2Z1bmN0aW9uIGoodCl7aWYoISh0Lm1ldGFLZXl8fHQuYWx0S2V5fHx0LmN0cmxLZXl8fHQuc2hpZnRLZXkpJiYhdC5kZWZhdWx0UHJldmVudGVkJiYodm9pZCAwPT09dC5idXR0b258fDA9PT10LmJ1dHRvbikpe2lmKHQuY3VycmVudFRhcmdldCYmdC5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSl7dmFyIGU9dC5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSgidGFyZ2V0Iik7aWYoL1xiX2JsYW5rXGIvaS50ZXN0KGUpKXJldHVybn1yZXR1cm4gdC5wcmV2ZW50RGVmYXVsdCYmdC5wcmV2ZW50RGVmYXVsdCgpLCEwfX1mdW5jdGlvbiBNKHQpe2lmKHQpZm9yKHZhciBlLG49MDtuPHQubGVuZ3RoO24rKyl7aWYoZT10W25dLCJhIj09PWUudGFnKXJldHVybiBlO2lmKGUuY2hpbGRyZW4mJihlPU0oZS5jaGlsZHJlbikpKXJldHVybiBlfX1mdW5jdGlvbiBJKHQpe2lmKCFJLmluc3RhbGxlZHx8VCE9PXQpe0kuaW5zdGFsbGVkPSEwLFQ9dDt2YXIgZT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dH0sbj1mdW5jdGlvbih0LG4pe3ZhciByPXQuJG9wdGlvbnMuX3BhcmVudFZub2RlO2UocikmJmUocj1yLmRhdGEpJiZlKHI9ci5yZWdpc3RlclJvdXRlSW5zdGFuY2UpJiZyKHQsbil9O3QubWl4aW4oe2JlZm9yZUNyZWF0ZTpmdW5jdGlvbigpe2UodGhpcy4kb3B0aW9ucy5yb3V0ZXIpPyh0aGlzLl9yb3V0ZXJSb290PXRoaXMsdGhpcy5fcm91dGVyPXRoaXMuJG9wdGlvbnMucm91dGVyLHRoaXMuX3JvdXRlci5pbml0KHRoaXMpLHQudXRpbC5kZWZpbmVSZWFjdGl2ZSh0aGlzLCJfcm91dGUiLHRoaXMuX3JvdXRlci5oaXN0b3J5LmN1cnJlbnQpKTp0aGlzLl9yb3V0ZXJSb290PXRoaXMuJHBhcmVudCYmdGhpcy4kcGFyZW50Ll9yb3V0ZXJSb290fHx0aGlzLG4odGhpcyx0aGlzKX0sZGVzdHJveWVkOmZ1bmN0aW9uKCl7bih0aGlzKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIiRyb3V0ZXIiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm91dGVyUm9vdC5fcm91dGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiJHJvdXRlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JvdXRlclJvb3QuX3JvdXRlfX0pLHQuY29tcG9uZW50KCJSb3V0ZXJWaWV3IixhKSx0LmNvbXBvbmVudCgiUm91dGVyTGluayIsRSk7dmFyIHI9dC5jb25maWcub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO3IuYmVmb3JlUm91dGVFbnRlcj1yLmJlZm9yZVJvdXRlTGVhdmU9ci5iZWZvcmVSb3V0ZVVwZGF0ZT1yLmNyZWF0ZWR9fXZhciBQPSJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdztmdW5jdGlvbiAkKHQsZSxuKXt2YXIgcj10LmNoYXJBdCgwKTtpZigiLyI9PT1yKXJldHVybiB0O2lmKCI/Ij09PXJ8fCIjIj09PXIpcmV0dXJuIGUrdDt2YXIgaT1lLnNwbGl0KCIvIik7biYmaVtpLmxlbmd0aC0xXXx8aS5wb3AoKTtmb3IodmFyIG89dC5yZXBsYWNlKC9eXC8vLCIiKS5zcGxpdCgiLyIpLGE9MDthPG8ubGVuZ3RoO2ErKyl7dmFyIHM9b1thXTsiLi4iPT09cz9pLnBvcCgpOiIuIiE9PXMmJmkucHVzaChzKX1yZXR1cm4iIiE9PWlbMF0mJmkudW5zaGlmdCgiIiksaS5qb2luKCIvIil9ZnVuY3Rpb24gTCh0KXt2YXIgZT0iIixuPSIiLHI9dC5pbmRleE9mKCIjIik7cj49MCYmKGU9dC5zbGljZShyKSx0PXQuc2xpY2UoMCxyKSk7dmFyIGk9dC5pbmRleE9mKCI/Iik7cmV0dXJuIGk+PTAmJihuPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSkse3BhdGg6dCxxdWVyeTpuLGhhc2g6ZX19ZnVuY3Rpb24gUih0KXtyZXR1cm4gdC5yZXBsYWNlKC9cL1wvL2csIi8iKX12YXIgTj1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9LEQ9cnQsQj1VLEY9cSx6PVgsVz1udCxIPW5ldyBSZWdFeHAoWyIoXFxcXC4pIiwiKFtcXC8uXSk/KD86KD86XFw6KFxcdyspKD86XFwoKCg/OlxcXFwufFteXFxcXCgpXSkrKVxcKSk/fFxcKCgoPzpcXFxcLnxbXlxcXFwoKV0pKylcXCkpKFsrKj9dKT98KFxcKikpIl0uam9pbigifCIpLCJnIik7ZnVuY3Rpb24gVSh0LGUpe3ZhciBuLHI9W10saT0wLG89MCxhPSIiLHM9ZSYmZS5kZWxpbWl0ZXJ8fCIvIjt3aGlsZShudWxsIT0obj1ILmV4ZWModCkpKXt2YXIgYz1uWzBdLHU9blsxXSxsPW4uaW5kZXg7aWYoYSs9dC5zbGljZShvLGwpLG89bCtjLmxlbmd0aCx1KWErPXVbMV07ZWxzZXt2YXIgZj10W29dLGQ9blsyXSxoPW5bM10scD1uWzRdLHY9bls1XSxnPW5bNl0sbT1uWzddO2EmJihyLnB1c2goYSksYT0iIik7dmFyIGI9bnVsbCE9ZCYmbnVsbCE9ZiYmZiE9PWQseT0iKyI9PT1nfHwiKiI9PT1nLF89Ij8iPT09Z3x8IioiPT09Zyx3PW5bMl18fHMsUz1wfHx2O3IucHVzaCh7bmFtZTpofHxpKysscHJlZml4OmR8fCIiLGRlbGltaXRlcjp3LG9wdGlvbmFsOl8scmVwZWF0OnkscGFydGlhbDpiLGFzdGVyaXNrOiEhbSxwYXR0ZXJuOlM/UShTKTptPyIuKiI6IlteIitHKHcpKyJdKz8ifSl9fXJldHVybiBvPHQubGVuZ3RoJiYoYSs9dC5zdWJzdHIobykpLGEmJnIucHVzaChhKSxyfWZ1bmN0aW9uIHEodCxlKXtyZXR1cm4gWChVKHQsZSkpfWZ1bmN0aW9uIFYodCl7cmV0dXJuIGVuY29kZVVSSSh0KS5yZXBsYWNlKC9bXC8/I10vZywoZnVuY3Rpb24odCl7cmV0dXJuIiUiK3QuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0pKX1mdW5jdGlvbiBZKHQpe3JldHVybiBlbmNvZGVVUkkodCkucmVwbGFjZSgvWz8jXS9nLChmdW5jdGlvbih0KXtyZXR1cm4iJSIrdC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSkpfWZ1bmN0aW9uIFgodCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0Lmxlbmd0aCksbj0wO248dC5sZW5ndGg7bisrKSJvYmplY3QiPT09dHlwZW9mIHRbbl0mJihlW25dPW5ldyBSZWdFeHAoIl4oPzoiK3Rbbl0ucGF0dGVybisiKSQiKSk7cmV0dXJuIGZ1bmN0aW9uKG4scil7Zm9yKHZhciBpPSIiLG89bnx8e30sYT1yfHx7fSxzPWEucHJldHR5P1Y6ZW5jb2RlVVJJQ29tcG9uZW50LGM9MDtjPHQubGVuZ3RoO2MrKyl7dmFyIHU9dFtjXTtpZigic3RyaW5nIiE9PXR5cGVvZiB1KXt2YXIgbCxmPW9bdS5uYW1lXTtpZihudWxsPT1mKXtpZih1Lm9wdGlvbmFsKXt1LnBhcnRpYWwmJihpKz11LnByZWZpeCk7Y29udGludWV9dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgIicrdS5uYW1lKyciIHRvIGJlIGRlZmluZWQnKX1pZihOKGYpKXtpZighdS5yZXBlYXQpdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgIicrdS5uYW1lKyciIHRvIG5vdCByZXBlYXQsIGJ1dCByZWNlaXZlZCBgJytKU09OLnN0cmluZ2lmeShmKSsiYCIpO2lmKDA9PT1mLmxlbmd0aCl7aWYodS5vcHRpb25hbCljb250aW51ZTt0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCAiJyt1Lm5hbWUrJyIgdG8gbm90IGJlIGVtcHR5Jyl9Zm9yKHZhciBkPTA7ZDxmLmxlbmd0aDtkKyspe2lmKGw9cyhmW2RdKSwhZVtjXS50ZXN0KGwpKXRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGFsbCAiJyt1Lm5hbWUrJyIgdG8gbWF0Y2ggIicrdS5wYXR0ZXJuKyciLCBidXQgcmVjZWl2ZWQgYCcrSlNPTi5zdHJpbmdpZnkobCkrImAiKTtpKz0oMD09PWQ/dS5wcmVmaXg6dS5kZWxpbWl0ZXIpK2x9fWVsc2V7aWYobD11LmFzdGVyaXNrP1koZik6cyhmKSwhZVtjXS50ZXN0KGwpKXRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkICInK3UubmFtZSsnIiB0byBtYXRjaCAiJyt1LnBhdHRlcm4rJyIsIGJ1dCByZWNlaXZlZCAiJytsKyciJyk7aSs9dS5wcmVmaXgrbH19ZWxzZSBpKz11fXJldHVybiBpfX1mdW5jdGlvbiBHKHQpe3JldHVybiB0LnJlcGxhY2UoLyhbLisqPz1eIToke30oKVtcXXxcL1xcXSkvZywiXFwkMSIpfWZ1bmN0aW9uIFEodCl7cmV0dXJuIHQucmVwbGFjZSgvKFs9ITokXC8oKV0pL2csIlxcJDEiKX1mdW5jdGlvbiBKKHQsZSl7cmV0dXJuIHQua2V5cz1lLHR9ZnVuY3Rpb24gSyh0KXtyZXR1cm4gdC5zZW5zaXRpdmU/IiI6ImkifWZ1bmN0aW9uIFoodCxlKXt2YXIgbj10LnNvdXJjZS5tYXRjaCgvXCgoPyFcPykvZyk7aWYobilmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyllLnB1c2goe25hbWU6cixwcmVmaXg6bnVsbCxkZWxpbWl0ZXI6bnVsbCxvcHRpb25hbDohMSxyZXBlYXQ6ITEscGFydGlhbDohMSxhc3RlcmlzazohMSxwYXR0ZXJuOm51bGx9KTtyZXR1cm4gSih0LGUpfWZ1bmN0aW9uIHR0KHQsZSxuKXtmb3IodmFyIHI9W10saT0wO2k8dC5sZW5ndGg7aSsrKXIucHVzaChydCh0W2ldLGUsbikuc291cmNlKTt2YXIgbz1uZXcgUmVnRXhwKCIoPzoiK3Iuam9pbigifCIpKyIpIixLKG4pKTtyZXR1cm4gSihvLGUpfWZ1bmN0aW9uIGV0KHQsZSxuKXtyZXR1cm4gbnQoVSh0LG4pLGUsbil9ZnVuY3Rpb24gbnQodCxlLG4pe04oZSl8fChuPWV8fG4sZT1bXSksbj1ufHx7fTtmb3IodmFyIHI9bi5zdHJpY3QsaT0hMSE9PW4uZW5kLG89IiIsYT0wO2E8dC5sZW5ndGg7YSsrKXt2YXIgcz10W2FdO2lmKCJzdHJpbmciPT09dHlwZW9mIHMpbys9RyhzKTtlbHNle3ZhciBjPUcocy5wcmVmaXgpLHU9Iig/OiIrcy5wYXR0ZXJuKyIpIjtlLnB1c2gocykscy5yZXBlYXQmJih1Kz0iKD86IitjK3UrIikqIiksdT1zLm9wdGlvbmFsP3MucGFydGlhbD9jKyIoIit1KyIpPyI6Iig/OiIrYysiKCIrdSsiKSk/IjpjKyIoIit1KyIpIixvKz11fX12YXIgbD1HKG4uZGVsaW1pdGVyfHwiLyIpLGY9by5zbGljZSgtbC5sZW5ndGgpPT09bDtyZXR1cm4gcnx8KG89KGY/by5zbGljZSgwLC1sLmxlbmd0aCk6bykrIig/OiIrbCsiKD89JCkpPyIpLG8rPWk/IiQiOnImJmY/IiI6Iig/PSIrbCsifCQpIixKKG5ldyBSZWdFeHAoIl4iK28sSyhuKSksZSl9ZnVuY3Rpb24gcnQodCxlLG4pe3JldHVybiBOKGUpfHwobj1lfHxuLGU9W10pLG49bnx8e30sdCBpbnN0YW5jZW9mIFJlZ0V4cD9aKHQsZSk6Tih0KT90dCh0LGUsbik6ZXQodCxlLG4pfUQucGFyc2U9QixELmNvbXBpbGU9RixELnRva2Vuc1RvRnVuY3Rpb249eixELnRva2Vuc1RvUmVnRXhwPVc7dmFyIGl0PU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gb3QodCxlLG4pe3RyeXt2YXIgcj1pdFt0XXx8KGl0W3RdPUQuY29tcGlsZSh0KSk7cmV0dXJuIHIoZXx8e30se3ByZXR0eTohMH0pfWNhdGNoKGkpe3JldHVybiIifX1mdW5jdGlvbiBhdCh0LGUsbixyKXt2YXIgaT1lfHxbXSxvPW58fE9iamVjdC5jcmVhdGUobnVsbCksYT1yfHxPYmplY3QuY3JlYXRlKG51bGwpO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7c3QoaSxvLGEsdCl9KSk7Zm9yKHZhciBzPTAsYz1pLmxlbmd0aDtzPGM7cysrKSIqIj09PWlbc10mJihpLnB1c2goaS5zcGxpY2UocywxKVswXSksYy0tLHMtLSk7cmV0dXJue3BhdGhMaXN0OmkscGF0aE1hcDpvLG5hbWVNYXA6YX19ZnVuY3Rpb24gc3QodCxlLG4scixpLG8pe3ZhciBhPXIucGF0aCxzPXIubmFtZTt2YXIgYz1yLnBhdGhUb1JlZ2V4cE9wdGlvbnN8fHt9LHU9dXQoYSxpLGMuc3RyaWN0KTsiYm9vbGVhbiI9PT10eXBlb2Ygci5jYXNlU2Vuc2l0aXZlJiYoYy5zZW5zaXRpdmU9ci5jYXNlU2Vuc2l0aXZlKTt2YXIgbD17cGF0aDp1LHJlZ2V4OmN0KHUsYyksY29tcG9uZW50czpyLmNvbXBvbmVudHN8fHtkZWZhdWx0OnIuY29tcG9uZW50fSxpbnN0YW5jZXM6e30sbmFtZTpzLHBhcmVudDppLG1hdGNoQXM6byxyZWRpcmVjdDpyLnJlZGlyZWN0LGJlZm9yZUVudGVyOnIuYmVmb3JlRW50ZXIsbWV0YTpyLm1ldGF8fHt9LHByb3BzOm51bGw9PXIucHJvcHM/e306ci5jb21wb25lbnRzP3IucHJvcHM6e2RlZmF1bHQ6ci5wcm9wc319O2lmKHIuY2hpbGRyZW4mJnIuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIGk9bz9SKG8rIi8iK3IucGF0aCk6dm9pZCAwO3N0KHQsZSxuLHIsbCxpKX0pKSx2b2lkIDAhPT1yLmFsaWFzKXt2YXIgZj1BcnJheS5pc0FycmF5KHIuYWxpYXMpP3IuYWxpYXM6W3IuYWxpYXNdO2YuZm9yRWFjaCgoZnVuY3Rpb24obyl7dmFyIGE9e3BhdGg6byxjaGlsZHJlbjpyLmNoaWxkcmVufTtzdCh0LGUsbixhLGksbC5wYXRofHwiLyIpfSkpfWVbbC5wYXRoXXx8KHQucHVzaChsLnBhdGgpLGVbbC5wYXRoXT1sKSxzJiYobltzXXx8KG5bc109bCkpfWZ1bmN0aW9uIGN0KHQsZSl7dmFyIG49RCh0LFtdLGUpO3JldHVybiBufWZ1bmN0aW9uIHV0KHQsZSxuKXtyZXR1cm4gbnx8KHQ9dC5yZXBsYWNlKC9cLyQvLCIiKSksIi8iPT09dFswXXx8bnVsbD09ZT90OlIoZS5wYXRoKyIvIit0KX1mdW5jdGlvbiBsdCh0LGUsbixyKXt2YXIgaT0ic3RyaW5nIj09PXR5cGVvZiB0P3twYXRoOnR9OnQ7aWYoaS5uYW1lfHxpLl9ub3JtYWxpemVkKXJldHVybiBpO2lmKCFpLnBhdGgmJmkucGFyYW1zJiZlKXtpPW8oe30saSksaS5fbm9ybWFsaXplZD0hMDt2YXIgYT1vKG8oe30sZS5wYXJhbXMpLGkucGFyYW1zKTtpZihlLm5hbWUpaS5uYW1lPWUubmFtZSxpLnBhcmFtcz1hO2Vsc2UgaWYoZS5tYXRjaGVkLmxlbmd0aCl7dmFyIHM9ZS5tYXRjaGVkW2UubWF0Y2hlZC5sZW5ndGgtMV0ucGF0aDtpLnBhdGg9b3QocyxhLCJwYXRoICIrZS5wYXRoKX1lbHNlIDA7cmV0dXJuIGl9dmFyIGM9TChpLnBhdGh8fCIiKSx1PWUmJmUucGF0aHx8Ii8iLGw9Yy5wYXRoPyQoYy5wYXRoLHUsbnx8aS5hcHBlbmQpOnUsZj1oKGMucXVlcnksaS5xdWVyeSxyJiZyLm9wdGlvbnMucGFyc2VRdWVyeSksZD1pLmhhc2h8fGMuaGFzaDtyZXR1cm4gZCYmIiMiIT09ZC5jaGFyQXQoMCkmJihkPSIjIitkKSx7X25vcm1hbGl6ZWQ6ITAsdHlwZTppLnR5cGUscGFyYW1zOmkucGFyYW1zfHx7fSxwYXRoOmwscXVlcnk6ZixoYXNoOmR9fWZ1bmN0aW9uIGZ0KHQsZSl7dmFyIG49YXQodCkscj1uLnBhdGhMaXN0LGk9bi5wYXRoTWFwLGE9bi5uYW1lTWFwO2Z1bmN0aW9uIHModCl7YXQodCxyLGksYSl9ZnVuY3Rpb24gYyh0LG4sbyl7dmFyIHM9bHQodCxuLCExLGUpLGM9cy5uYW1lO2lmKGMpe3ZhciB1PWFbY107aWYoIXUpcmV0dXJuIGYobnVsbCxzKTt2YXIgbD11LnJlZ2V4LmtleXMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hdC5vcHRpb25hbH0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWV9KSk7aWYoIm9iamVjdCIhPT10eXBlb2Ygcy5wYXJhbXMmJihzLnBhcmFtcz17fSksbiYmIm9iamVjdCI9PT10eXBlb2Ygbi5wYXJhbXMpZm9yKHZhciBkIGluIG4ucGFyYW1zKSEoZCBpbiBzLnBhcmFtcykmJmwuaW5kZXhPZihkKT4tMSYmKHMucGFyYW1zW2RdPW4ucGFyYW1zW2RdKTtpZih1KXJldHVybiBzLnBhdGg9b3QodS5wYXRoLHMucGFyYW1zLCduYW1lZCByb3V0ZSAiJytjKyciJyksZih1LHMsbyl9ZWxzZSBpZihzLnBhdGgpe3MucGFyYW1zPXMucGFyYW1zfHx7fTtmb3IodmFyIGg9MDtoPHIubGVuZ3RoO2grKyl7dmFyIHA9cltoXSx2PWlbcF07aWYoZHQodi5yZWdleCxzLnBhdGgscy5wYXJhbXMpKXJldHVybiBmKHYscyxvKX19cmV0dXJuIGYobnVsbCxzKX1mdW5jdGlvbiB1KHQsbil7dmFyIHI9dC5yZWRpcmVjdCxpPSJmdW5jdGlvbiI9PT10eXBlb2Ygcj9yKG0odCxuLG51bGwsZSkpOnI7aWYoInN0cmluZyI9PT10eXBlb2YgaSYmKGk9e3BhdGg6aX0pLCFpfHwib2JqZWN0IiE9PXR5cGVvZiBpKXJldHVybiBmKG51bGwsbik7dmFyIG89aSxzPW8ubmFtZSx1PW8ucGF0aCxsPW4ucXVlcnksZD1uLmhhc2gsaD1uLnBhcmFtcztpZihsPW8uaGFzT3duUHJvcGVydHkoInF1ZXJ5Iik/by5xdWVyeTpsLGQ9by5oYXNPd25Qcm9wZXJ0eSgiaGFzaCIpP28uaGFzaDpkLGg9by5oYXNPd25Qcm9wZXJ0eSgicGFyYW1zIik/by5wYXJhbXM6aCxzKXthW3NdO3JldHVybiBjKHtfbm9ybWFsaXplZDohMCxuYW1lOnMscXVlcnk6bCxoYXNoOmQscGFyYW1zOmh9LHZvaWQgMCxuKX1pZih1KXt2YXIgcD1odCh1LHQpLHY9b3QocCxoLCdyZWRpcmVjdCByb3V0ZSB3aXRoIHBhdGggIicrcCsnIicpO3JldHVybiBjKHtfbm9ybWFsaXplZDohMCxwYXRoOnYscXVlcnk6bCxoYXNoOmR9LHZvaWQgMCxuKX1yZXR1cm4gZihudWxsLG4pfWZ1bmN0aW9uIGwodCxlLG4pe3ZhciByPW90KG4sZS5wYXJhbXMsJ2FsaWFzZWQgcm91dGUgd2l0aCBwYXRoICInK24rJyInKSxpPWMoe19ub3JtYWxpemVkOiEwLHBhdGg6cn0pO2lmKGkpe3ZhciBvPWkubWF0Y2hlZCxhPW9bby5sZW5ndGgtMV07cmV0dXJuIGUucGFyYW1zPWkucGFyYW1zLGYoYSxlKX1yZXR1cm4gZihudWxsLGUpfWZ1bmN0aW9uIGYodCxuLHIpe3JldHVybiB0JiZ0LnJlZGlyZWN0P3UodCxyfHxuKTp0JiZ0Lm1hdGNoQXM/bCh0LG4sdC5tYXRjaEFzKToobi5wYXJhbXM9bi5wYXJhbXN8fHt9LHQmJnQubWV0YSYmdC5tZXRhLmlkP24ucGFyYW1zLl9faWRfXz10Lm1ldGEuaWQ6bi5wYXJhbXMuX19pZF9ffHwobi5wYXJhbXMuX19pZF9fPWUuaWQpLHQmJnQubWV0YSYmdC5tZXRhLm5hbWUmJih0Lm1ldGEuaWQ/dC5jb21wb25lbnRzLmRlZmF1bHQubmFtZT10Lm1ldGEubmFtZSsiLSIrbi5wYXJhbXMuX19pZF9fOih0PW8oe30sdCksdC5jb21wb25lbnRzPXtkZWZhdWx0OntuYW1lOnQubWV0YS5uYW1lKyItIituLnBhcmFtcy5fX2lkX18scmVuZGVyOnQuY29tcG9uZW50c1siZGVmYXVsdCJdLnJlbmRlcn19KSksbSh0LG4scixlKSl9cmV0dXJue21hdGNoOmMsYWRkUm91dGVzOnN9fWZ1bmN0aW9uIGR0KHQsZSxuKXt2YXIgcj1lLm1hdGNoKHQpO2lmKCFyKXJldHVybiExO2lmKCFuKXJldHVybiEwO2Zvcih2YXIgaT0xLG89ci5sZW5ndGg7aTxvOysraSl7dmFyIGE9dC5rZXlzW2ktMV0scz0ic3RyaW5nIj09PXR5cGVvZiByW2ldP2RlY29kZVVSSUNvbXBvbmVudChyW2ldKTpyW2ldO2EmJihuW2EubmFtZXx8InBhdGhNYXRjaCJdPXMpfXJldHVybiEwfWZ1bmN0aW9uIGh0KHQsZSl7cmV0dXJuICQodCxlLnBhcmVudD9lLnBhcmVudC5wYXRoOiIvIiwhMCl9dmFyIHB0PU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gdnQodCl7d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHtrZXk6RXQoKSxpZDp0LmN1cnJlbnRSb3V0ZSYmdC5jdXJyZW50Um91dGUucGFyYW1zLl9faWRfX3x8dC5pZH0sIiIsd2luZG93LmxvY2F0aW9uLmhyZWYucmVwbGFjZSh3aW5kb3cubG9jYXRpb24ub3JpZ2luLCIiKSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIiwoZnVuY3Rpb24odCl7bXQoKSx0LnN0YXRlJiZ0LnN0YXRlLmtleSYmanQodC5zdGF0ZS5rZXkpfSkpfWZ1bmN0aW9uIGd0KHQsZSxuLHIpe2lmKHQuYXBwKXt2YXIgaT10Lm9wdGlvbnMuc2Nyb2xsQmVoYXZpb3I7aSYmdC5hcHAuJG5leHRUaWNrKChmdW5jdGlvbigpe3ZhciBvPWJ0KCksYT1pLmNhbGwodCxlLG4scj9vOm51bGwpO2EmJigiZnVuY3Rpb24iPT09dHlwZW9mIGEudGhlbj9hLnRoZW4oKGZ1bmN0aW9uKHQpe2t0KHQsbyl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpezB9KSk6a3QoYSxvKSl9KSl9fWZ1bmN0aW9uIG10KCl7dmFyIHQ9RXQoKTt0JiYocHRbdF09e3g6d2luZG93LnBhZ2VYT2Zmc2V0LHk6d2luZG93LnBhZ2VZT2Zmc2V0fSl9ZnVuY3Rpb24gYnQoKXt2YXIgdD1FdCgpO2lmKHQpcmV0dXJuIHB0W3RdfWZ1bmN0aW9uIHl0KHQsZSl7dmFyIG49ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHI9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3g6aS5sZWZ0LXIubGVmdC1lLngseTppLnRvcC1yLnRvcC1lLnl9fWZ1bmN0aW9uIF90KHQpe3JldHVybiB4dCh0LngpfHx4dCh0LnkpfWZ1bmN0aW9uIHd0KHQpe3JldHVybnt4Onh0KHQueCk/dC54OndpbmRvdy5wYWdlWE9mZnNldCx5Onh0KHQueSk/dC55OndpbmRvdy5wYWdlWU9mZnNldH19ZnVuY3Rpb24gU3QodCl7cmV0dXJue3g6eHQodC54KT90Lng6MCx5Onh0KHQueSk/dC55OjB9fWZ1bmN0aW9uIHh0KHQpe3JldHVybiJudW1iZXIiPT09dHlwZW9mIHR9ZnVuY3Rpb24ga3QodCxlKXt2YXIgbj0ib2JqZWN0Ij09PXR5cGVvZiB0O2lmKG4mJiJzdHJpbmciPT09dHlwZW9mIHQuc2VsZWN0b3Ipe3ZhciByPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodC5zZWxlY3Rvcik7aWYocil7dmFyIGk9dC5vZmZzZXQmJiJvYmplY3QiPT09dHlwZW9mIHQub2Zmc2V0P3Qub2Zmc2V0Ont9O2k9U3QoaSksZT15dChyLGkpfWVsc2UgX3QodCkmJihlPXd0KHQpKX1lbHNlIG4mJl90KHQpJiYoZT13dCh0KSk7ZSYmd2luZG93LnNjcm9sbFRvKGUueCxlLnkpfXZhciBDdD1QJiZmdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O3JldHVybigtMT09PXQuaW5kZXhPZigiQW5kcm9pZCAyLiIpJiYtMT09PXQuaW5kZXhPZigiQW5kcm9pZCA0LjAiKXx8LTE9PT10LmluZGV4T2YoIk1vYmlsZSBTYWZhcmkiKXx8LTEhPT10LmluZGV4T2YoIkNocm9tZSIpfHwtMSE9PXQuaW5kZXhPZigiV2luZG93cyBQaG9uZSIpKSYmKHdpbmRvdy5oaXN0b3J5JiYicHVzaFN0YXRlImluIHdpbmRvdy5oaXN0b3J5KX0oKSxUdD1QJiZ3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS5ub3c/d2luZG93LnBlcmZvcm1hbmNlOkRhdGUsT3Q9QXQoKTtmdW5jdGlvbiBBdCgpe3JldHVybiBUdC5ub3coKS50b0ZpeGVkKDMpfWZ1bmN0aW9uIEV0KCl7cmV0dXJuIE90fWZ1bmN0aW9uIGp0KHQpe090PXR9ZnVuY3Rpb24gTXQodCxlLG4pe210KCk7dmFyIHI9d2luZG93Lmhpc3Rvcnk7dHJ5e24/ci5yZXBsYWNlU3RhdGUoe2lkOmUsa2V5Ok90fSwiIix0KTooT3Q9QXQoKSxyLnB1c2hTdGF0ZSh7aWQ6ZSxrZXk6T3R9LCIiLHQpKX1jYXRjaChpKXt3aW5kb3cubG9jYXRpb25bbj8icmVwbGFjZSI6ImFzc2lnbiJdKHQpfX1mdW5jdGlvbiBJdCh0LGUpe010KHQsZSwhMCl9ZnVuY3Rpb24gUHQodCxlLG4pe3ZhciByPWZ1bmN0aW9uKGkpe2k+PXQubGVuZ3RoP24oKTp0W2ldP2UodFtpXSwoZnVuY3Rpb24oKXtyKGkrMSl9KSk6cihpKzEpfTtyKDApfWZ1bmN0aW9uICR0KHQpe3JldHVybiBmdW5jdGlvbihlLG4scil7dmFyIG89ITEsYT0wLHM9bnVsbDtMdCh0LChmdW5jdGlvbih0LGUsbixjKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHQmJnZvaWQgMD09PXQuY2lkKXtvPSEwLGErKzt2YXIgdSxsPUJ0KChmdW5jdGlvbihlKXtEdChlKSYmKGU9ZS5kZWZhdWx0KSx0LnJlc29sdmVkPSJmdW5jdGlvbiI9PT10eXBlb2YgZT9lOlQuZXh0ZW5kKGUpLG4uY29tcG9uZW50c1tjXT1lLGEtLSxhPD0wJiZyKCl9KSksZj1CdCgoZnVuY3Rpb24odCl7dmFyIGU9IkZhaWxlZCB0byByZXNvbHZlIGFzeW5jIGNvbXBvbmVudCAiK2MrIjogIit0O3N8fChzPWkodCk/dDpuZXcgRXJyb3IoZSkscihzKSl9KSk7dHJ5e3U9dChsLGYpfWNhdGNoKGgpe2YoaCl9aWYodSlpZigiZnVuY3Rpb24iPT09dHlwZW9mIHUudGhlbil1LnRoZW4obCxmKTtlbHNle3ZhciBkPXUuY29tcG9uZW50O2QmJiJmdW5jdGlvbiI9PT10eXBlb2YgZC50aGVuJiZkLnRoZW4obCxmKX19fSkpLG98fHIoKX19ZnVuY3Rpb24gTHQodCxlKXtyZXR1cm4gUnQodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0LmNvbXBvbmVudHMpLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIGUodC5jb21wb25lbnRzW25dLHQuaW5zdGFuY2VzW25dLHQsbil9KSl9KSkpfWZ1bmN0aW9uIFJ0KHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLHQpfXZhciBOdD0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT10eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnO2Z1bmN0aW9uIER0KHQpe3JldHVybiB0Ll9fZXNNb2R1bGV8fE50JiYiTW9kdWxlIj09PXRbU3ltYm9sLnRvU3RyaW5nVGFnXX1mdW5jdGlvbiBCdCh0KXt2YXIgZT0hMTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1bXSxyPWFyZ3VtZW50cy5sZW5ndGg7d2hpbGUoci0tKW5bcl09YXJndW1lbnRzW3JdO2lmKCFlKXJldHVybiBlPSEwLHQuYXBwbHkodGhpcyxuKX19dmFyIEZ0PWZ1bmN0aW9uKHQsZSl7dGhpcy5yb3V0ZXI9dCx0aGlzLmJhc2U9enQoZSksdGhpcy5jdXJyZW50PXksdGhpcy5wZW5kaW5nPW51bGwsdGhpcy5yZWFkeT0hMSx0aGlzLnJlYWR5Q2JzPVtdLHRoaXMucmVhZHlFcnJvckNicz1bXSx0aGlzLmVycm9yQ2JzPVtdfTtmdW5jdGlvbiB6dCh0KXtpZighdClpZihQKXt2YXIgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJiYXNlIik7dD1lJiZlLmdldEF0dHJpYnV0ZSgiaHJlZiIpfHwiLyIsdD10LnJlcGxhY2UoL15odHRwcz86XC9cL1teXC9dKy8sIiIpfWVsc2UgdD0iLyI7cmV0dXJuIi8iIT09dC5jaGFyQXQoMCkmJih0PSIvIit0KSx0LnJlcGxhY2UoL1wvJC8sIiIpfWZ1bmN0aW9uIFd0KHQsZSl7dmFyIG4scj1NYXRoLm1heCh0Lmxlbmd0aCxlLmxlbmd0aCk7Zm9yKG49MDtuPHI7bisrKWlmKHRbbl0hPT1lW25dKWJyZWFrO3JldHVybnt1cGRhdGVkOmUuc2xpY2UoMCxuKSxhY3RpdmF0ZWQ6ZS5zbGljZShuKSxkZWFjdGl2YXRlZDp0LnNsaWNlKG4pfX1mdW5jdGlvbiBIdCh0LGUsbixyKXt2YXIgaT1MdCh0LChmdW5jdGlvbih0LHIsaSxvKXt2YXIgYT1VdCh0LGUpO2lmKGEpcmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuKHQscixpLG8pfSkpOm4oYSxyLGksbyl9KSk7cmV0dXJuIFJ0KHI/aS5yZXZlcnNlKCk6aSl9ZnVuY3Rpb24gVXQodCxlKXtyZXR1cm4iZnVuY3Rpb24iIT09dHlwZW9mIHQmJih0PVQuZXh0ZW5kKHQpKSx0Lm9wdGlvbnNbZV19ZnVuY3Rpb24gcXQodCl7cmV0dXJuIEh0KHQsImJlZm9yZVJvdXRlTGVhdmUiLFl0LCEwKX1mdW5jdGlvbiBWdCh0KXtyZXR1cm4gSHQodCwiYmVmb3JlUm91dGVVcGRhdGUiLFl0KX1mdW5jdGlvbiBZdCh0LGUpe2lmKGUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX1mdW5jdGlvbiBYdCh0LGUsbil7cmV0dXJuIEh0KHQsImJlZm9yZVJvdXRlRW50ZXIiLChmdW5jdGlvbih0LHIsaSxvKXtyZXR1cm4gR3QodCxpLG8sZSxuKX0pKX1mdW5jdGlvbiBHdCh0LGUsbixyLGkpe3JldHVybiBmdW5jdGlvbihvLGEscyl7cmV0dXJuIHQobyxhLChmdW5jdGlvbih0KXtzKHQpLCJmdW5jdGlvbiI9PT10eXBlb2YgdCYmci5wdXNoKChmdW5jdGlvbigpe1F0KHQsZS5pbnN0YW5jZXMsbixpKX0pKX0pKX19ZnVuY3Rpb24gUXQodCxlLG4scil7ZVtuXSYmIWVbbl0uX2lzQmVpbmdEZXN0cm95ZWQ/dChlW25dKTpyKCkmJnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7UXQodCxlLG4scil9KSwxNil9RnQucHJvdG90eXBlLmxpc3Rlbj1mdW5jdGlvbih0KXt0aGlzLmNiPXR9LEZ0LnByb3RvdHlwZS5vblJlYWR5PWZ1bmN0aW9uKHQsZSl7dGhpcy5yZWFkeT90KCk6KHRoaXMucmVhZHlDYnMucHVzaCh0KSxlJiZ0aGlzLnJlYWR5RXJyb3JDYnMucHVzaChlKSl9LEZ0LnByb3RvdHlwZS5vbkVycm9yPWZ1bmN0aW9uKHQpe3RoaXMuZXJyb3JDYnMucHVzaCh0KX0sRnQucHJvdG90eXBlLnRyYW5zaXRpb25Ubz1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcyxpPXRoaXMucm91dGVyLm1hdGNoKHQsdGhpcy5jdXJyZW50KTt0aGlzLmNvbmZpcm1UcmFuc2l0aW9uKGksKGZ1bmN0aW9uKCl7ci51cGRhdGVSb3V0ZShpKSxlJiZlKGkpLHIuZW5zdXJlVVJMKCksci5yZWFkeXx8KHIucmVhZHk9ITAsci5yZWFkeUNicy5mb3JFYWNoKChmdW5jdGlvbih0KXt0KGkpfSkpKX0pLChmdW5jdGlvbih0KXtuJiZuKHQpLHQmJiFyLnJlYWR5JiYoci5yZWFkeT0hMCxyLnJlYWR5RXJyb3JDYnMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZSh0KX0pKSl9KSl9LEZ0LnByb3RvdHlwZS5jb25maXJtVHJhbnNpdGlvbj1mdW5jdGlvbih0LGUsbil7dmFyIG89dGhpcyxhPXRoaXMuY3VycmVudCxzPWZ1bmN0aW9uKHQpe2kodCkmJihvLmVycm9yQ2JzLmxlbmd0aD9vLmVycm9yQ2JzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UodCl9KSk6KHIoITEsInVuY2F1Z2h0IGVycm9yIGR1cmluZyByb3V0ZSBuYXZpZ2F0aW9uOiIpLGNvbnNvbGUuZXJyb3IodCkpKSxuJiZuKHQpfSxjPVd0KHRoaXMuY3VycmVudC5tYXRjaGVkLHQubWF0Y2hlZCksdT1jLnVwZGF0ZWQsbD1jLmRlYWN0aXZhdGVkLGY9Yy5hY3RpdmF0ZWQsZD1bXS5jb25jYXQocXQobCksdGhpcy5yb3V0ZXIuYmVmb3JlSG9va3MsVnQodSksZi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJlZm9yZUVudGVyfSkpLCR0KGYpKTt0aGlzLnBlbmRpbmc9dDt2YXIgaD1mdW5jdGlvbihlLG4pe2lmKG8ucGVuZGluZyE9PXQpcmV0dXJuIHMoKTt0cnl7ZSh0LGEsKGZ1bmN0aW9uKHQpeyExPT09dHx8aSh0KT8oby5lbnN1cmVVUkwoITApLHModCkpOiJzdHJpbmciPT09dHlwZW9mIHR8fCJvYmplY3QiPT09dHlwZW9mIHQmJigic3RyaW5nIj09PXR5cGVvZiB0LnBhdGh8fCJzdHJpbmciPT09dHlwZW9mIHQubmFtZSk/KHMoKSwib2JqZWN0Ij09PXR5cGVvZiB0JiZ0LnJlcGxhY2U/by5yZXBsYWNlKHQpOm8ucHVzaCh0KSk6bih0KX0pKX1jYXRjaChyKXtzKHIpfX07UHQoZCxoLChmdW5jdGlvbigpe3ZhciBuPVtdLHI9ZnVuY3Rpb24oKXtyZXR1cm4gby5jdXJyZW50PT09dH0saT1YdChmLG4sciksYT1pLmNvbmNhdChvLnJvdXRlci5yZXNvbHZlSG9va3MpO1B0KGEsaCwoZnVuY3Rpb24oKXtpZihvLnBlbmRpbmchPT10KXJldHVybiBzKCk7by5wZW5kaW5nPW51bGwsZSh0KSxvLnJvdXRlci5hcHAmJm8ucm91dGVyLmFwcC4kbmV4dFRpY2soKGZ1bmN0aW9uKCl7bi5mb3JFYWNoKChmdW5jdGlvbih0KXt0KCl9KSl9KSl9KSl9KSl9LEZ0LnByb3RvdHlwZS51cGRhdGVSb3V0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmN1cnJlbnQ7dGhpcy5jdXJyZW50PXQsdGhpcy5jYiYmdGhpcy5jYih0KSx0aGlzLnJvdXRlci5hZnRlckhvb2tzLmZvckVhY2goKGZ1bmN0aW9uKG4pe24mJm4odCxlKX0pKX07dmFyIEp0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuc2V0dXBMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5yb3V0ZXIsbj1lLm9wdGlvbnMuc2Nyb2xsQmVoYXZpb3Iscj1DdCYmbjtyJiZ2dChlKTt2YXIgaT1LdCh0aGlzLmJhc2UpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsKGZ1bmN0aW9uKG4pe3ZhciBvPXQuY3VycmVudCxhPUt0KHQuYmFzZSk7aWYodC5jdXJyZW50IT09eXx8YSE9PWkpe3ZhciBzPW4uc3RhdGUmJm4uc3RhdGUuaWQ7aWYoIXMpcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTt0LnRyYW5zaXRpb25Ubyh7cGF0aDphLHBhcmFtczp7X19pZF9fOnN9fSwoZnVuY3Rpb24odCl7ciYmZ3QoZSx0LG8sITApfSkpfX0pKX0sZS5wcm90b3R5cGUuZ289ZnVuY3Rpb24odCl7d2luZG93Lmhpc3RvcnkuZ28odCl9LGUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXM7aWYoIm9iamVjdCI9PT10eXBlb2YgdCl7dC5wYXJhbXM9dC5wYXJhbXN8fHt9O3ZhciBpPXQucGFyYW1zLl9faWRfXztzd2l0Y2godC50eXBlKXtjYXNlIm5hdmlnYXRlVG8iOml8fHRoaXMucm91dGVyLmlkKys7YnJlYWs7Y2FzZSJyZWRpcmVjdFRvIjpjYXNlInJlTGF1bmNoIjp0aGlzLnJvdXRlci5pZCsrO2JyZWFrO2Nhc2Uic3dpdGNoVGFiIjpicmVha31pfHwodC5wYXJhbXMuX19pZF9fPXRoaXMucm91dGVyLmlkKX12YXIgbz10aGlzLGE9by5jdXJyZW50O3RoaXMudHJhbnNpdGlvblRvKHQsKGZ1bmN0aW9uKG4pe010KFIoci5iYXNlK24uZnVsbFBhdGgpLHQucGFyYW1zLl9faWRfXyksZ3Qoci5yb3V0ZXIsbixhLCExKSxlJiZlKG4pfSksbil9LGUucHJvdG90eXBlLnJlcGxhY2U9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXM7aWYoIm9iamVjdCI9PT10eXBlb2YgdCl7c3dpdGNoKHQudHlwZSl7Y2FzZSJuYXZpZ2F0ZVRvIjpjYXNlInJlZGlyZWN0VG8iOmNhc2UicmVMYXVuY2giOnRoaXMucm91dGVyLmlkKys7YnJlYWs7Y2FzZSJzd2l0Y2hUYWIiOmJyZWFrfXQucGFyYW1zPXQucGFyYW1zfHx7fSx0LnBhcmFtcy5fX2lkX189dGhpcy5yb3V0ZXIuaWR9dmFyIGk9dGhpcyxvPWkuY3VycmVudDt0aGlzLnRyYW5zaXRpb25Ubyh0LChmdW5jdGlvbihuKXtJdChSKHIuYmFzZStuLmZ1bGxQYXRoKSx0LnBhcmFtcy5fX2lkX18pLGd0KHIucm91dGVyLG4sbywhMSksZSYmZShuKX0pLG4pfSxlLnByb3RvdHlwZS5lbnN1cmVVUkw9ZnVuY3Rpb24odCl7aWYoS3QodGhpcy5iYXNlKSE9PXRoaXMuY3VycmVudC5mdWxsUGF0aCl7dmFyIGU9Uih0aGlzLmJhc2UrdGhpcy5jdXJyZW50LmZ1bGxQYXRoKSxuPXRoaXMuY3VycmVudC5wYXJhbXMuX19pZF9fO3Q/TXQoZSxuKTpJdChlLG4pfX0sZS5wcm90b3R5cGUuZ2V0Q3VycmVudExvY2F0aW9uPWZ1bmN0aW9uKCl7cmV0dXJue3BhdGg6S3QodGhpcy5iYXNlKSxwYXJhbXM6e19faWRfXzorK3RoaXMucm91dGVyLmlkfX19LGV9KEZ0KTtmdW5jdGlvbiBLdCh0KXt2YXIgZT1kZWNvZGVVUkkod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKTtyZXR1cm4gdCYmMD09PWUuaW5kZXhPZih0KSYmKGU9ZS5zbGljZSh0Lmxlbmd0aCkpLChlfHwiLyIpK3YoaCh3aW5kb3cubG9jYXRpb24uc2VhcmNoKSkrd2luZG93LmxvY2F0aW9uLmhhc2h9dmFyIFp0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3QuY2FsbCh0aGlzLGUsbiksciYmdGUodGhpcy5iYXNlKXx8ZWUoKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuc2V0dXBMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5yb3V0ZXIsbj1lLm9wdGlvbnMuc2Nyb2xsQmVoYXZpb3Iscj1DdCYmbjtyJiZ2dChlKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihDdD8icG9wc3RhdGUiOiJoYXNoY2hhbmdlIiwoZnVuY3Rpb24oZSl7dmFyIG49dC5jdXJyZW50O2lmKGVlKCkpe3ZhciBpPWUuc3RhdGUmJmUuc3RhdGUuaWQ7aWYoIWkpcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTt0LnRyYW5zaXRpb25Ubyh7cGF0aDpuZSgpLHBhcmFtczp7X19pZF9fOml9fSwoZnVuY3Rpb24oZSl7ciYmZ3QodC5yb3V0ZXIsZSxuLCEwKSxDdHx8b2UoZS5mdWxsUGF0aCxlLnBhcmFtcy5fX2lkX18pfSkpfX0pKX0sZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcztpZigib2JqZWN0Ij09PXR5cGVvZiB0KXt0LnBhcmFtcz10LnBhcmFtc3x8e307dmFyIGk9dC5wYXJhbXMuX19pZF9fO3N3aXRjaCh0LnR5cGUpe2Nhc2UibmF2aWdhdGVUbyI6aXx8dGhpcy5yb3V0ZXIuaWQrKzticmVhaztjYXNlInJlZGlyZWN0VG8iOmNhc2UicmVMYXVuY2giOnRoaXMucm91dGVyLmlkKys7YnJlYWs7Y2FzZSJzd2l0Y2hUYWIiOmJyZWFrfWl8fCh0LnBhcmFtcy5fX2lkX189dGhpcy5yb3V0ZXIuaWQpfXZhciBvPXRoaXMsYT1vLmN1cnJlbnQscz10aGlzLnJvdXRlci5pZDt0aGlzLnRyYW5zaXRpb25Ubyh0LChmdW5jdGlvbih0KXtpZSh0LmZ1bGxQYXRoLHMpLGd0KHIucm91dGVyLHQsYSwhMSksZSYmZSh0KX0pLG4pfSxlLnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzO2lmKCJvYmplY3QiPT09dHlwZW9mIHQpe3N3aXRjaCh0LnR5cGUpe2Nhc2UibmF2aWdhdGVUbyI6Y2FzZSJyZWRpcmVjdFRvIjpjYXNlInJlTGF1bmNoIjp0aGlzLnJvdXRlci5pZCsrO2JyZWFrO2Nhc2Uic3dpdGNoVGFiIjpicmVha310LnBhcmFtcz10LnBhcmFtc3x8e30sdC5wYXJhbXMuX19pZF9fPXRoaXMucm91dGVyLmlkfXZhciBpPXRoaXMsbz1pLmN1cnJlbnQsYT10aGlzLnJvdXRlci5pZDt0aGlzLnRyYW5zaXRpb25Ubyh0LChmdW5jdGlvbih0KXtvZSh0LmZ1bGxQYXRoLGEpLGd0KHIucm91dGVyLHQsbywhMSksZSYmZSh0KX0pLG4pfSxlLnByb3RvdHlwZS5nbz1mdW5jdGlvbih0KXt3aW5kb3cuaGlzdG9yeS5nbyh0KX0sZS5wcm90b3R5cGUuZW5zdXJlVVJMPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY3VycmVudC5mdWxsUGF0aDtuZSgpIT09ZSYmKHQ/aWUoZSx0aGlzLmN1cnJlbnQucGFyYW1zLl9faWRfXyk6b2UoZSx0aGlzLmN1cnJlbnQucGFyYW1zLl9faWRfXykpfSxlLnByb3RvdHlwZS5nZXRDdXJyZW50TG9jYXRpb249ZnVuY3Rpb24oKXtyZXR1cm57cGF0aDpuZSgpLHBhcmFtczp7X19pZF9fOisrdGhpcy5yb3V0ZXIuaWR9fX0sZX0oRnQpO2Z1bmN0aW9uIHRlKHQpe3ZhciBlPUt0KHQpO2lmKCEvXlwvIy8udGVzdChlKSlyZXR1cm4gd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoUih0KyIvIyIrZSkpLCEwfWZ1bmN0aW9uIGVlKCl7dmFyIHQ9bmUoKTtyZXR1cm4iLyI9PT10LmNoYXJBdCgwKXx8KG9lKCIvIit0KSwhMSl9ZnVuY3Rpb24gbmUoKXt2YXIgdD13aW5kb3cubG9jYXRpb24uaHJlZixlPXQuaW5kZXhPZigiIyIpO3JldHVybi0xPT09ZT8iIjpkZWNvZGVVUkkodC5zbGljZShlKzEpKX1mdW5jdGlvbiByZSh0KXt2YXIgZT13aW5kb3cubG9jYXRpb24uaHJlZixuPWUuaW5kZXhPZigiIyIpLHI9bj49MD9lLnNsaWNlKDAsbik6ZTtyZXR1cm4gcisiIyIrdH1mdW5jdGlvbiBpZSh0LGUpe0N0P010KHJlKHQpLGUpOndpbmRvdy5sb2NhdGlvbi5oYXNoPXR9ZnVuY3Rpb24gb2UodCxlKXtDdD9JdChyZSh0KSxlKTp3aW5kb3cubG9jYXRpb24ucmVwbGFjZShyZSh0KSl9dmFyIGFlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt0LmNhbGwodGhpcyxlLG4pLHRoaXMuc3RhY2s9W10sdGhpcy5pbmRleD0tMX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpczt0aGlzLnRyYW5zaXRpb25Ubyh0LChmdW5jdGlvbih0KXtyLnN0YWNrPXIuc3RhY2suc2xpY2UoMCxyLmluZGV4KzEpLmNvbmNhdCh0KSxyLmluZGV4KyssZSYmZSh0KX0pLG4pfSxlLnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzO3RoaXMudHJhbnNpdGlvblRvKHQsKGZ1bmN0aW9uKHQpe3Iuc3RhY2s9ci5zdGFjay5zbGljZSgwLHIuaW5kZXgpLmNvbmNhdCh0KSxlJiZlKHQpfSksbil9LGUucHJvdG90eXBlLmdvPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLmluZGV4K3Q7aWYoIShuPDB8fG4+PXRoaXMuc3RhY2subGVuZ3RoKSl7dmFyIHI9dGhpcy5zdGFja1tuXTt0aGlzLmNvbmZpcm1UcmFuc2l0aW9uKHIsKGZ1bmN0aW9uKCl7ZS5pbmRleD1uLGUudXBkYXRlUm91dGUocil9KSl9fSxlLnByb3RvdHlwZS5nZXRDdXJyZW50TG9jYXRpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO3JldHVybiB0P3QuZnVsbFBhdGg6Ii8ifSxlLnByb3RvdHlwZS5lbnN1cmVVUkw9ZnVuY3Rpb24oKXt9LGV9KEZ0KSxzZT1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD17fSksdGhpcy5hcHA9bnVsbCx0aGlzLmFwcHM9W10sdGhpcy5vcHRpb25zPXQsdGhpcy5iZWZvcmVIb29rcz1bXSx0aGlzLnJlc29sdmVIb29rcz1bXSx0aGlzLmFmdGVySG9va3M9W10sdGhpcy5tYXRjaGVyPWZ0KHQucm91dGVzfHxbXSx0aGlzKSx0aGlzLmlkPXQuaWR8fDEsdGhpcy5taW5JZD10LmlkfHwxO3ZhciBlPXQubW9kZXx8Imhhc2giO3N3aXRjaCh0aGlzLmZhbGxiYWNrPSJoaXN0b3J5Ij09PWUmJiFDdCYmITEhPT10LmZhbGxiYWNrLHRoaXMuZmFsbGJhY2smJihlPSJoYXNoIiksUHx8KGU9ImFic3RyYWN0IiksdGhpcy5tb2RlPWUsZSl7Y2FzZSJoaXN0b3J5Ijp0aGlzLmhpc3Rvcnk9bmV3IEp0KHRoaXMsdC5iYXNlKTticmVhaztjYXNlImhhc2giOnRoaXMuaGlzdG9yeT1uZXcgWnQodGhpcyx0LmJhc2UsdGhpcy5mYWxsYmFjayk7YnJlYWs7Y2FzZSJhYnN0cmFjdCI6dGhpcy5oaXN0b3J5PW5ldyBhZSh0aGlzLHQuYmFzZSk7YnJlYWs7ZGVmYXVsdDowfX0sY2U9e2N1cnJlbnRSb3V0ZTp7Y29uZmlndXJhYmxlOiEwfX07ZnVuY3Rpb24gdWUodCxlKXtyZXR1cm4gdC5wdXNoKGUpLGZ1bmN0aW9uKCl7dmFyIG49dC5pbmRleE9mKGUpO24+LTEmJnQuc3BsaWNlKG4sMSl9fWZ1bmN0aW9uIGxlKHQsZSxuKXt2YXIgcj0iaGFzaCI9PT1uPyIjIitlOmU7cmV0dXJuIHQ/Uih0KyIvIityKTpyfXNlLnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMubWF0Y2hlci5tYXRjaCh0LGUsbil9LGNlLmN1cnJlbnRSb3V0ZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaXN0b3J5JiZ0aGlzLmhpc3RvcnkuY3VycmVudH0sc2UucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0aGlzLmFwcHMucHVzaCh0KSwhdGhpcy5hcHApe3RoaXMuYXBwPXQ7dmFyIG49dGhpcy5oaXN0b3J5O2lmKG4gaW5zdGFuY2VvZiBKdCl7dmFyIHI9ZnVuY3Rpb24oKXtuLnNldHVwTGlzdGVuZXJzKCl9O24udHJhbnNpdGlvblRvKG4uZ2V0Q3VycmVudExvY2F0aW9uKCkscixyKX1lbHNlIGlmKG4gaW5zdGFuY2VvZiBadCl7dmFyIGk9ZnVuY3Rpb24oKXtuLnNldHVwTGlzdGVuZXJzKCl9O24udHJhbnNpdGlvblRvKG4uZ2V0Q3VycmVudExvY2F0aW9uKCksaSxpKX1uLmxpc3RlbigoZnVuY3Rpb24odCl7ZS5hcHBzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuX3JvdXRlPXR9KSl9KSl9fSxzZS5wcm90b3R5cGUuYmVmb3JlRWFjaD1mdW5jdGlvbih0KXtyZXR1cm4gdWUodGhpcy5iZWZvcmVIb29rcyx0KX0sc2UucHJvdG90eXBlLmJlZm9yZVJlc29sdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHVlKHRoaXMucmVzb2x2ZUhvb2tzLHQpfSxzZS5wcm90b3R5cGUuYWZ0ZXJFYWNoPWZ1bmN0aW9uKHQpe3JldHVybiB1ZSh0aGlzLmFmdGVySG9va3MsdCl9LHNlLnByb3RvdHlwZS5vblJlYWR5PWZ1bmN0aW9uKHQsZSl7dGhpcy5oaXN0b3J5Lm9uUmVhZHkodCxlKX0sc2UucHJvdG90eXBlLm9uRXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5oaXN0b3J5Lm9uRXJyb3IodCl9LHNlLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsZSxuKXt0aGlzLmhpc3RvcnkucHVzaCh0LGUsbil9LHNlLnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9uKHQsZSxuKXt0aGlzLmhpc3RvcnkucmVwbGFjZSh0LGUsbil9LHNlLnByb3RvdHlwZS5nbz1mdW5jdGlvbih0KXt0aGlzLmhpc3RvcnkuZ28odCl9LHNlLnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5nbygtMSl9LHNlLnByb3RvdHlwZS5mb3J3YXJkPWZ1bmN0aW9uKCl7dGhpcy5nbygxKX0sc2UucHJvdG90eXBlLmdldE1hdGNoZWRDb21wb25lbnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQ/dC5tYXRjaGVkP3Q6dGhpcy5yZXNvbHZlKHQpLnJvdXRlOnRoaXMuY3VycmVudFJvdXRlO3JldHVybiBlP1tdLmNvbmNhdC5hcHBseShbXSxlLm1hdGNoZWQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmtleXModC5jb21wb25lbnRzKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNvbXBvbmVudHNbZV19KSl9KSkpOltdfSxzZS5wcm90b3R5cGUucmVzb2x2ZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9bHQodCxlfHx0aGlzLmhpc3RvcnkuY3VycmVudCxuLHRoaXMpLGk9dGhpcy5tYXRjaChyLGUpLG89aS5yZWRpcmVjdGVkRnJvbXx8aS5mdWxsUGF0aCxhPXRoaXMuaGlzdG9yeS5iYXNlLHM9bGUoYSxvLHRoaXMubW9kZSk7cmV0dXJue2xvY2F0aW9uOnIscm91dGU6aSxocmVmOnMsbm9ybWFsaXplZFRvOnIscmVzb2x2ZWQ6aX19LHNlLnByb3RvdHlwZS5hZGRSb3V0ZXM9ZnVuY3Rpb24odCl7dGhpcy5tYXRjaGVyLmFkZFJvdXRlcyh0KSx0aGlzLmhpc3RvcnkuY3VycmVudCE9PXkmJnRoaXMuaGlzdG9yeS50cmFuc2l0aW9uVG8odGhpcy5oaXN0b3J5LmdldEN1cnJlbnRMb2NhdGlvbigpKX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoc2UucHJvdG90eXBlLGNlKSxzZS5pbnN0YWxsPUksc2UudmVyc2lvbj0iMy4wLjEiLGVbImRlZmF1bHQiXT1zZX0sYTk3NTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImViYjUiKSxpPW4oImI3MjciKS5ldmVyeSxvPXIuYVR5cGVkQXJyYXksYT1yLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7YSgiZXZlcnkiLChmdW5jdGlvbih0KXtyZXR1cm4gaShvKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpfSxhOWUzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiYzQzMCIpLG89bigiODNhYiIpLGE9bigiY2ZlOSIpLHM9bigiNDI4ZiIpLGM9bigiZTMzMCIpLHU9bigiOTRjYSIpLGw9bigiMWEyZCIpLGY9bigiNzE1NiIpLGQ9bigiM2E5YiIpLGg9bigiZDliNSIpLHA9bigiYzA0ZSIpLHY9bigiZDAzOSIpLGc9bigiMjQxYyIpLmYsbT1uKCIwNmNmIikuZixiPW4oIjliZjIiKS5mLHk9bigiNDA4YSIpLF89bigiNThhOCIpLnRyaW0sdz0iTnVtYmVyIixTPWFbd10seD1zW3ddLGs9Uy5wcm90b3R5cGUsQz1hLlR5cGVFcnJvcixUPWMoIiIuc2xpY2UpLE89YygiIi5jaGFyQ29kZUF0KSxBPWZ1bmN0aW9uKHQpe3ZhciBlPXAodCwibnVtYmVyIik7cmV0dXJuImJpZ2ludCI9PXR5cGVvZiBlP2U6RShlKX0sRT1mdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGEscyxjLHU9cCh0LCJudW1iZXIiKTtpZihoKHUpKXRocm93IG5ldyBDKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIG51bWJlciIpO2lmKCJzdHJpbmciPT10eXBlb2YgdSYmdS5sZW5ndGg+MilpZih1PV8odSksZT1PKHUsMCksNDM9PT1lfHw0NT09PWUpe2lmKG49Tyh1LDIpLDg4PT09bnx8MTIwPT09bilyZXR1cm4gTmFOfWVsc2UgaWYoNDg9PT1lKXtzd2l0Y2goTyh1LDEpKXtjYXNlIDY2OmNhc2UgOTg6cj0yLGk9NDk7YnJlYWs7Y2FzZSA3OTpjYXNlIDExMTpyPTgsaT01NTticmVhaztkZWZhdWx0OnJldHVybit1fWZvcihvPVQodSwyKSxhPW8ubGVuZ3RoLHM9MDtzPGE7cysrKWlmKGM9TyhvLHMpLGM8NDh8fGM+aSlyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludChvLHIpfXJldHVybit1fSxqPXUodywhUygiIDBvMSIpfHwhUygiMGIxIil8fFMoIisweDEiKSksTT1mdW5jdGlvbih0KXtyZXR1cm4gZChrLHQpJiZ2KChmdW5jdGlvbigpe3kodCl9KSl9LEk9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDwxPzA6UyhBKHQpKTtyZXR1cm4gTSh0aGlzKT9mKE9iamVjdChlKSx0aGlzLEkpOmV9O0kucHJvdG90eXBlPWssaiYmIWkmJihrLmNvbnN0cnVjdG9yPUkpLHIoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCx3cmFwOiEwLGZvcmNlZDpqfSx7TnVtYmVyOkl9KTt2YXIgUD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbixyPW8/ZyhlKToiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIsaXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIscGFyc2VGbG9hdCxwYXJzZUludCxmcm9tU3RyaW5nLHJhbmdlIi5zcGxpdCgiLCIpLGk9MDtyLmxlbmd0aD5pO2krKylsKGUsbj1yW2ldKSYmIWwodCxuKSYmYih0LG4sbShlLG4pKX07aSYmeCYmUChzW3ddLHgpLChqfHxpKSYmUChzW3ddLFMpfSxhYTFmOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiODNhYiIpLGk9bigiZDAzOSIpLG89bigiODI1YSIpLGE9bigiZTM5MSIpLHM9RXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLGM9aSgoZnVuY3Rpb24oKXtpZihyKXt2YXIgdD1PYmplY3QuY3JlYXRlKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwibmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzPT09dH19KSk7aWYoInRydWUiIT09cy5jYWxsKHQpKXJldHVybiEwfXJldHVybiIyOiAxIiE9PXMuY2FsbCh7bWVzc2FnZToxLG5hbWU6Mn0pfHwiRXJyb3IiIT09cy5jYWxsKHt9KX0pKTt0LmV4cG9ydHM9Yz9mdW5jdGlvbigpe3ZhciB0PW8odGhpcyksZT1hKHQubmFtZSwiRXJyb3IiKSxuPWEodC5tZXNzYWdlKTtyZXR1cm4gZT9uP2UrIjogIituOmU6bn06c30sYWIxMzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImI2MjIiKSxpPXIoIm1hdGNoIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPS8uLzt0cnl7Ii8uLyJbdF0oZSl9Y2F0Y2gobil7dHJ5e3JldHVybiBlW2ldPSExLCIvLi8iW3RdKGUpfWNhdGNoKHIpe319cmV0dXJuITF9fSxhYjM2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiODYxZCIpLGk9bigiOTExMiIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3IoZSkmJiJjYXVzZSJpbiBlJiZpKHQsImNhdXNlIixlLmNhdXNlKX19LGFiNDM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJjNjViIiksbz1uKCI1OWVkIiksYT1uKCI4MjVhIikscz1uKCI0NmM0IiksYz1uKCJjNWNjIiksdT1uKCI5YmRkIiksbD1uKCIyYTYyIiksZj1uKCIyYmFhIiksZD1uKCJmOTlmIiksaD1uKCJjNDMwIikscD0haCYmIWYoIm1hcCIsKGZ1bmN0aW9uKCl7fSkpLHY9IWgmJiFwJiZkKCJtYXAiLFR5cGVFcnJvciksZz1ofHxwfHx2LG09YygoZnVuY3Rpb24oKXt2YXIgdD10aGlzLml0ZXJhdG9yLGU9YShpKHRoaXMubmV4dCx0KSksbj10aGlzLmRvbmU9ISFlLmRvbmU7aWYoIW4pcmV0dXJuIHUodCx0aGlzLm1hcHBlcixbZS52YWx1ZSx0aGlzLmNvdW50ZXIrK10sITApfSkpO3Ioe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmd9LHttYXA6ZnVuY3Rpb24odCl7YSh0aGlzKTt0cnl7byh0KX1jYXRjaChlKXtsKHRoaXMsInRocm93IixlKX1yZXR1cm4gdj9pKHYsdGhpcyx0KTpuZXcgbShzKHRoaXMpLHttYXBwZXI6dH0pfX0pfSxhYzFmOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiOTI2MyIpO3Ioe3RhcmdldDoiUmVnRXhwIixwcm90bzohMCxmb3JjZWQ6Ly4vLmV4ZWMhPT1pfSx7ZXhlYzppfSl9LGFjYWM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlMzMwIiksaT1uKCI2OTY0Iiksbz1uKCJmMTgzIikuZ2V0V2Vha0RhdGEsYT1uKCIxOWFhIikscz1uKCI4MjVhIiksYz1uKCI3MjM0IiksdT1uKCI4NjFkIiksbD1uKCIyMjY2IiksZj1uKCJiNzI3IiksZD1uKCIxYTJkIiksaD1uKCI2OWYzIikscD1oLnNldCx2PWguZ2V0dGVyRm9yLGc9Zi5maW5kLG09Zi5maW5kSW5kZXgsYj1yKFtdLnNwbGljZSkseT0wLF89ZnVuY3Rpb24odCl7cmV0dXJuIHQuZnJvemVufHwodC5mcm96ZW49bmV3IHcpfSx3PWZ1bmN0aW9uKCl7dGhpcy5lbnRyaWVzPVtdfSxTPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGcodC5lbnRyaWVzLChmdW5jdGlvbih0KXtyZXR1cm4gdFswXT09PWV9KSl9O3cucHJvdG90eXBlPXtnZXQ6ZnVuY3Rpb24odCl7dmFyIGU9Uyh0aGlzLHQpO2lmKGUpcmV0dXJuIGVbMV19LGhhczpmdW5jdGlvbih0KXtyZXR1cm4hIVModGhpcyx0KX0sc2V0OmZ1bmN0aW9uKHQsZSl7dmFyIG49Uyh0aGlzLHQpO24/blsxXT1lOnRoaXMuZW50cmllcy5wdXNoKFt0LGVdKX0sZGVsZXRlOmZ1bmN0aW9uKHQpe3ZhciBlPW0odGhpcy5lbnRyaWVzLChmdW5jdGlvbihlKXtyZXR1cm4gZVswXT09PXR9KSk7cmV0dXJufmUmJmIodGhpcy5lbnRyaWVzLGUsMSksISF+ZX19LHQuZXhwb3J0cz17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24odCxlLG4scil7dmFyIGY9dCgoZnVuY3Rpb24odCxpKXthKHQsaCkscCh0LHt0eXBlOmUsaWQ6eSsrLGZyb3plbjpudWxsfSksYyhpKXx8bChpLHRbcl0se3RoYXQ6dCxBU19FTlRSSUVTOm59KX0pKSxoPWYucHJvdG90eXBlLGc9dihlKSxtPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1nKHQpLGk9byhzKGUpLCEwKTtyZXR1cm4hMD09PWk/XyhyKS5zZXQoZSxuKTppW3IuaWRdPW4sdH07cmV0dXJuIGkoaCx7ZGVsZXRlOmZ1bmN0aW9uKHQpe3ZhciBlPWcodGhpcyk7aWYoIXUodCkpcmV0dXJuITE7dmFyIG49byh0KTtyZXR1cm4hMD09PW4/XyhlKVsiZGVsZXRlIl0odCk6biYmZChuLGUuaWQpJiZkZWxldGUgbltlLmlkXX0saGFzOmZ1bmN0aW9uKHQpe3ZhciBlPWcodGhpcyk7aWYoIXUodCkpcmV0dXJuITE7dmFyIG49byh0KTtyZXR1cm4hMD09PW4/XyhlKS5oYXModCk6biYmZChuLGUuaWQpfX0pLGkoaCxuP3tnZXQ6ZnVuY3Rpb24odCl7dmFyIGU9Zyh0aGlzKTtpZih1KHQpKXt2YXIgbj1vKHQpO2lmKCEwPT09bilyZXR1cm4gXyhlKS5nZXQodCk7aWYobilyZXR1cm4gbltlLmlkXX19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiBtKHRoaXMsdCxlKX19OnthZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIG0odGhpcyx0LCEwKX19KSxmfX19LGFjZDg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCI3ZTEyIik7cih7Z2xvYmFsOiEwLGZvcmNlZDpwYXJzZUZsb2F0IT09aX0se3BhcnNlRmxvYXQ6aX0pfSxhY2U0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiNDYyNSIpLG89bigiZDAzOSIpLGE9bigiNjIxYSIpLHM9bigiODI1YSIpLGM9bigiMjNjYiIpLHU9bigiNTBjNCIpLGw9YS5BcnJheUJ1ZmZlcixmPWEuRGF0YVZpZXcsZD1mLnByb3RvdHlwZSxoPWkobC5wcm90b3R5cGUuc2xpY2UpLHA9aShkLmdldFVpbnQ4KSx2PWkoZC5zZXRVaW50OCksZz1vKChmdW5jdGlvbigpe3JldHVybiFuZXcgbCgyKS5zbGljZSgxLHZvaWQgMCkuYnl0ZUxlbmd0aH0pKTtyKHt0YXJnZXQ6IkFycmF5QnVmZmVyIixwcm90bzohMCx1bnNhZmU6ITAsZm9yY2VkOmd9LHtzbGljZTpmdW5jdGlvbih0LGUpe2lmKGgmJnZvaWQgMD09PWUpcmV0dXJuIGgocyh0aGlzKSx0KTt2YXIgbj1zKHRoaXMpLmJ5dGVMZW5ndGgscj1jKHQsbiksaT1jKHZvaWQgMD09PWU/bjplLG4pLG89bmV3IGwodShpLXIpKSxhPW5ldyBmKHRoaXMpLGQ9bmV3IGYobyksZz0wO3doaWxlKHI8aSl2KGQsZysrLHAoYSxyKyspKTtyZXR1cm4gb319KX0sYWQ2ZDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjgyNWEiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1yKHRoaXMpLGU9IiI7cmV0dXJuIHQuaGFzSW5kaWNlcyYmKGUrPSJkIiksdC5nbG9iYWwmJihlKz0iZyIpLHQuaWdub3JlQ2FzZSYmKGUrPSJpIiksdC5tdWx0aWxpbmUmJihlKz0ibSIpLHQuZG90QWxsJiYoZSs9InMiKSx0LnVuaWNvZGUmJihlKz0idSIpLHQudW5pY29kZVNldHMmJihlKz0idiIpLHQuc3RpY2t5JiYoZSs9InkiKSxlfX0sYWRkYjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImYzNmEiKSxpPU1hdGguZmxvb3Isbz1mdW5jdGlvbih0LGUpe3ZhciBuPXQubGVuZ3RoO2lmKG48OCl7dmFyIGEscyxjPTE7d2hpbGUoYzxuKXtzPWMsYT10W2NdO3doaWxlKHMmJmUodFtzLTFdLGEpPjApdFtzXT10Wy0tc107cyE9PWMrKyYmKHRbc109YSl9fWVsc2V7dmFyIHU9aShuLzIpLGw9byhyKHQsMCx1KSxlKSxmPW8ocih0LHUpLGUpLGQ9bC5sZW5ndGgsaD1mLmxlbmd0aCxwPTAsdj0wO3doaWxlKHA8ZHx8djxoKXRbcCt2XT1wPGQmJnY8aD9lKGxbcF0sZlt2XSk8PTA/bFtwKytdOmZbdisrXTpwPGQ/bFtwKytdOmZbdisrXX1yZXR1cm4gdH07dC5leHBvcnRzPW99LGFkZTM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PW8sbigiN2E4MiIpO3ZhciByPWkobigiYTM4ZSIpKTtmdW5jdGlvbiBpKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1mdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4oZT0oMCxyLmRlZmF1bHQpKGUpKWluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bix0fX0sYWU5MzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByLGksbyxhPW4oImQwMzkiKSxzPW4oIjE2MjYiKSxjPW4oIjg2MWQiKSx1PW4oIjdjNzMiKSxsPW4oImUxNjMiKSxmPW4oImNiMmQiKSxkPW4oImI2MjIiKSxoPW4oImM0MzAiKSxwPWQoIml0ZXJhdG9yIiksdj0hMTtbXS5rZXlzJiYobz1bXS5rZXlzKCksIm5leHQiaW4gbz8oaT1sKGwobykpLGkhPT1PYmplY3QucHJvdG90eXBlJiYocj1pKSk6dj0hMCk7dmFyIGc9IWMocil8fGEoKGZ1bmN0aW9uKCl7dmFyIHQ9e307cmV0dXJuIHJbcF0uY2FsbCh0KSE9PXR9KSk7Zz9yPXt9OmgmJihyPXUocikpLHMocltwXSl8fGYocixwLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLHQuZXhwb3J0cz17SXRlcmF0b3JQcm90b3R5cGU6cixCVUdHWV9TQUZBUklfSVRFUkFUT1JTOnZ9fSxhZWIwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiOWJmMiIpLmY7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtuIGluIHR8fHIodCxuLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVbbl19LHNldDpmdW5jdGlvbih0KXtlW25dPXR9fSl9fSxhZWQ5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiODNhYiIpLGk9bigiZDAzOSIpO3QuZXhwb3J0cz1yJiZpKChmdW5jdGlvbigpe3JldHVybiA0MiE9PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSgoZnVuY3Rpb24oKXt9KSwicHJvdG90eXBlIix7dmFsdWU6NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGV9KSl9LGFmNTA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD1vLG4oIjgxNzIiKSxuKCJkOWUyIiksbigiZDQwMSIpLG4oImVmZWMiKSxuKCJhOWUzIik7dmFyIHI9aShuKCI1M2NhIikpO2Z1bmN0aW9uIGkodCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fWZ1bmN0aW9uIG8odCxlKXtpZigib2JqZWN0IiE9KDAsci5kZWZhdWx0KSh0KXx8IXQpcmV0dXJuIHQ7dmFyIG49dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciBpPW4uY2FsbCh0LGV8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPSgwLHIuZGVmYXVsdCkoaSkpcmV0dXJuIGk7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHQpfX0sYjA0MTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjAwZWUiKSxpPW4oImY1ZGYiKTt0LmV4cG9ydHM9cj97fS50b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0ICIraSh0aGlzKSsiXSJ9fSxiMzlhOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiY2ZlOSIpLGk9bigiMmJhNCIpLG89bigiZWJiNSIpLGE9bigiZDAzOSIpLHM9bigiZjM2YSIpLGM9ci5JbnQ4QXJyYXksdT1vLmFUeXBlZEFycmF5LGw9by5leHBvcnRUeXBlZEFycmF5TWV0aG9kLGY9W10udG9Mb2NhbGVTdHJpbmcsZD0hIWMmJmEoKGZ1bmN0aW9uKCl7Zi5jYWxsKG5ldyBjKDEpKX0pKSxoPWEoKGZ1bmN0aW9uKCl7cmV0dXJuWzEsMl0udG9Mb2NhbGVTdHJpbmcoKSE9PW5ldyBjKFsxLDJdKS50b0xvY2FsZVN0cmluZygpfSkpfHwhYSgoZnVuY3Rpb24oKXtjLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZy5jYWxsKFsxLDJdKX0pKTtsKCJ0b0xvY2FsZVN0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGkoZixkP3ModSh0aGlzKSk6dSh0aGlzKSxzKGFyZ3VtZW50cykpfSksaCl9LGI0MmU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1NYXRoLmNlaWwsaT1NYXRoLmZsb29yO3QuZXhwb3J0cz1NYXRoLnRydW5jfHxmdW5jdGlvbih0KXt2YXIgZT0rdDtyZXR1cm4oZT4wP2k6cikoZSl9fSxiNGJjOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZGMxOSIpLGk9bigiY2IyNyIpLmhhcyxvPW4oIjhlMTYiKSxhPW4oIjdmNjUiKSxzPW4oIjM4NGYiKSxjPW4oIjUzODgiKSx1PW4oIjJhNjIiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9cih0aGlzKSxuPWEodCk7aWYobyhlKTw9bi5zaXplKXJldHVybiExIT09cyhlLChmdW5jdGlvbih0KXtpZihuLmluY2x1ZGVzKHQpKXJldHVybiExfSksITApO3ZhciBsPW4uZ2V0SXRlcmF0b3IoKTtyZXR1cm4hMSE9PWMobCwoZnVuY3Rpb24odCl7aWYoaShlLHQpKXJldHVybiB1KGwsIm5vcm1hbCIsITEpfSkpfX0sYjRmODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImQwNjYiKSxvPW4oIjFhMmQiKSxhPW4oIjU3N2UiKSxzPW4oIjU2OTIiKSxjPW4oIjBiNDMiKSx1PXMoInN0cmluZy10by1zeW1ib2wtcmVnaXN0cnkiKSxsPXMoInN5bWJvbC10by1zdHJpbmctcmVnaXN0cnkiKTtyKHt0YXJnZXQ6IlN5bWJvbCIsc3RhdDohMCxmb3JjZWQ6IWN9LHtmb3I6ZnVuY3Rpb24odCl7dmFyIGU9YSh0KTtpZihvKHUsZSkpcmV0dXJuIHVbZV07dmFyIG49aSgiU3ltYm9sIikoZSk7cmV0dXJuIHVbZV09bixsW25dPWUsbn19KX0sYjU3NTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByLGksbyxhLHMsYz1uKCJjZmU5IiksdT1uKCIxNTdhIiksbD1uKCIwMzY2IiksZj1uKCIyY2Y0Iikuc2V0LGQ9bigiMDFiNCIpLGg9bigiNTJjOCIpLHA9bigiZWJjMSIpLHY9bigiZWM4NyIpLGc9bigiOWFkYyIpLG09Yy5NdXRhdGlvbk9ic2VydmVyfHxjLldlYktpdE11dGF0aW9uT2JzZXJ2ZXIsYj1jLmRvY3VtZW50LHk9Yy5wcm9jZXNzLF89Yy5Qcm9taXNlLHc9dSgicXVldWVNaWNyb3Rhc2siKTtpZighdyl7dmFyIFM9bmV3IGQseD1mdW5jdGlvbigpe3ZhciB0LGU7ZyYmKHQ9eS5kb21haW4pJiZ0LmV4aXQoKTt3aGlsZShlPVMuZ2V0KCkpdHJ5e2UoKX1jYXRjaChuKXt0aHJvdyBTLmhlYWQmJnIoKSxufXQmJnQuZW50ZXIoKX07aHx8Z3x8dnx8IW18fCFiPyFwJiZfJiZfLnJlc29sdmU/KGE9Xy5yZXNvbHZlKHZvaWQgMCksYS5jb25zdHJ1Y3Rvcj1fLHM9bChhLnRoZW4sYSkscj1mdW5jdGlvbigpe3MoeCl9KTpnP3I9ZnVuY3Rpb24oKXt5Lm5leHRUaWNrKHgpfTooZj1sKGYsYykscj1mdW5jdGlvbigpe2YoeCl9KTooaT0hMCxvPWIuY3JlYXRlVGV4dE5vZGUoIiIpLG5ldyBtKHgpLm9ic2VydmUobyx7Y2hhcmFjdGVyRGF0YTohMH0pLHI9ZnVuY3Rpb24oKXtvLmRhdGE9aT0haX0pLHc9ZnVuY3Rpb24odCl7Uy5oZWFkfHxyKCksUy5hZGQodCl9fXQuZXhwb3J0cz13fSxiNWRiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiY2ZlOSIpLGk9ci5uYXZpZ2F0b3Isbz1pJiZpLnVzZXJBZ2VudDt0LmV4cG9ydHM9bz9TdHJpbmcobyk6IiJ9LGI2MjA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjZmU5IiksaT1uKCI3MjgyIiksbz1uKCJjNmI2IiksYT1yLkFycmF5QnVmZmVyLHM9ci5UeXBlRXJyb3I7dC5leHBvcnRzPWEmJmkoYS5wcm90b3R5cGUsImJ5dGVMZW5ndGgiLCJnZXQiKXx8ZnVuY3Rpb24odCl7aWYoIkFycmF5QnVmZmVyIiE9PW8odCkpdGhyb3cgbmV3IHMoIkFycmF5QnVmZmVyIGV4cGVjdGVkIik7cmV0dXJuIHQuYnl0ZUxlbmd0aH19LGI2MjI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjZmU5IiksaT1uKCI1NjkyIiksbz1uKCIxYTJkIiksYT1uKCI5MGUzIikscz1uKCIwNGY4IiksYz1uKCJmZGJmIiksdT1yLlN5bWJvbCxsPWkoIndrcyIpLGY9Yz91WyJmb3IiXXx8dTp1JiZ1LndpdGhvdXRTZXR0ZXJ8fGE7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvKGwsdCl8fChsW3RdPXMmJm8odSx0KT91W3RdOmYoIlN5bWJvbC4iK3QpKSxsW3RdfX0sYjY0YjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oIjdiMGIiKSxvPW4oImRmNzUiKSxhPW4oImQwMzkiKSxzPWEoKGZ1bmN0aW9uKCl7bygxKX0pKTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6c30se2tleXM6ZnVuY3Rpb24odCl7cmV0dXJuIG8oaSh0KSl9fSl9LGI2NGU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyYTYyIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGk9dC5sZW5ndGgtMTtpPj0wO2ktLSlpZih2b2lkIDAhPT10W2ldKXRyeXtuPXIodFtpXS5pdGVyYXRvcixlLG4pfWNhdGNoKG8pe2U9InRocm93IixuPW99aWYoInRocm93Ij09PWUpdGhyb3cgbjtyZXR1cm4gbn19LGI2ZjM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI0MThmIil9LGI3Mjc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIwMzY2IiksaT1uKCJlMzMwIiksbz1uKCI0NGFkIiksYT1uKCI3YjBiIikscz1uKCIwN2ZhIiksYz1uKCI2NWYwIiksdT1pKFtdLnB1c2gpLGw9ZnVuY3Rpb24odCl7dmFyIGU9MT09PXQsbj0yPT09dCxpPTM9PT10LGw9ND09PXQsZj02PT09dCxkPTc9PT10LGg9NT09PXR8fGY7cmV0dXJuIGZ1bmN0aW9uKHAsdixnLG0pe2Zvcih2YXIgYix5LF89YShwKSx3PW8oXyksUz1zKHcpLHg9cih2LGcpLGs9MCxDPW18fGMsVD1lP0MocCxTKTpufHxkP0MocCwwKTp2b2lkIDA7Uz5rO2srKylpZigoaHx8ayBpbiB3KSYmKGI9d1trXSx5PXgoYixrLF8pLHQpKWlmKGUpVFtrXT15O2Vsc2UgaWYoeSlzd2l0Y2godCl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4gYjtjYXNlIDY6cmV0dXJuIGs7Y2FzZSAyOnUoVCxiKX1lbHNlIHN3aXRjaCh0KXtjYXNlIDQ6cmV0dXJuITE7Y2FzZSA3OnUoVCxiKX1yZXR1cm4gZj8tMTppfHxsP2w6VH19O3QuZXhwb3J0cz17Zm9yRWFjaDpsKDApLG1hcDpsKDEpLGZpbHRlcjpsKDIpLHNvbWU6bCgzKSxldmVyeTpsKDQpLGZpbmQ6bCg1KSxmaW5kSW5kZXg6bCg2KSxmaWx0ZXJSZWplY3Q6bCg3KX19LGI3ZWY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJjZmU5Iiksbz1uKCJkMDY2IiksYT1uKCI1YzZjIikscz1uKCI5YmYyIikuZixjPW4oIjFhMmQiKSx1PW4oIjE5YWEiKSxsPW4oIjcxNTYiKSxmPW4oImUzOTEiKSxkPW4oImNmOTgiKSxoPW4oIjBkMjYiKSxwPW4oIjgzYWIiKSx2PW4oImM0MzAiKSxnPSJET01FeGNlcHRpb24iLG09bygiRXJyb3IiKSxiPW8oZykseT1mdW5jdGlvbigpe3UodGhpcyxfKTt2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9Zih0PDE/dm9pZCAwOmFyZ3VtZW50c1swXSksbj1mKHQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdLCJFcnJvciIpLHI9bmV3IGIoZSxuKSxpPW5ldyBtKGUpO3JldHVybiBpLm5hbWU9ZyxzKHIsInN0YWNrIixhKDEsaChpLnN0YWNrLDEpKSksbChyLHRoaXMseSkscn0sXz15LnByb3RvdHlwZT1iLnByb3RvdHlwZSx3PSJzdGFjayJpbiBuZXcgbShnKSxTPSJzdGFjayJpbiBuZXcgYigxLDIpLHg9YiYmcCYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGcpLGs9ISF4JiYhKHgud3JpdGFibGUmJnguY29uZmlndXJhYmxlKSxDPXcmJiFrJiYhUztyKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOnZ8fEN9LHtET01FeGNlcHRpb246Qz95OmJ9KTt2YXIgVD1vKGcpLE89VC5wcm90b3R5cGU7aWYoTy5jb25zdHJ1Y3RvciE9PVQpZm9yKHZhciBBIGluIHZ8fHMoTywiY29uc3RydWN0b3IiLGEoMSxUKSksZClpZihjKGQsQSkpe3ZhciBFPWRbQV0saj1FLnM7YyhULGopfHxzKFQsaixhKDYsRS5jKSl9fSxiODQ4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiY2ZlOSIpLG89bigiZTMzMCIpLGE9bigiNmIzNyIpLHM9bigiMjAwNSIpLGM9bygxLjEudG9TdHJpbmcpLHU9aS5VaW50OEFycmF5LGw9IXV8fCF1LnByb3RvdHlwZS50b0hleHx8IWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PW5ldyB1KFsyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSk7cmV0dXJuImZmZmZmZmZmZmZmZmZmZmYiPT09dC50b0hleCgpfWNhdGNoKGUpe3JldHVybiExfX0oKTt1JiZyKHt0YXJnZXQ6IlVpbnQ4QXJyYXkiLHByb3RvOiEwLGZvcmNlZDpsfSx7dG9IZXg6ZnVuY3Rpb24oKXthKHRoaXMpLHModGhpcy5idWZmZXIpO2Zvcih2YXIgdD0iIixlPTAsbj10aGlzLmxlbmd0aDtlPG47ZSsrKXt2YXIgcj1jKHRoaXNbZV0sMTYpO3QrPTE9PT1yLmxlbmd0aD8iMCIrcjpyfXJldHVybiB0fX0pfSxiOTE3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5IixpPXIrIisvIixvPXIrIi1fIixhPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT17fSxuPTA7bjw2NDtuKyspZVt0LmNoYXJBdChuKV09bjtyZXR1cm4gZX07dC5leHBvcnRzPXtpMmM6aSxjMmk6YShpKSxpMmNVcmw6byxjMmlVcmw6YShvKX19LGI5ODA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkMDM5IiksaT1uKCI1YzZjIik7dC5leHBvcnRzPSFyKChmdW5jdGlvbigpe3ZhciB0PW5ldyBFcnJvcigiYSIpO3JldHVybiEoInN0YWNrImluIHQpfHwoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInN0YWNrIixpKDEsNykpLDchPT10LnN0YWNrKX0pKX0sYmIyZjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImQwMzkiKTt0LmV4cG9ydHM9IXIoKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5pc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSl9KSl9LGJjYmY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJmNWRmIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCk7cmV0dXJuIkJpZ0ludDY0QXJyYXkiPT09ZXx8IkJpZ1VpbnQ2NEFycmF5Ij09PWV9fSxiZThlOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZmMxYiIpLGk9MS4xOTIwOTI4OTU1MDc4MTI1ZS03LG89MzQwMjgyMzQ2NjM4NTI4ODZlMjIsYT0xMTc1NDk0MzUwODIyMjg3NWUtNTQ7dC5leHBvcnRzPU1hdGguZnJvdW5kfHxmdW5jdGlvbih0KXtyZXR1cm4gcih0LGksbyxhKX19LGJlZTI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PWEsbigiN2E4MiIpO3ZhciByPWkobigiYTM4ZSIpKTtmdW5jdGlvbiBpKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBpPWVbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwoMCxyLmRlZmF1bHQpKGkua2V5KSxpKX19ZnVuY3Rpb24gYSh0LGUsbil7cmV0dXJuIGUmJm8odC5wcm90b3R5cGUsZSksbiYmbyh0LG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHR9fSxiZjE5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiYzY1YiIpO3Ioe3RhcmdldDoiVVJMIixwcm90bzohMCxlbnVtZXJhYmxlOiEwfSx7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJuIGkoVVJMLnByb3RvdHlwZS50b1N0cmluZyx0aGlzKX19KX0sYzA0ZTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImM2NWIiKSxpPW4oIjg2MWQiKSxvPW4oImQ5YjUiKSxhPW4oImRjNGEiKSxzPW4oIjQ4NWEiKSxjPW4oImI2MjIiKSx1PVR5cGVFcnJvcixsPWMoInRvUHJpbWl0aXZlIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoIWkodCl8fG8odCkpcmV0dXJuIHQ7dmFyIG4sYz1hKHQsbCk7aWYoYyl7aWYodm9pZCAwPT09ZSYmKGU9ImRlZmF1bHQiKSxuPXIoYyx0LGUpLCFpKG4pfHxvKG4pKXJldHVybiBuO3Rocm93IG5ldyB1KCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX1yZXR1cm4gdm9pZCAwPT09ZSYmKGU9Im51bWJlciIpLHModCxlKX19LGMxNGY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD1vLG4oImE0ZDMiKSxuKCJlMDFhIiksbigiZDllMiIpLG4oImQ0MDEiKSxuKCIzNDEwIiksbigiMTMxYSIpLG4oImQzYjciKTt2YXIgcj1pKG4oIjhhNGYiKSk7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19ZnVuY3Rpb24gbygpewovKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2JhYmVsL2JhYmVsL2Jsb2IvbWFpbi9wYWNrYWdlcy9iYWJlbC1oZWxwZXJzL0xJQ0VOU0UgKi8KdmFyIHQsbixpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGMoZSxpLG8sYSl7dmFyIHM9aSYmaS5wcm90b3R5cGUgaW5zdGFuY2VvZiBsP2k6bCxjPU9iamVjdC5jcmVhdGUocy5wcm90b3R5cGUpO3JldHVybigwLHIuZGVmYXVsdCkoYywiX2ludm9rZSIsZnVuY3Rpb24oZSxyLGkpe3ZhciBvLGEscyxjPTAsbD1pfHxbXSxmPSExLGQ9e3A6MCxuOjAsdjp0LGE6aCxmOmguYmluZCh0LDQpLGQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbz1lLGE9MCxzPXQsZC5uPW4sdX19O2Z1bmN0aW9uIGgoZSxyKXtmb3IoYT1lLHM9cixuPTA7IWYmJmMmJiFpJiZuPGwubGVuZ3RoO24rKyl7dmFyIGksbz1sW25dLGg9ZC5wLHA9b1syXTtlPjM/KGk9cD09PXIpJiYocz1vWyhhPW9bNF0pPzU6KGE9MywzKV0sb1s0XT1vWzVdPXQpOm9bMF08PWgmJigoaT1lPDImJmg8b1sxXSk/KGE9MCxkLnY9cixkLm49b1sxXSk6aDxwJiYoaT1lPDN8fG9bMF0+cnx8cj5wKSYmKG9bNF09ZSxvWzVdPXIsZC5uPXAsYT0wKSl9aWYoaXx8ZT4xKXJldHVybiB1O3Rocm93IGY9ITAscn1yZXR1cm4gZnVuY3Rpb24oaSxsLHApe2lmKGM+MSl0aHJvdyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtmb3IoZiYmMT09PWwmJmgobCxwKSxhPWwscz1wOyhuPWE8Mj90OnMpfHwhZjspe298fChhP2E8Mz8oYT4xJiYoZC5uPS0xKSxoKGEscykpOmQubj1zOmQudj1zKTt0cnl7aWYoYz0yLG8pe2lmKGF8fChpPSJuZXh0Iiksbj1vW2ldKXtpZighKG49bi5jYWxsKG8scykpKXRocm93IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKTtpZighbi5kb25lKXJldHVybiBuO3M9bi52YWx1ZSxhPDImJihhPTApfWVsc2UgMT09PWEmJihuPW9bInJldHVybiJdKSYmbi5jYWxsKG8pLGE8MiYmKHM9VHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK2krIicgbWV0aG9kIiksYT0xKTtvPXR9ZWxzZSBpZigobj0oZj1kLm48MCk/czplLmNhbGwocixkKSkhPT11KWJyZWFrfWNhdGNoKG4pe289dCxhPTEscz1ufWZpbmFsbHl7Yz0xfX1yZXR1cm57dmFsdWU6bixkb25lOmZ9fX0oZSxvLGEpLCEwKSxjfXZhciB1PXt9O2Z1bmN0aW9uIGwoKXt9ZnVuY3Rpb24gZigpe31mdW5jdGlvbiBkKCl7fW49T2JqZWN0LmdldFByb3RvdHlwZU9mO3ZhciBoPVtdW2FdP24obihbXVthXSgpKSk6KCgwLHIuZGVmYXVsdCkobj17fSxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLG4pLHA9ZC5wcm90b3R5cGU9bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShoKTtmdW5jdGlvbiB2KHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZCk6KHQuX19wcm90b19fPWQsKDAsci5kZWZhdWx0KSh0LHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUocCksdH1yZXR1cm4gZi5wcm90b3R5cGU9ZCwoMCxyLmRlZmF1bHQpKHAsImNvbnN0cnVjdG9yIixkKSwoMCxyLmRlZmF1bHQpKGQsImNvbnN0cnVjdG9yIixmKSxmLmRpc3BsYXlOYW1lPSJHZW5lcmF0b3JGdW5jdGlvbiIsKDAsci5kZWZhdWx0KShkLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksKDAsci5kZWZhdWx0KShwKSwoMCxyLmRlZmF1bHQpKHAscywiR2VuZXJhdG9yIiksKDAsci5kZWZhdWx0KShwLGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksKDAsci5kZWZhdWx0KShwLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksKGUuZGVmYXVsdD1vPWZ1bmN0aW9uKCl7cmV0dXJue3c6YyxtOnZ9fSkoKX19LGMxOWY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJjZmU5Iiksbz1uKCI2MjFhIiksYT1uKCIyNjI2Iikscz0iQXJyYXlCdWZmZXIiLGM9b1tzXSx1PWlbc107cih7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDp1IT09Y30se0FycmF5QnVmZmVyOmN9KSxhKHMpfSxjMWExOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiYjRiYyIpLG89bigiZGFkMiIpLGE9IW8oImlzRGlzam9pbnRGcm9tIiwoZnVuY3Rpb24odCl7cmV0dXJuIXR9KSk7cih7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmF9LHtpc0Rpc2pvaW50RnJvbTppfSl9LGMxYWM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlYmI1IiksaT1uKCJiNzI3IikuZmlsdGVyLG89bigiMzBmMiIpLGE9ci5hVHlwZWRBcnJheSxzPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtzKCJmaWx0ZXIiLChmdW5jdGlvbih0KXt2YXIgZT1pKGEodGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCk7cmV0dXJuIG8odGhpcyxlKX0pKX0sYzIwZDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKSxpPW4oImQwMzkiKSxvPW4oImUzMzAiKSxhPW4oIjU3N2UiKSxzPW4oIjU4YTgiKS50cmltLGM9bigiNTg5OSIpLHU9ci5wYXJzZUludCxsPXIuU3ltYm9sLGY9bCYmbC5pdGVyYXRvcixkPS9eWystXT8weC9pLGg9byhkLmV4ZWMpLHA9OCE9PXUoYysiMDgiKXx8MjIhPT11KGMrIjB4MTYiKXx8ZiYmIWkoKGZ1bmN0aW9uKCl7dShPYmplY3QoZikpfSkpO3QuZXhwb3J0cz1wP2Z1bmN0aW9uKHQsZSl7dmFyIG49cyhhKHQpKTtyZXR1cm4gdShuLGU+Pj4wfHwoaChkLG4pPzE2OjEwKSl9OnV9LGMzNGQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7cmV0dXJuIHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtfWZ1bmN0aW9uIGkoKXtyZXR1cm4gdW5pLmdldFN5c3RlbUluZm9TeW5jKCl9bigiN2E4MiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLm9zPXIsZS5zeXM9aX0sYzM4ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oIjdhODIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXZvaWQgMDtlLmRlZmF1bHQ9e3RvYXN0OjEwMDkwLG5vTmV0d29yazoxMDA4MCxwb3B1cDoxMDA3NSxtYXNrOjEwMDcwLG5hdmJhcjo5ODAsdG9wVGlwczo5NzUsc3RpY2t5Ojk3MCxpbmRleExpc3RTdGlja3k6OTY1fX0sYzQzMDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz0hMX0sYzUxMzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oIjFhMmQiKSxvPW4oImQ5YjUiKSxhPW4oIjBkNTEiKSxzPW4oIjU2OTIiKSxjPW4oIjBiNDMiKSx1PXMoInN5bWJvbC10by1zdHJpbmctcmVnaXN0cnkiKTtyKHt0YXJnZXQ6IlN5bWJvbCIsc3RhdDohMCxmb3JjZWQ6IWN9LHtrZXlGb3I6ZnVuY3Rpb24odCl7aWYoIW8odCkpdGhyb3cgbmV3IFR5cGVFcnJvcihhKHQpKyIgaXMgbm90IGEgc3ltYm9sIik7aWYoaSh1LHQpKXJldHVybiB1W3RdfX0pfSxjNWNjOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYzY1YiIpLGk9bigiN2M3MyIpLG89bigiOTExMiIpLGE9bigiNjk2NCIpLHM9bigiYjYyMiIpLGM9bigiNjlmMyIpLHU9bigiZGM0YSIpLGw9bigiYWU5MyIpLkl0ZXJhdG9yUHJvdG90eXBlLGY9bigiNDc1NCIpLGQ9bigiMmE2MiIpLGg9bigiYjY0ZSIpLHA9cygidG9TdHJpbmdUYWciKSx2PSJJdGVyYXRvckhlbHBlciIsZz0iV3JhcEZvclZhbGlkSXRlcmF0b3IiLG09Im5vcm1hbCIsYj0idGhyb3ciLHk9Yy5zZXQsXz1mdW5jdGlvbih0KXt2YXIgZT1jLmdldHRlckZvcih0P2c6dik7cmV0dXJuIGEoaShsKSx7bmV4dDpmdW5jdGlvbigpe3ZhciBuPWUodGhpcyk7aWYodClyZXR1cm4gbi5uZXh0SGFuZGxlcigpO2lmKG4uZG9uZSlyZXR1cm4gZih2b2lkIDAsITApO3RyeXt2YXIgcj1uLm5leHRIYW5kbGVyKCk7cmV0dXJuIG4ucmV0dXJuSGFuZGxlclJlc3VsdD9yOmYocixuLmRvbmUpfWNhdGNoKGkpe3Rocm93IG4uZG9uZT0hMCxpfX0scmV0dXJuOmZ1bmN0aW9uKCl7dmFyIG49ZSh0aGlzKSxpPW4uaXRlcmF0b3I7aWYobi5kb25lPSEwLHQpe3ZhciBvPXUoaSwicmV0dXJuIik7cmV0dXJuIG8/cihvLGkpOmYodm9pZCAwLCEwKX1pZihuLmlubmVyKXRyeXtkKG4uaW5uZXIuaXRlcmF0b3IsbSl9Y2F0Y2goYSl7cmV0dXJuIGQoaSxiLGEpfWlmKG4ub3Blbkl0ZXJzKXRyeXtoKG4ub3Blbkl0ZXJzLG0pfWNhdGNoKGEpe3JldHVybiBkKGksYixhKX1yZXR1cm4gaSYmZChpLG0pLGYodm9pZCAwLCEwKX19KX0sdz1fKCEwKSxTPV8oITEpO28oUyxwLCJJdGVyYXRvciBIZWxwZXIiKSx0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPWZ1bmN0aW9uKHIsaSl7aT8oaS5pdGVyYXRvcj1yLml0ZXJhdG9yLGkubmV4dD1yLm5leHQpOmk9cixpLnR5cGU9ZT9nOnYsaS5yZXR1cm5IYW5kbGVyUmVzdWx0PSEhbixpLm5leHRIYW5kbGVyPXQsaS5jb3VudGVyPTAsaS5kb25lPSExLHkodGhpcyxpKX07cmV0dXJuIHIucHJvdG90eXBlPWU/dzpTLHJ9fSxjNjA3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiODNhYiIpLGk9bigiZmNlMyIpLG89bigiYzZiNiIpLGE9bigiZWRkMCIpLHM9bigiNjlmMyIpLmdldCxjPVJlZ0V4cC5wcm90b3R5cGUsdT1UeXBlRXJyb3I7ciYmaSYmYShjLCJkb3RBbGwiLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYodGhpcyE9PWMpe2lmKCJSZWdFeHAiPT09byh0aGlzKSlyZXR1cm4hIXModGhpcykuZG90QWxsO3Rocm93IG5ldyB1KCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsIFJlZ0V4cCByZXF1aXJlZCIpfX19KX0sYzYwZDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjFhMmQiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJihyKHQsInZhbHVlIil8fHIodCwid3JpdGFibGUiKSl9fSxjNjViOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNDBkNSIpLGk9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7dC5leHBvcnRzPXI/aS5iaW5kKGkpOmZ1bmN0aW9uKCl7cmV0dXJuIGkuYXBwbHkoaSxhcmd1bWVudHMpfX0sYzZiNjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImUzMzAiKSxpPXIoe30udG9TdHJpbmcpLG89cigiIi5zbGljZSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvKGkodCksOCwtMSl9fSxjNmNkOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYzQzMCIpLGk9bigiY2ZlOSIpLG89bigiNjM3NCIpLGE9Il9fY29yZS1qc19zaGFyZWRfXyIscz10LmV4cG9ydHM9aVthXXx8byhhLHt9KTsocy52ZXJzaW9uc3x8KHMudmVyc2lvbnM9W10pKS5wdXNoKHt2ZXJzaW9uOiIzLjQ1LjEiLG1vZGU6cj8icHVyZSI6Imdsb2JhbCIsY29weXJpZ2h0OiLCqSAyMDE0LTIwMjUgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkiLGxpY2Vuc2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuNDUuMS9MSUNFTlNFIixzb3VyY2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzIn0pfSxjNmQyOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiYzY1YiIpLG89bigiYzQzMCIpLGE9bigiNWU3NyIpLHM9bigiMTYyNiIpLGM9bigiZGNjMyIpLHU9bigiZTE2MyIpLGw9bigiZDJiYiIpLGY9bigiZDQ0ZSIpLGQ9bigiOTExMiIpLGg9bigiY2IyZCIpLHA9bigiYjYyMiIpLHY9bigiM2Y4YyIpLGc9bigiYWU5MyIpLG09YS5QUk9QRVIsYj1hLkNPTkZJR1VSQUJMRSx5PWcuSXRlcmF0b3JQcm90b3R5cGUsXz1nLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMsdz1wKCJpdGVyYXRvciIpLFM9ImtleXMiLHg9InZhbHVlcyIsaz0iZW50cmllcyIsQz1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sYSxwLGcsVCl7YyhuLGUsYSk7dmFyIE8sQSxFLGo9ZnVuY3Rpb24odCl7aWYodD09PXAmJkwpcmV0dXJuIEw7aWYoIV8mJnQmJnQgaW4gUClyZXR1cm4gUFt0XTtzd2l0Y2godCl7Y2FzZSBTOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzLHQpfTtjYXNlIHg6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMsdCl9O2Nhc2UgazpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4odGhpcyx0KX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMpfX0sTT1lKyIgSXRlcmF0b3IiLEk9ITEsUD10LnByb3RvdHlwZSwkPVBbd118fFBbIkBAaXRlcmF0b3IiXXx8cCYmUFtwXSxMPSFfJiYkfHxqKHApLFI9IkFycmF5Ij09PWUmJlAuZW50cmllc3x8JDtpZihSJiYoTz11KFIuY2FsbChuZXcgdCkpLE8hPT1PYmplY3QucHJvdG90eXBlJiZPLm5leHQmJihvfHx1KE8pPT09eXx8KGw/bChPLHkpOnMoT1t3XSl8fGgoTyx3LEMpKSxmKE8sTSwhMCwhMCksbyYmKHZbTV09QykpKSxtJiZwPT09eCYmJCYmJC5uYW1lIT09eCYmKCFvJiZiP2QoUCwibmFtZSIseCk6KEk9ITAsTD1mdW5jdGlvbigpe3JldHVybiBpKCQsdGhpcyl9KSkscClpZihBPXt2YWx1ZXM6aih4KSxrZXlzOmc/TDpqKFMpLGVudHJpZXM6aihrKX0sVClmb3IoRSBpbiBBKShffHxJfHwhKEUgaW4gUCkpJiZoKFAsRSxBW0VdKTtlbHNlIHIoe3RhcmdldDplLHByb3RvOiEwLGZvcmNlZDpffHxJfSxBKTtyZXR1cm4gbyYmIVR8fFBbd109PT1MfHxoKFAsdyxMLHtuYW1lOnB9KSx2W2VdPUwsQX19LGM3M2Q6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJjZmU5Iiksbz1uKCJlZGQwIiksYT1uKCI4M2FiIikscz1UeXBlRXJyb3IsYz1PYmplY3QuZGVmaW5lUHJvcGVydHksdT1pLnNlbGYhPT1pO3RyeXtpZihhKXt2YXIgbD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksInNlbGYiKTshdSYmbCYmbC5nZXQmJmwuZW51bWVyYWJsZXx8byhpLCJzZWxmIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGl9LHNldDpmdW5jdGlvbih0KXtpZih0aGlzIT09aSl0aHJvdyBuZXcgcygiSWxsZWdhbCBpbnZvY2F0aW9uIik7YyhpLCJzZWxmIix7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfWVsc2Ugcih7Z2xvYmFsOiEwLHNpbXBsZTohMCxmb3JjZWQ6dX0se3NlbGY6aX0pfWNhdGNoKGYpe319LGM3NDA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJiNzI3IikuZmluZEluZGV4LG89bigiNDRkMiIpLGE9ImZpbmRJbmRleCIscz0hMDthIGluW10mJkFycmF5KDEpW2FdKChmdW5jdGlvbigpe3M9ITF9KSkscih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOnN9LHtmaW5kSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxvKGEpfSxjOGJhOmZ1bmN0aW9uKHQsZSl7dmFyIG47bj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpO3RyeXtuPW58fG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfWNhdGNoKHIpeyJvYmplY3QiPT09dHlwZW9mIHdpbmRvdyYmKG49d2luZG93KX10LmV4cG9ydHM9bn0sYzhkMjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjVlNzciKS5QUk9QRVIsaT1uKCJkMDM5Iiksbz1uKCI1ODk5IiksYT0i4oCLwoXhoI4iO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaSgoZnVuY3Rpb24oKXtyZXR1cm4hIW9bdF0oKXx8YVt0XSgpIT09YXx8ciYmb1t0XS5uYW1lIT09dH0pKX19LGM5NzU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCI0NjI1Iiksbz1uKCI0ZDY0IikuaW5kZXhPZixhPW4oImE2NDAiKSxzPWkoW10uaW5kZXhPZiksYz0hIXMmJjEvcyhbMV0sMSwtMCk8MCx1PWN8fCFhKCJpbmRleE9mIik7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOnV9LHtpbmRleE9mOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3JldHVybiBjP3ModGhpcyx0LGUpfHwwOm8odGhpcyx0LGUpfX0pfSxjYTg0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZTMzMCIpLGk9bigiMWEyZCIpLG89bigiZmM2YSIpLGE9bigiNGQ2NCIpLmluZGV4T2Yscz1uKCJkMDEyIiksYz1yKFtdLnB1c2gpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLHI9byh0KSx1PTAsbD1bXTtmb3IobiBpbiByKSFpKHMsbikmJmkocixuKSYmYyhsLG4pO3doaWxlKGUubGVuZ3RoPnUpaShyLG49ZVt1KytdKSYmKH5hKGwsbil8fGMobCxuKSk7cmV0dXJuIGx9fSxjYTkxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZWJiNSIpLGk9bigiZDU4ZiIpLmxlZnQsbz1yLmFUeXBlZEFycmF5LGE9ci5leHBvcnRUeXBlZEFycmF5TWV0aG9kO2EoInJlZHVjZSIsKGZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIGkobyh0aGlzKSx0LGUsZT4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpfSxjYWFkOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiNGQ2NCIpLmluY2x1ZGVzLG89bigiZDAzOSIpLGE9bigiNDRkMiIpLHM9bygoZnVuY3Rpb24oKXtyZXR1cm4hQXJyYXkoMSkuaW5jbHVkZXMoKX0pKTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6c30se2luY2x1ZGVzOmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksYSgiaW5jbHVkZXMiKX0sY2IyNzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImUzMzAiKSxpPVNldC5wcm90b3R5cGU7dC5leHBvcnRzPXtTZXQ6U2V0LGFkZDpyKGkuYWRkKSxoYXM6cihpLmhhcykscmVtb3ZlOnIoaVsiZGVsZXRlIl0pLHByb3RvOml9fSxjYjJkOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMTYyNiIpLGk9bigiOWJmMiIpLG89bigiMTNkMiIpLGE9bigiNjM3NCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixzKXtzfHwocz17fSk7dmFyIGM9cy5lbnVtZXJhYmxlLHU9dm9pZCAwIT09cy5uYW1lP3MubmFtZTplO2lmKHIobikmJm8obix1LHMpLHMuZ2xvYmFsKWM/dFtlXT1uOmEoZSxuKTtlbHNle3RyeXtzLnVuc2FmZT90W2VdJiYoYz0hMCk6ZGVsZXRlIHRbZV19Y2F0Y2gobCl7fWM/dFtlXT1uOmkuZih0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6IXMubm9uQ29uZmlndXJhYmxlLHdyaXRhYmxlOiFzLm5vbldyaXRhYmxlfSl9cmV0dXJuIHR9fSxjYzEyOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiY2ZlOSIpLGk9bigiODYxZCIpLG89ci5kb2N1bWVudCxhPWkobykmJmkoby5jcmVhdGVFbGVtZW50KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGE/by5jcmVhdGVFbGVtZW50KHQpOnt9fX0sY2M5ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImM0MzAiKSxvPW4oIjQ3MzgiKS5DT05TVFJVQ1RPUixhPW4oImQyNTYiKSxzPW4oImQwNjYiKSxjPW4oIjE2MjYiKSx1PW4oImNiMmQiKSxsPWEmJmEucHJvdG90eXBlO2lmKHIoe3RhcmdldDoiUHJvbWlzZSIscHJvdG86ITAsZm9yY2VkOm8scmVhbDohMH0se2NhdGNoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLHQpfX0pLCFpJiZjKGEpKXt2YXIgZj1zKCJQcm9taXNlIikucHJvdG90eXBlWyJjYXRjaCJdO2xbImNhdGNoIl0hPT1mJiZ1KGwsImNhdGNoIixmLHt1bnNhZmU6ITB9KX19LGNjYTY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCI2MGRhIik7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsYXJpdHk6Mixmb3JjZWQ6T2JqZWN0LmFzc2lnbiE9PWl9LHthc3NpZ246aX0pfSxjZDI2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZWJiNSIpLGk9ci5hVHlwZWRBcnJheSxvPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxhPU1hdGguZmxvb3I7bygicmV2ZXJzZSIsKGZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLG49aShlKS5sZW5ndGgscj1hKG4vMiksbz0wO3doaWxlKG88cil0PWVbb10sZVtvKytdPWVbLS1uXSxlW25dPXQ7cmV0dXJuIGV9KSl9LGNkNWI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDA7dmFyIHI9IjEuOC44IjtlLmRlZmF1bHQ9e3Y6cix2ZXJzaW9uOnIsdHlwZTpbInByaW1hcnkiLCJzdWNjZXNzIiwiaW5mbyIsImVycm9yIiwid2FybmluZyJdfX0sY2RjZTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKSxpPW4oIjE2MjYiKSxvPXIuV2Vha01hcDt0LmV4cG9ydHM9aShvKSYmL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhvKSl9LGNkZjk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI4MjVhIiksaT1uKCI4NjFkIiksbz1uKCJmMDY5Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYocih0KSxpKGUpJiZlLmNvbnN0cnVjdG9yPT09dClyZXR1cm4gZTt2YXIgbj1vLmYodCksYT1uLnJlc29sdmU7cmV0dXJuIGEoZSksbi5wcm9taXNlfX0sY2Y5ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz17SW5kZXhTaXplRXJyb3I6e3M6IklOREVYX1NJWkVfRVJSIixjOjEsbToxfSxET01TdHJpbmdTaXplRXJyb3I6e3M6IkRPTVNUUklOR19TSVpFX0VSUiIsYzoyLG06MH0sSGllcmFyY2h5UmVxdWVzdEVycm9yOntzOiJISUVSQVJDSFlfUkVRVUVTVF9FUlIiLGM6MyxtOjF9LFdyb25nRG9jdW1lbnRFcnJvcjp7czoiV1JPTkdfRE9DVU1FTlRfRVJSIixjOjQsbToxfSxJbnZhbGlkQ2hhcmFjdGVyRXJyb3I6e3M6IklOVkFMSURfQ0hBUkFDVEVSX0VSUiIsYzo1LG06MX0sTm9EYXRhQWxsb3dlZEVycm9yOntzOiJOT19EQVRBX0FMTE9XRURfRVJSIixjOjYsbTowfSxOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcjp7czoiTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIixjOjcsbToxfSxOb3RGb3VuZEVycm9yOntzOiJOT1RfRk9VTkRfRVJSIixjOjgsbToxfSxOb3RTdXBwb3J0ZWRFcnJvcjp7czoiTk9UX1NVUFBPUlRFRF9FUlIiLGM6OSxtOjF9LEluVXNlQXR0cmlidXRlRXJyb3I6e3M6IklOVVNFX0FUVFJJQlVURV9FUlIiLGM6MTAsbToxfSxJbnZhbGlkU3RhdGVFcnJvcjp7czoiSU5WQUxJRF9TVEFURV9FUlIiLGM6MTEsbToxfSxTeW50YXhFcnJvcjp7czoiU1lOVEFYX0VSUiIsYzoxMixtOjF9LEludmFsaWRNb2RpZmljYXRpb25FcnJvcjp7czoiSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSIixjOjEzLG06MX0sTmFtZXNwYWNlRXJyb3I6e3M6Ik5BTUVTUEFDRV9FUlIiLGM6MTQsbToxfSxJbnZhbGlkQWNjZXNzRXJyb3I6e3M6IklOVkFMSURfQUNDRVNTX0VSUiIsYzoxNSxtOjF9LFZhbGlkYXRpb25FcnJvcjp7czoiVkFMSURBVElPTl9FUlIiLGM6MTYsbTowfSxUeXBlTWlzbWF0Y2hFcnJvcjp7czoiVFlQRV9NSVNNQVRDSF9FUlIiLGM6MTcsbToxfSxTZWN1cml0eUVycm9yOntzOiJTRUNVUklUWV9FUlIiLGM6MTgsbToxfSxOZXR3b3JrRXJyb3I6e3M6Ik5FVFdPUktfRVJSIixjOjE5LG06MX0sQWJvcnRFcnJvcjp7czoiQUJPUlRfRVJSIixjOjIwLG06MX0sVVJMTWlzbWF0Y2hFcnJvcjp7czoiVVJMX01JU01BVENIX0VSUiIsYzoyMSxtOjF9LFF1b3RhRXhjZWVkZWRFcnJvcjp7czoiUVVPVEFfRVhDRUVERURfRVJSIixjOjIyLG06MX0sVGltZW91dEVycm9yOntzOiJUSU1FT1VUX0VSUiIsYzoyMyxtOjF9LEludmFsaWROb2RlVHlwZUVycm9yOntzOiJJTlZBTElEX05PREVfVFlQRV9FUlIiLGM6MjQsbToxfSxEYXRhQ2xvbmVFcnJvcjp7czoiREFUQV9DTE9ORV9FUlIiLGM6MjUsbToxfX19LGNmZTk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24oZSl7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuTWF0aD09PU1hdGgmJnR9O3QuZXhwb3J0cz1uKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyl8fG4oIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyl8fG4oIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmKXx8bigib2JqZWN0Ij09dHlwZW9mIGUmJmUpfHxuKCJvYmplY3QiPT10eXBlb2YgdGhpcyYmdGhpcyl8fGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCl8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl9KS5jYWxsKHRoaXMsbigiYzhiYSIpKX0sZDAxMjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz17fX0sZDAzOTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2goZSl7cmV0dXJuITB9fX0sZDA2NjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKSxpPW4oIjE2MjYiKSxvPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpP3Q6dm9pZCAwfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP28oclt0XSk6clt0XSYmclt0XVtlXX19LGQxMzk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlYmI1IiksaT1uKCJiNzI3IikuZmluZCxvPXIuYVR5cGVkQXJyYXksYT1yLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7YSgiZmluZCIsKGZ1bmN0aW9uKHQpe3JldHVybiBpKG8odGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSl9LGQxZTc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Isbz1pJiYhci5jYWxsKHsxOjJ9LDEpO2UuZj1vP2Z1bmN0aW9uKHQpe3ZhciBlPWkodGhpcyx0KTtyZXR1cm4hIWUmJmUuZW51bWVyYWJsZX06cn0sZDI1NjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKTt0LmV4cG9ydHM9ci5Qcm9taXNlfSxkMjhiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZTA2NSIpO3IoIml0ZXJhdG9yIil9LGQyYmI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI3MjgyIiksaT1uKCI4NjFkIiksbz1uKCIxZDgwIiksYT1uKCIzYmJlIik7dC5leHBvcnRzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8KCJfX3Byb3RvX18iaW57fT9mdW5jdGlvbigpe3ZhciB0LGU9ITEsbj17fTt0cnl7dD1yKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIsInNldCIpLHQobixbXSksZT1uIGluc3RhbmNlb2YgQXJyYXl9Y2F0Y2gocyl7fXJldHVybiBmdW5jdGlvbihuLHIpe3JldHVybiBvKG4pLGEociksaShuKT8oZT90KG4scik6bi5fX3Byb3RvX189cixuKTpufX0oKTp2b2lkIDApfSxkM2I3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMDBlZSIpLGk9bigiY2IyZCIpLG89bigiYjA0MSIpO3J8fGkoT2JqZWN0LnByb3RvdHlwZSwidG9TdHJpbmciLG8se3Vuc2FmZTohMH0pfSxkNDAxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiY2IyZCIpLGk9bigiYWExZiIpLG89RXJyb3IucHJvdG90eXBlO28udG9TdHJpbmchPT1pJiZyKG8sInRvU3RyaW5nIixpKX0sZDQyOTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjA3ZmEiKSxpPW4oIjU5MjYiKSxvPVJhbmdlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGEpe3ZhciBzPXIodCksYz1pKG4pLHU9YzwwP3MrYzpjO2lmKHU+PXN8fHU8MCl0aHJvdyBuZXcgbygiSW5jb3JyZWN0IGluZGV4Iik7Zm9yKHZhciBsPW5ldyBlKHMpLGY9MDtmPHM7ZisrKWxbZl09Zj09PXU/YTp0W2ZdO3JldHVybiBsfX0sZDQ0ZTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjliZjIiKS5mLGk9bigiMWEyZCIpLG89bigiYjYyMiIpLGE9bygidG9TdHJpbmdUYWciKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3QmJiFuJiYodD10LnByb3RvdHlwZSksdCYmIWkodCxhKSYmcih0LGEse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTplfSl9fSxkNGVjOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfW4oIjdhODIiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PXIsbigiZDllMiIpLG4oImQ0MDEiKX0sZDU4ZjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjU5ZWQiKSxpPW4oIjdiMGIiKSxvPW4oIjQ0YWQiKSxhPW4oIjA3ZmEiKSxzPVR5cGVFcnJvcixjPSJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIix1PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4sdSxsKXt2YXIgZj1pKGUpLGQ9byhmKSxoPWEoZik7aWYocihuKSwwPT09aCYmdTwyKXRocm93IG5ldyBzKGMpO3ZhciBwPXQ/aC0xOjAsdj10Py0xOjE7aWYodTwyKXdoaWxlKDEpe2lmKHAgaW4gZCl7bD1kW3BdLHArPXY7YnJlYWt9aWYocCs9dix0P3A8MDpoPD1wKXRocm93IG5ldyBzKGMpfWZvcig7dD9wPj0wOmg+cDtwKz12KXAgaW4gZCYmKGw9bihsLGRbcF0scCxmKSk7cmV0dXJuIGx9fTt0LmV4cG9ydHM9e2xlZnQ6dSghMSkscmlnaHQ6dSghMCl9fSxkNWQ2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZWJiNSIpLGk9bigiYjcyNyIpLmZvckVhY2gsbz1yLmFUeXBlZEFycmF5LGE9ci5leHBvcnRUeXBlZEFycmF5TWV0aG9kO2EoImZvckVhY2giLChmdW5jdGlvbih0KXtpKG8odGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSl9LGQ2ZDY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYodDxlKXRocm93IG5ldyByKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpO3JldHVybiB0fX0sZDc4NDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oImFjMWYiKTt2YXIgcj1uKCJjNjViIiksaT1uKCJjYjJkIiksbz1uKCI5MjYzIiksYT1uKCJkMDM5Iikscz1uKCJiNjIyIiksYz1uKCI5MTEyIiksdT1zKCJzcGVjaWVzIiksbD1SZWdFeHAucHJvdG90eXBlO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixmKXt2YXIgZD1zKHQpLGg9IWEoKGZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGVbZF09ZnVuY3Rpb24oKXtyZXR1cm4gN30sNyE9PSIiW3RdKGUpfSkpLHA9aCYmIWEoKGZ1bmN0aW9uKCl7dmFyIGU9ITEsbj0vYS87cmV0dXJuInNwbGl0Ij09PXQmJihuPXt9LG4uY29uc3RydWN0b3I9e30sbi5jb25zdHJ1Y3Rvclt1XT1mdW5jdGlvbigpe3JldHVybiBufSxuLmZsYWdzPSIiLG5bZF09Ly4vW2RdKSxuLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZT0hMCxudWxsfSxuW2RdKCIiKSwhZX0pKTtpZighaHx8IXB8fG4pe3ZhciB2PS8uL1tkXSxnPWUoZCwiIlt0XSwoZnVuY3Rpb24odCxlLG4saSxhKXt2YXIgcz1lLmV4ZWM7cmV0dXJuIHM9PT1vfHxzPT09bC5leGVjP2gmJiFhP3tkb25lOiEwLHZhbHVlOnIodixlLG4saSl9Ontkb25lOiEwLHZhbHVlOnIodCxuLGUsaSl9Ontkb25lOiExfX0pKTtpKFN0cmluZy5wcm90b3R5cGUsdCxnWzBdKSxpKGwsZCxnWzFdKX1mJiZjKGxbZF0sInNoYW0iLCEwKX19LGQ3YTU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIik7dmFyIHI9bigiNGVhNCIpLmRlZmF1bHQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDAsbigiYzk3NSIpLG4oImQzYjciKTt2YXIgaT1yKG4oImQ0ZWMiKSksbz1yKG4oImJlZTIiKSksYT1yKG4oIjEzNGIiKSkscz1yKG4oImY2YTciKSksYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgZT10aGlzOygwLGkuZGVmYXVsdCkodGhpcyx0KSx0aGlzLmNvbmZpZz17YmFzZVVybDoiIixoZWFkZXI6e30sbWV0aG9kOiJQT1NUIixkYXRhVHlwZToianNvbiIscmVzcG9uc2VUeXBlOiJ0ZXh0IixzaG93TG9hZGluZzohMCxsb2FkaW5nVGV4dDoi6K+35rGC5LitLi4uIixsb2FkaW5nVGltZTo4MDAsdGltZXI6bnVsbCxvcmlnaW5hbERhdGE6ITEsbG9hZGluZ01hc2s6ITB9LHRoaXMuaW50ZXJjZXB0b3I9e3JlcXVlc3Q6bnVsbCxyZXNwb25zZTpudWxsfSx0aGlzLmdldD1mdW5jdGlvbih0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30scj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e307cmV0dXJuIGUucmVxdWVzdCh7bWV0aG9kOiJHRVQiLHVybDp0LGhlYWRlcjpyLGRhdGE6bn0pfSx0aGlzLnBvc3Q9ZnVuY3Rpb24odCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9O3JldHVybiBlLnJlcXVlc3Qoe3VybDp0LG1ldGhvZDoiUE9TVCIsaGVhZGVyOnIsZGF0YTpufSl9LHRoaXMucHV0PWZ1bmN0aW9uKHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxyPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtyZXR1cm4gZS5yZXF1ZXN0KHt1cmw6dCxtZXRob2Q6IlBVVCIsaGVhZGVyOnIsZGF0YTpufSl9LHRoaXMuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxyPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtyZXR1cm4gZS5yZXF1ZXN0KHt1cmw6dCxtZXRob2Q6IkRFTEVURSIsaGVhZGVyOnIsZGF0YTpufSl9fXJldHVybigwLG8uZGVmYXVsdCkodCxbe2tleToic2V0Q29uZmlnIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmNvbmZpZz0oMCxhLmRlZmF1bHQpKHRoaXMuY29uZmlnLHQpfX0se2tleToicmVxdWVzdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O2lmKHRoaXMuaW50ZXJjZXB0b3IucmVxdWVzdCYmImZ1bmN0aW9uIj09PXR5cGVvZiB0aGlzLmludGVyY2VwdG9yLnJlcXVlc3Qpe3ZhciBuPXRoaXMuaW50ZXJjZXB0b3IucmVxdWVzdChlKTtpZighMT09PW4pcmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbigpe30pKTt0aGlzLm9wdGlvbnM9bn1yZXR1cm4gZS5kYXRhVHlwZT1lLmRhdGFUeXBlfHx0aGlzLmNvbmZpZy5kYXRhVHlwZSxlLnJlc3BvbnNlVHlwZT1lLnJlc3BvbnNlVHlwZXx8dGhpcy5jb25maWcucmVzcG9uc2VUeXBlLGUudXJsPWUudXJsfHwiIixlLnBhcmFtcz1lLnBhcmFtc3x8e30sZS5oZWFkZXI9T2JqZWN0LmFzc2lnbih7fSx0aGlzLmNvbmZpZy5oZWFkZXIsZS5oZWFkZXIpLGUubWV0aG9kPWUubWV0aG9kfHx0aGlzLmNvbmZpZy5tZXRob2QsbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4scil7ZS5jb21wbGV0ZT1mdW5jdGlvbihlKXtpZih1bmkuaGlkZUxvYWRpbmcoKSxjbGVhclRpbWVvdXQodC5jb25maWcudGltZXIpLHQuY29uZmlnLnRpbWVyPW51bGwsdC5jb25maWcub3JpZ2luYWxEYXRhKWlmKHQuaW50ZXJjZXB0b3IucmVzcG9uc2UmJiJmdW5jdGlvbiI9PT10eXBlb2YgdC5pbnRlcmNlcHRvci5yZXNwb25zZSl7dmFyIGk9dC5pbnRlcmNlcHRvci5yZXNwb25zZShlKTshMSE9PWk/bihpKTpyKGUpfWVsc2UgbihlKTtlbHNlIGlmKDIwMD09ZS5zdGF0dXNDb2RlKWlmKHQuaW50ZXJjZXB0b3IucmVzcG9uc2UmJiJmdW5jdGlvbiI9PT10eXBlb2YgdC5pbnRlcmNlcHRvci5yZXNwb25zZSl7dmFyIG89dC5pbnRlcmNlcHRvci5yZXNwb25zZShlLmRhdGEpOyExIT09bz9uKG8pOnIoZS5kYXRhKX1lbHNlIG4oZS5kYXRhKTtlbHNlIHIoZSl9LGUudXJsPXMuZGVmYXVsdC51cmwoZS51cmwpP2UudXJsOnQuY29uZmlnLmJhc2VVcmwrKDA9PWUudXJsLmluZGV4T2YoIi8iKT9lLnVybDoiLyIrZS51cmwpLHQuY29uZmlnLnNob3dMb2FkaW5nJiYhdC5jb25maWcudGltZXImJih0LmNvbmZpZy50aW1lcj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3VuaS5zaG93TG9hZGluZyh7dGl0bGU6dC5jb25maWcubG9hZGluZ1RleHQsbWFzazp0LmNvbmZpZy5sb2FkaW5nTWFza30pLHQuY29uZmlnLnRpbWVyPW51bGx9KSx0LmNvbmZpZy5sb2FkaW5nVGltZSkpLHVuaS5yZXF1ZXN0KGUpfSkpfX1dKX0oKTtlLmRlZmF1bHQ9bmV3IGN9LGQ4MWQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJiNzI3IikubWFwLG89bigiMWRkZSIpLGE9bygibWFwIik7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFhfSx7bWFwOmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSl9LGQ4NjY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJjNjViIiksbz1uKCIyMjY2IiksYT1uKCI1OWVkIikscz1uKCI4MjVhIiksYz1uKCI0NmM0IiksdT1uKCIyYTYyIiksbD1uKCJmOTlmIiksZj1sKCJldmVyeSIsVHlwZUVycm9yKTtyKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpmfSx7ZXZlcnk6ZnVuY3Rpb24odCl7cyh0aGlzKTt0cnl7YSh0KX1jYXRjaChyKXt1KHRoaXMsInRocm93IixyKX1pZihmKXJldHVybiBpKGYsdGhpcyx0KTt2YXIgZT1jKHRoaXMpLG49MDtyZXR1cm4hbyhlLChmdW5jdGlvbihlLHIpe2lmKCF0KGUsbisrKSlyZXR1cm4gcigpfSkse0lTX1JFQ09SRDohMCxJTlRFUlJVUFRFRDohMH0pLnN0b3BwZWR9fSl9LGQ4NmI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkMDM5Iik7dC5leHBvcnRzPXIoKGZ1bmN0aW9uKCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyKXt2YXIgdD1uZXcgQXJyYXlCdWZmZXIoOCk7T2JqZWN0LmlzRXh0ZW5zaWJsZSh0KSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImEiLHt2YWx1ZTo4fSl9fSkpfSxkOWI1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZDA2NiIpLGk9bigiMTYyNiIpLG89bigiM2E5YiIpLGE9bigiZmRiZiIpLHM9T2JqZWN0O3QuZXhwb3J0cz1hP2Z1bmN0aW9uKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdH06ZnVuY3Rpb24odCl7dmFyIGU9cigiU3ltYm9sIik7cmV0dXJuIGkoZSkmJm8oZS5wcm90b3R5cGUscyh0KSl9fSxkOWUyOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiY2ZlOSIpLG89bigiMmJhNCIpLGE9bigiZTVjYiIpLHM9IldlYkFzc2VtYmx5IixjPWlbc10sdT03IT09bmV3IEVycm9yKCJlIix7Y2F1c2U6N30pLmNhdXNlLGw9ZnVuY3Rpb24odCxlKXt2YXIgbj17fTtuW3RdPWEodCxlLHUpLHIoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxhcml0eToxLGZvcmNlZDp1fSxuKX0sZj1mdW5jdGlvbih0LGUpe2lmKGMmJmNbdF0pe3ZhciBuPXt9O25bdF09YShzKyIuIit0LGUsdSkscih7dGFyZ2V0OnMsc3RhdDohMCxjb25zdHJ1Y3RvcjohMCxhcml0eToxLGZvcmNlZDp1fSxuKX19O2woIkVycm9yIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBvKHQsdGhpcyxhcmd1bWVudHMpfX0pKSxsKCJFdmFsRXJyb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG8odCx0aGlzLGFyZ3VtZW50cyl9fSkpLGwoIlJhbmdlRXJyb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG8odCx0aGlzLGFyZ3VtZW50cyl9fSkpLGwoIlJlZmVyZW5jZUVycm9yIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBvKHQsdGhpcyxhcmd1bWVudHMpfX0pKSxsKCJTeW50YXhFcnJvciIsKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbyh0LHRoaXMsYXJndW1lbnRzKX19KSksbCgiVHlwZUVycm9yIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBvKHQsdGhpcyxhcmd1bWVudHMpfX0pKSxsKCJVUklFcnJvciIsKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbyh0LHRoaXMsYXJndW1lbnRzKX19KSksZigiQ29tcGlsZUVycm9yIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBvKHQsdGhpcyxhcmd1bWVudHMpfX0pKSxmKCJMaW5rRXJyb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG8odCx0aGlzLGFyZ3VtZW50cyl9fSkpLGYoIlJ1bnRpbWVFcnJvciIsKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbyh0LHRoaXMsYXJndW1lbnRzKX19KSl9LGQ5ZjU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJjZmU5Iiksbz1uKCJjNjViIiksYT1uKCJlMzMwIikscz1uKCJjNDMwIiksYz1uKCI4M2FiIiksdT1uKCIwNGY4IiksbD1uKCJkMDM5IiksZj1uKCIxYTJkIiksZD1uKCIzYTliIiksaD1uKCI4MjVhIikscD1uKCJmYzZhIiksdj1uKCJhMDRiIiksZz1uKCI1NzdlIiksbT1uKCI1YzZjIiksYj1uKCI3YzczIikseT1uKCJkZjc1IiksXz1uKCIyNDFjIiksdz1uKCIwNTdmIiksUz1uKCI3NDE4IikseD1uKCIwNmNmIiksaz1uKCI5YmYyIiksQz1uKCIzN2U4IiksVD1uKCJkMWU3IiksTz1uKCJjYjJkIiksQT1uKCJlZGQwIiksRT1uKCI1NjkyIiksaj1uKCJmNzcyIiksTT1uKCJkMDEyIiksST1uKCI5MGUzIiksUD1uKCJiNjIyIiksJD1uKCJlNTM4IiksTD1uKCJlMDY1IiksUj1uKCI1N2I5IiksTj1uKCJkNDRlIiksRD1uKCI2OWYzIiksQj1uKCJiNzI3IikuZm9yRWFjaCxGPWooImhpZGRlbiIpLHo9IlN5bWJvbCIsVz0icHJvdG90eXBlIixIPUQuc2V0LFU9RC5nZXR0ZXJGb3IoeikscT1PYmplY3RbV10sVj1pLlN5bWJvbCxZPVYmJlZbV10sWD1pLlJhbmdlRXJyb3IsRz1pLlR5cGVFcnJvcixRPWkuUU9iamVjdCxKPXguZixLPWsuZixaPXcuZix0dD1ULmYsZXQ9YShbXS5wdXNoKSxudD1FKCJzeW1ib2xzIikscnQ9RSgib3Atc3ltYm9scyIpLGl0PUUoIndrcyIpLG90PSFRfHwhUVtXXXx8IVFbV10uZmluZENoaWxkLGF0PWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1KKHEsZSk7ciYmZGVsZXRlIHFbZV0sSyh0LGUsbiksciYmdCE9PXEmJksocSxlLHIpfSxzdD1jJiZsKChmdW5jdGlvbigpe3JldHVybiA3IT09YihLKHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEsodGhpcywiYSIse3ZhbHVlOjd9KS5hfX0pKS5hfSkpP2F0OkssY3Q9ZnVuY3Rpb24odCxlKXt2YXIgbj1udFt0XT1iKFkpO3JldHVybiBIKG4se3R5cGU6eix0YWc6dCxkZXNjcmlwdGlvbjplfSksY3x8KG4uZGVzY3JpcHRpb249ZSksbn0sdXQ9ZnVuY3Rpb24odCxlLG4pe3Q9PT1xJiZ1dChydCxlLG4pLGgodCk7dmFyIHI9dihlKTtyZXR1cm4gaChuKSxmKG50LHIpPyhuLmVudW1lcmFibGU/KGYodCxGKSYmdFtGXVtyXSYmKHRbRl1bcl09ITEpLG49YihuLHtlbnVtZXJhYmxlOm0oMCwhMSl9KSk6KGYodCxGKXx8Syh0LEYsbSgxLGIobnVsbCkpKSx0W0ZdW3JdPSEwKSxzdCh0LHIsbikpOksodCxyLG4pfSxsdD1mdW5jdGlvbih0LGUpe2godCk7dmFyIG49cChlKSxyPXkobikuY29uY2F0KHZ0KG4pKTtyZXR1cm4gQihyLChmdW5jdGlvbihlKXtjJiYhbyhkdCxuLGUpfHx1dCh0LGUsbltlXSl9KSksdH0sZnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZT9iKHQpOmx0KGIodCksZSl9LGR0PWZ1bmN0aW9uKHQpe3ZhciBlPXYodCksbj1vKHR0LHRoaXMsZSk7cmV0dXJuISh0aGlzPT09cSYmZihudCxlKSYmIWYocnQsZSkpJiYoIShufHwhZih0aGlzLGUpfHwhZihudCxlKXx8Zih0aGlzLEYpJiZ0aGlzW0ZdW2VdKXx8bil9LGh0PWZ1bmN0aW9uKHQsZSl7dmFyIG49cCh0KSxyPXYoZSk7aWYobiE9PXF8fCFmKG50LHIpfHxmKHJ0LHIpKXt2YXIgaT1KKG4scik7cmV0dXJuIWl8fCFmKG50LHIpfHxmKG4sRikmJm5bRl1bcl18fChpLmVudW1lcmFibGU9ITApLGl9fSxwdD1mdW5jdGlvbih0KXt2YXIgZT1aKHAodCkpLG49W107cmV0dXJuIEIoZSwoZnVuY3Rpb24odCl7ZihudCx0KXx8ZihNLHQpfHxldChuLHQpfSkpLG59LHZ0PWZ1bmN0aW9uKHQpe3ZhciBlPXQ9PT1xLG49WihlP3J0OnAodCkpLHI9W107cmV0dXJuIEIobiwoZnVuY3Rpb24odCl7IWYobnQsdCl8fGUmJiFmKHEsdCl8fGV0KHIsbnRbdF0pfSkpLHJ9O3V8fChWPWZ1bmN0aW9uKCl7aWYoZChZLHRoaXMpKXRocm93IG5ldyBHKCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IiKTt2YXIgdD1hcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/Zyhhcmd1bWVudHNbMF0pOnZvaWQgMCxlPUkodCksbj1mdW5jdGlvbih0KXt2YXIgcj12b2lkIDA9PT10aGlzP2k6dGhpcztyPT09cSYmbyhuLHJ0LHQpLGYocixGKSYmZihyW0ZdLGUpJiYocltGXVtlXT0hMSk7dmFyIGE9bSgxLHQpO3RyeXtzdChyLGUsYSl9Y2F0Y2gocyl7aWYoIShzIGluc3RhbmNlb2YgWCkpdGhyb3cgczthdChyLGUsYSl9fTtyZXR1cm4gYyYmb3QmJnN0KHEsZSx7Y29uZmlndXJhYmxlOiEwLHNldDpufSksY3QoZSx0KX0sWT1WW1ddLE8oWSwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiBVKHRoaXMpLnRhZ30pKSxPKFYsIndpdGhvdXRTZXR0ZXIiLChmdW5jdGlvbih0KXtyZXR1cm4gY3QoSSh0KSx0KX0pKSxULmY9ZHQsay5mPXV0LEMuZj1sdCx4LmY9aHQsXy5mPXcuZj1wdCxTLmY9dnQsJC5mPWZ1bmN0aW9uKHQpe3JldHVybiBjdChQKHQpLHQpfSxjJiYoQShZLCJkZXNjcmlwdGlvbiIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVSh0aGlzKS5kZXNjcmlwdGlvbn19KSxzfHxPKHEsInByb3BlcnR5SXNFbnVtZXJhYmxlIixkdCx7dW5zYWZlOiEwfSkpKSxyKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsd3JhcDohMCxmb3JjZWQ6IXUsc2hhbTohdX0se1N5bWJvbDpWfSksQih5KGl0KSwoZnVuY3Rpb24odCl7TCh0KX0pKSxyKHt0YXJnZXQ6eixzdGF0OiEwLGZvcmNlZDohdX0se3VzZVNldHRlcjpmdW5jdGlvbigpe290PSEwfSx1c2VTaW1wbGU6ZnVuY3Rpb24oKXtvdD0hMX19KSxyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6IXUsc2hhbTohY30se2NyZWF0ZTpmdCxkZWZpbmVQcm9wZXJ0eTp1dCxkZWZpbmVQcm9wZXJ0aWVzOmx0LGdldE93blByb3BlcnR5RGVzY3JpcHRvcjpodH0pLHIoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDohdX0se2dldE93blByb3BlcnR5TmFtZXM6cHR9KSxSKCksTihWLHopLE1bRl09ITB9LGQ5ZmE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI3YTgyIik7dmFyIHI9bigiNGVhNCIpLmRlZmF1bHQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDAsbigiZDQwMSIpLG4oImE5ZTMiKSxuKCJkM2I3IiksbigiZTI1ZSIpLG4oIjI1ZjAiKTt2YXIgaT1yKG4oImYwMjYiKSk7ZnVuY3Rpb24gbygpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJ5eXl5LW1tLWRkIjt0fHwodD1OdW1iZXIobmV3IERhdGUpKSwxMD09dC50b1N0cmluZygpLmxlbmd0aCYmKHQqPTFlMyk7dmFyIG49K25ldyBEYXRlKE51bWJlcih0KSkscj0oTnVtYmVyKG5ldyBEYXRlKS1uKS8xZTMsbz0iIjtzd2l0Y2goITApe2Nhc2UgcjwzMDA6bz0i5Yia5YiaIjticmVhaztjYXNlIHI+PTMwMCYmcjwzNjAwOm89cGFyc2VJbnQoci82MCkrIuWIhumSn+WJjSI7YnJlYWs7Y2FzZSByPj0zNjAwJiZyPDg2NDAwOm89cGFyc2VJbnQoci8zNjAwKSsi5bCP5pe25YmNIjticmVhaztjYXNlIHI+PTg2NDAwJiZyPDI1OTJlMzpvPXBhcnNlSW50KHIvODY0MDApKyLlpKnliY0iO2JyZWFrO2RlZmF1bHQ6bz0hMT09PWU/cj49MjU5MmUzJiZyPDMxNTM2ZTM/cGFyc2VJbnQoci8yNTkyZTMpKyLkuKrmnIjliY0iOnBhcnNlSW50KHIvMzE1MzZlMykrIuW5tOWJjSI6KDAsaS5kZWZhdWx0KShuLGUpfXJldHVybiBvfWUuZGVmYXVsdD1vfSxkYTYzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10JiZ0LmFscGhhYmV0O2lmKHZvaWQgMD09PWV8fCJiYXNlNjQiPT09ZXx8ImJhc2U2NHVybCI9PT1lKXJldHVybiBlfHwiYmFzZTY0Ijt0aHJvdyBuZXcgcigiSW5jb3JyZWN0IGBhbHBoYWJldGAgb3B0aW9uIil9fSxkYWQyOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZDA2NiIpLGk9ZnVuY3Rpb24odCl7cmV0dXJue3NpemU6dCxoYXM6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sa2V5czpmdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ITB9fX19fX0sbz1mdW5jdGlvbih0KXtyZXR1cm57c2l6ZTp0LGhhczpmdW5jdGlvbigpe3JldHVybiEwfSxrZXlzOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJlIil9fX07dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49cigiU2V0Iik7dHJ5eyhuZXcgbilbdF0oaSgwKSk7dHJ5e3JldHVybihuZXcgbilbdF0oaSgtMSkpLCExfWNhdGNoKHMpe2lmKCFlKXJldHVybiEwO3RyeXtyZXR1cm4obmV3IG4pW3RdKG8oLTEvMCkpLCExfWNhdGNoKGMpe3ZhciBhPW5ldyBuO3JldHVybiBhLmFkZCgxKSxhLmFkZCgyKSxlKGFbdF0obygxLzApKSl9fX1jYXRjaChjKXtyZXR1cm4hMX19fSxkYmI0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiODNhYiIpLG89bigiNTZlZiIpLGE9bigiZmM2YSIpLHM9bigiMDZjZiIpLGM9bigiODQxOCIpO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLHNoYW06IWl9LHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOmZ1bmN0aW9uKHQpe3ZhciBlLG4scj1hKHQpLGk9cy5mLHU9byhyKSxsPXt9LGY9MDt3aGlsZSh1Lmxlbmd0aD5mKW49aShyLGU9dVtmKytdKSx2b2lkIDAhPT1uJiZjKGwsZSxuKTtyZXR1cm4gbH19KX0sZGJlNTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNmZTkiKSxpPW4oImQwMzkiKSxvPW4oIjEyMTIiKSxhPW4oIjg1NTgiKSxzPXIuc3RydWN0dXJlZENsb25lO3QuZXhwb3J0cz0hIXMmJiFpKChmdW5jdGlvbigpe2lmKCJERU5PIj09PWEmJm8+OTJ8fCJOT0RFIj09PWEmJm8+OTR8fCJCUk9XU0VSIj09PWEmJm8+OTcpcmV0dXJuITE7dmFyIHQ9bmV3IEFycmF5QnVmZmVyKDgpLGU9cyh0LHt0cmFuc2ZlcjpbdF19KTtyZXR1cm4gMCE9PXQuYnl0ZUxlbmd0aHx8OCE9PWUuYnl0ZUxlbmd0aH0pKX0sZGMxOTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImNiMjciKS5oYXM7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByKHQpLHR9fSxkYzRhOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNTllZCIpLGk9bigiNzIzNCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPXRbZV07cmV0dXJuIGkobik/dm9pZCAwOnIobil9fSxkY2MzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYWU5MyIpLkl0ZXJhdG9yUHJvdG90eXBlLGk9bigiN2M3MyIpLG89bigiNWM2YyIpLGE9bigiZDQ0ZSIpLHM9bigiM2Y4YyIpLGM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLHUpe3ZhciBsPWUrIiBJdGVyYXRvciI7cmV0dXJuIHQucHJvdG90eXBlPWkocix7bmV4dDpvKCshdSxuKX0pLGEodCxsLCExLCEwKSxzW2xdPWMsdH19LGRkYjA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjZmU5IiksaT1uKCJmZGJjIiksbz1uKCI3ODVhIiksYT1uKCJlMjYwIikscz1uKCI5MTEyIiksYz1uKCJkNDRlIiksdT1uKCJiNjIyIiksbD11KCJpdGVyYXRvciIpLGY9YS52YWx1ZXMsZD1mdW5jdGlvbih0LGUpe2lmKHQpe2lmKHRbbF0hPT1mKXRyeXtzKHQsbCxmKX1jYXRjaChyKXt0W2xdPWZ9aWYoYyh0LGUsITApLGlbZV0pZm9yKHZhciBuIGluIGEpaWYodFtuXSE9PWFbbl0pdHJ5e3ModCxuLGFbbl0pfWNhdGNoKHIpe3Rbbl09YVtuXX19fTtmb3IodmFyIGggaW4gaSlkKHJbaF0mJnJbaF0ucHJvdG90eXBlLGgpO2QobywiRE9NVG9rZW5MaXN0Iil9LGRmNzU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjYTg0IiksaT1uKCI3ODM5Iik7dC5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbih0KXtyZXR1cm4gcih0LGkpfX0sZGY3ZTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjA3ZmEiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49cih0KSxpPW5ldyBlKG4pLG89MDtvPG47bysrKWlbb109dFtuLW8tMV07cmV0dXJuIGl9fSxkZmI5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMDdmYSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIGk9MCxvPWFyZ3VtZW50cy5sZW5ndGg+Mj9uOnIoZSksYT1uZXcgdChvKTt3aGlsZShvPmkpYVtpXT1lW2krK107cmV0dXJuIGF9fSxlMDFhOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiODNhYiIpLG89bigiY2ZlOSIpLGE9bigiZTMzMCIpLHM9bigiMWEyZCIpLGM9bigiMTYyNiIpLHU9bigiM2E5YiIpLGw9bigiNTc3ZSIpLGY9bigiZWRkMCIpLGQ9bigiZTg5MyIpLGg9by5TeW1ib2wscD1oJiZoLnByb3RvdHlwZTtpZihpJiZjKGgpJiYoISgiZGVzY3JpcHRpb24iaW4gcCl8fHZvaWQgMCE9PWgoKS5kZXNjcmlwdGlvbikpe3ZhciB2PXt9LGc9ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPDF8fHZvaWQgMD09PWFyZ3VtZW50c1swXT92b2lkIDA6bChhcmd1bWVudHNbMF0pLGU9dShwLHRoaXMpP25ldyBoKHQpOnZvaWQgMD09PXQ/aCgpOmgodCk7cmV0dXJuIiI9PT10JiYodltlXT0hMCksZX07ZChnLGgpLGcucHJvdG90eXBlPXAscC5jb25zdHJ1Y3Rvcj1nO3ZhciBtPSJTeW1ib2woZGVzY3JpcHRpb24gZGV0ZWN0aW9uKSI9PT1TdHJpbmcoaCgiZGVzY3JpcHRpb24gZGV0ZWN0aW9uIikpLGI9YShwLnZhbHVlT2YpLHk9YShwLnRvU3RyaW5nKSxfPS9eU3ltYm9sXCgoLiopXClbXildKyQvLHc9YSgiIi5yZXBsYWNlKSxTPWEoIiIuc2xpY2UpO2YocCwiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9Yih0aGlzKTtpZihzKHYsdCkpcmV0dXJuIiI7dmFyIGU9eSh0KSxuPW0/UyhlLDcsLTEpOncoZSxfLCIkMSIpO3JldHVybiIiPT09bj92b2lkIDA6bn19KSxyKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOiEwfSx7U3ltYm9sOmd9KX19LGUwNjU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI0MjhmIiksaT1uKCIxYTJkIiksbz1uKCJlNTM4IiksYT1uKCI5YmYyIikuZjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9ci5TeW1ib2x8fChyLlN5bWJvbD17fSk7aShlLHQpfHxhKGUsdCx7dmFsdWU6by5mKHQpfSl9fSxlMTQzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLGZ1bmN0aW9uKHQpewovKiEKICogVnVlLmpzIHYyLjYuMTEKICogKGMpIDIwMTQtMjAyMiBFdmFuIFlvdQogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCiAqLwp2YXIgbj1PYmplY3QuZnJlZXplKHt9KTtmdW5jdGlvbiByKHQpe3JldHVybiB2b2lkIDA9PT10fHxudWxsPT09dH1mdW5jdGlvbiBpKHQpe3JldHVybiB2b2lkIDAhPT10JiZudWxsIT09dH1mdW5jdGlvbiBvKHQpe3JldHVybiEwPT09dH1mdW5jdGlvbiBhKHQpe3JldHVybiExPT09dH1mdW5jdGlvbiBzKHQpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIHR8fCJudW1iZXIiPT09dHlwZW9mIHR8fCJzeW1ib2wiPT09dHlwZW9mIHR8fCJib29sZWFuIj09PXR5cGVvZiB0fWZ1bmN0aW9uIGModCl7cmV0dXJuIG51bGwhPT10JiYib2JqZWN0Ij09PXR5cGVvZiB0fXZhciB1PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gbCh0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PXUuY2FsbCh0KX1mdW5jdGlvbiBmKHQpe3JldHVybiJbb2JqZWN0IFJlZ0V4cF0iPT09dS5jYWxsKHQpfWZ1bmN0aW9uIGQodCl7dmFyIGU9cGFyc2VGbG9hdChTdHJpbmcodCkpO3JldHVybiBlPj0wJiZNYXRoLmZsb29yKGUpPT09ZSYmaXNGaW5pdGUodCl9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gaSh0KSYmImZ1bmN0aW9uIj09PXR5cGVvZiB0LnRoZW4mJiJmdW5jdGlvbiI9PT10eXBlb2YgdC5jYXRjaH1mdW5jdGlvbiBwKHQpe3JldHVybiBudWxsPT10PyIiOkFycmF5LmlzQXJyYXkodCl8fGwodCkmJnQudG9TdHJpbmc9PT11P0pTT04uc3RyaW5naWZ5KHQsbnVsbCwyKTpTdHJpbmcodCl9ZnVuY3Rpb24gdih0KXt2YXIgZT1wYXJzZUZsb2F0KHQpO3JldHVybiBpc05hTihlKT90OmV9ZnVuY3Rpb24gZyh0LGUpe2Zvcih2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9dC5zcGxpdCgiLCIpLGk9MDtpPHIubGVuZ3RoO2krKyluW3JbaV1dPSEwO3JldHVybiBlP2Z1bmN0aW9uKHQpe3JldHVybiBuW3QudG9Mb3dlckNhc2UoKV19OmZ1bmN0aW9uKHQpe3JldHVybiBuW3RdfX1nKCJzbG90LGNvbXBvbmVudCIsITApO3ZhciBtPWcoImtleSxyZWYsc2xvdCxzbG90LXNjb3BlLGlzIik7ZnVuY3Rpb24gYih0LGUpe2lmKHQubGVuZ3RoKXt2YXIgbj10LmluZGV4T2YoZSk7aWYobj4tMSlyZXR1cm4gdC5zcGxpY2UobiwxKX19dmFyIHk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBfKHQsZSl7cmV0dXJuIHkuY2FsbCh0LGUpfWZ1bmN0aW9uIHcodCl7dmFyIGU9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9ZVtuXTtyZXR1cm4gcnx8KGVbbl09dChuKSl9fXZhciBTPS8tKFx3KS9nLHg9dygoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShTLChmdW5jdGlvbih0LGUpe3JldHVybiBlP2UudG9VcHBlckNhc2UoKToiIn0pKX0pKSxrPXcoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSl9KSksQz0vXEIoW0EtWl0pL2csVD13KChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKEMsIi0kMSIpLnRvTG93ZXJDYXNlKCl9KSk7ZnVuY3Rpb24gTyh0LGUpe2Z1bmN0aW9uIG4obil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gcj9yPjE/dC5hcHBseShlLGFyZ3VtZW50cyk6dC5jYWxsKGUsbik6dC5jYWxsKGUpfXJldHVybiBuLl9sZW5ndGg9dC5sZW5ndGgsbn1mdW5jdGlvbiBBKHQsZSl7cmV0dXJuIHQuYmluZChlKX12YXIgRT1GdW5jdGlvbi5wcm90b3R5cGUuYmluZD9BOk87ZnVuY3Rpb24gaih0LGUpe2U9ZXx8MDt2YXIgbj10Lmxlbmd0aC1lLHI9bmV3IEFycmF5KG4pO3doaWxlKG4tLSlyW25dPXRbbitlXTtyZXR1cm4gcn1mdW5jdGlvbiBNKHQsZSl7Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dO3JldHVybiB0fWZ1bmN0aW9uIEkodCl7Zm9yKHZhciBlPXt9LG49MDtuPHQubGVuZ3RoO24rKyl0W25dJiZNKGUsdFtuXSk7cmV0dXJuIGV9ZnVuY3Rpb24gUCh0LGUsbil7fXZhciAkPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4hMX0sTD1mdW5jdGlvbih0KXtyZXR1cm4gdH07ZnVuY3Rpb24gUih0LGUpe2lmKHQ9PT1lKXJldHVybiEwO3ZhciBuPWModCkscj1jKGUpO2lmKCFufHwhcilyZXR1cm4hbiYmIXImJlN0cmluZyh0KT09PVN0cmluZyhlKTt0cnl7dmFyIGk9QXJyYXkuaXNBcnJheSh0KSxvPUFycmF5LmlzQXJyYXkoZSk7aWYoaSYmbylyZXR1cm4gdC5sZW5ndGg9PT1lLmxlbmd0aCYmdC5ldmVyeSgoZnVuY3Rpb24odCxuKXtyZXR1cm4gUih0LGVbbl0pfSkpO2lmKHQgaW5zdGFuY2VvZiBEYXRlJiZlIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gdC5nZXRUaW1lKCk9PT1lLmdldFRpbWUoKTtpZihpfHxvKXJldHVybiExO3ZhciBhPU9iamVjdC5rZXlzKHQpLHM9T2JqZWN0LmtleXMoZSk7cmV0dXJuIGEubGVuZ3RoPT09cy5sZW5ndGgmJmEuZXZlcnkoKGZ1bmN0aW9uKG4pe3JldHVybiBSKHRbbl0sZVtuXSl9KSl9Y2F0Y2godSl7cmV0dXJuITF9fWZ1bmN0aW9uIE4odCxlKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZihSKHRbbl0sZSkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gRCh0KXt2YXIgZT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtlfHwoZT0hMCx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBCPSJkYXRhLXNlcnZlci1yZW5kZXJlZCIsRj1bImNvbXBvbmVudCIsImRpcmVjdGl2ZSIsImZpbHRlciJdLHo9WyJiZWZvcmVDcmVhdGUiLCJjcmVhdGVkIiwiYmVmb3JlTW91bnQiLCJtb3VudGVkIiwiYmVmb3JlVXBkYXRlIiwidXBkYXRlZCIsImJlZm9yZURlc3Ryb3kiLCJkZXN0cm95ZWQiLCJhY3RpdmF0ZWQiLCJkZWFjdGl2YXRlZCIsImVycm9yQ2FwdHVyZWQiLCJzZXJ2ZXJQcmVmZXRjaCJdLFc9e29wdGlvbk1lcmdlU3RyYXRlZ2llczpPYmplY3QuY3JlYXRlKG51bGwpLHNpbGVudDohMSxwcm9kdWN0aW9uVGlwOiExLGRldnRvb2xzOiExLHBlcmZvcm1hbmNlOiExLGVycm9ySGFuZGxlcjpudWxsLHdhcm5IYW5kbGVyOm51bGwsaWdub3JlZEVsZW1lbnRzOltdLGtleUNvZGVzOk9iamVjdC5jcmVhdGUobnVsbCksaXNSZXNlcnZlZFRhZzokLGlzUmVzZXJ2ZWRBdHRyOiQsaXNVbmtub3duRWxlbWVudDokLGdldFRhZ05hbWVzcGFjZTpQLHBhcnNlUGxhdGZvcm1UYWdOYW1lOkwsbXVzdFVzZVByb3A6JCxhc3luYzohMCxfbGlmZWN5Y2xlSG9va3M6en0sSD0vYS16QS1aXHUwMEI3XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwM0YtXHUyMDQwXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkQvO2Z1bmN0aW9uIFUodCl7dmFyIGU9KHQrIiIpLmNoYXJDb2RlQXQoMCk7cmV0dXJuIDM2PT09ZXx8OTU9PT1lfWZ1bmN0aW9uIHEodCxlLG4scil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEhcix3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KX12YXIgVj1uZXcgUmVnRXhwKCJbXiIrSC5zb3VyY2UrIi4kX1xcZF0iKTtmdW5jdGlvbiBZKHQpe2lmKCFWLnRlc3QodCkpe3ZhciBlPXQuc3BsaXQoIi4iKTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe2lmKCF0KXJldHVybjt0PXRbZVtuXV19cmV0dXJuIHR9fX12YXIgWCxHPSJfX3Byb3RvX18iaW57fSxRPSJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdyxKPSJ1bmRlZmluZWQiIT09dHlwZW9mIFdYRW52aXJvbm1lbnQmJiEhV1hFbnZpcm9ubWVudC5wbGF0Zm9ybSxLPUomJldYRW52aXJvbm1lbnQucGxhdGZvcm0udG9Mb3dlckNhc2UoKSxaPVEmJndpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCksdHQ9WiYmL21zaWV8dHJpZGVudC8udGVzdChaKSxldD1aJiZaLmluZGV4T2YoIm1zaWUgOS4wIik+MCxudD1aJiZaLmluZGV4T2YoImVkZ2UvIik+MCxydD0oWiYmWi5pbmRleE9mKCJhbmRyb2lkIiksWiYmL2lwaG9uZXxpcGFkfGlwb2R8aW9zLy50ZXN0KFopfHwiaW9zIj09PUspLGl0PShaJiYvY2hyb21lXC9cZCsvLnRlc3QoWiksWiYmL3BoYW50b21qcy8udGVzdChaKSxaJiZaLm1hdGNoKC9maXJlZm94XC8oXGQrKS8pKSxvdD17fS53YXRjaCxhdD0hMTtpZihRKXRyeXt2YXIgc3Q9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHN0LCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7YXQ9ITB9fSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QtcGFzc2l2ZSIsbnVsbCxzdCl9Y2F0Y2goTWEpe312YXIgY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09WCYmKFg9IVEmJiFKJiYidW5kZWZpbmVkIiE9PXR5cGVvZiB0JiYodFsicHJvY2VzcyJdJiYic2VydmVyIj09PXRbInByb2Nlc3MiXS5lbnYuVlVFX0VOVikpLFh9LHV0PVEmJndpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO2Z1bmN0aW9uIGx0KHQpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgdCYmL25hdGl2ZSBjb2RlLy50ZXN0KHQudG9TdHJpbmcoKSl9dmFyIGZ0LGR0PSJ1bmRlZmluZWQiIT09dHlwZW9mIFN5bWJvbCYmbHQoU3ltYm9sKSYmInVuZGVmaW5lZCIhPT10eXBlb2YgUmVmbGVjdCYmbHQoUmVmbGVjdC5vd25LZXlzKTtmdD0idW5kZWZpbmVkIiE9PXR5cGVvZiBTZXQmJmx0KFNldCk/U2V0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9cmV0dXJuIHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4hMD09PXRoaXMuc2V0W3RdfSx0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCl7dGhpcy5zZXRbdF09ITB9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zZXQ9T2JqZWN0LmNyZWF0ZShudWxsKX0sdH0oKTt2YXIgaHQ9UCxwdD0wLHZ0PWZ1bmN0aW9uKCl7dGhpcy5pZD1wdCsrLHRoaXMuc3Vicz1bXX07ZnVuY3Rpb24gZ3QodCl7dnQuU2hhcmVkT2JqZWN0LnRhcmdldFN0YWNrLnB1c2godCksdnQuU2hhcmVkT2JqZWN0LnRhcmdldD10LHZ0LnRhcmdldD10fWZ1bmN0aW9uIG10KCl7dnQuU2hhcmVkT2JqZWN0LnRhcmdldFN0YWNrLnBvcCgpLHZ0LlNoYXJlZE9iamVjdC50YXJnZXQ9dnQuU2hhcmVkT2JqZWN0LnRhcmdldFN0YWNrW3Z0LlNoYXJlZE9iamVjdC50YXJnZXRTdGFjay5sZW5ndGgtMV0sdnQudGFyZ2V0PXZ0LlNoYXJlZE9iamVjdC50YXJnZXR9dnQucHJvdG90eXBlLmFkZFN1Yj1mdW5jdGlvbih0KXt0aGlzLnN1YnMucHVzaCh0KX0sdnQucHJvdG90eXBlLnJlbW92ZVN1Yj1mdW5jdGlvbih0KXtiKHRoaXMuc3Vicyx0KX0sdnQucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe3Z0LlNoYXJlZE9iamVjdC50YXJnZXQmJnZ0LlNoYXJlZE9iamVjdC50YXJnZXQuYWRkRGVwKHRoaXMpfSx2dC5wcm90b3R5cGUubm90aWZ5PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zdWJzLnNsaWNlKCk7Zm9yKHZhciBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXRbZV0udXBkYXRlKCl9LHZ0LlNoYXJlZE9iamVjdD17fSx2dC5TaGFyZWRPYmplY3QudGFyZ2V0PW51bGwsdnQuU2hhcmVkT2JqZWN0LnRhcmdldFN0YWNrPVtdO3ZhciBidD1mdW5jdGlvbih0LGUsbixyLGksbyxhLHMpe3RoaXMudGFnPXQsdGhpcy5kYXRhPWUsdGhpcy5jaGlsZHJlbj1uLHRoaXMudGV4dD1yLHRoaXMuZWxtPWksdGhpcy5ucz12b2lkIDAsdGhpcy5jb250ZXh0PW8sdGhpcy5mbkNvbnRleHQ9dm9pZCAwLHRoaXMuZm5PcHRpb25zPXZvaWQgMCx0aGlzLmZuU2NvcGVJZD12b2lkIDAsdGhpcy5rZXk9ZSYmZS5rZXksdGhpcy5jb21wb25lbnRPcHRpb25zPWEsdGhpcy5jb21wb25lbnRJbnN0YW5jZT12b2lkIDAsdGhpcy5wYXJlbnQ9dm9pZCAwLHRoaXMucmF3PSExLHRoaXMuaXNTdGF0aWM9ITEsdGhpcy5pc1Jvb3RJbnNlcnQ9ITAsdGhpcy5pc0NvbW1lbnQ9ITEsdGhpcy5pc0Nsb25lZD0hMSx0aGlzLmlzT25jZT0hMSx0aGlzLmFzeW5jRmFjdG9yeT1zLHRoaXMuYXN5bmNNZXRhPXZvaWQgMCx0aGlzLmlzQXN5bmNQbGFjZWhvbGRlcj0hMX0seXQ9e2NoaWxkOntjb25maWd1cmFibGU6ITB9fTt5dC5jaGlsZC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb21wb25lbnRJbnN0YW5jZX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYnQucHJvdG90eXBlLHl0KTt2YXIgX3Q9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9IiIpO3ZhciBlPW5ldyBidDtyZXR1cm4gZS50ZXh0PXQsZS5pc0NvbW1lbnQ9ITAsZX07ZnVuY3Rpb24gd3QodCl7cmV0dXJuIG5ldyBidCh2b2lkIDAsdm9pZCAwLHZvaWQgMCxTdHJpbmcodCkpfWZ1bmN0aW9uIFN0KHQpe3ZhciBlPW5ldyBidCh0LnRhZyx0LmRhdGEsdC5jaGlsZHJlbiYmdC5jaGlsZHJlbi5zbGljZSgpLHQudGV4dCx0LmVsbSx0LmNvbnRleHQsdC5jb21wb25lbnRPcHRpb25zLHQuYXN5bmNGYWN0b3J5KTtyZXR1cm4gZS5ucz10Lm5zLGUuaXNTdGF0aWM9dC5pc1N0YXRpYyxlLmtleT10LmtleSxlLmlzQ29tbWVudD10LmlzQ29tbWVudCxlLmZuQ29udGV4dD10LmZuQ29udGV4dCxlLmZuT3B0aW9ucz10LmZuT3B0aW9ucyxlLmZuU2NvcGVJZD10LmZuU2NvcGVJZCxlLmFzeW5jTWV0YT10LmFzeW5jTWV0YSxlLmlzQ2xvbmVkPSEwLGV9dmFyIHh0PUFycmF5LnByb3RvdHlwZSxrdD1PYmplY3QuY3JlYXRlKHh0KSxDdD1bInB1c2giLCJwb3AiLCJzaGlmdCIsInVuc2hpZnQiLCJzcGxpY2UiLCJzb3J0IiwicmV2ZXJzZSJdO0N0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXh0W3RdO3Eoa3QsdCwoZnVuY3Rpb24oKXt2YXIgbj1bXSxyPWFyZ3VtZW50cy5sZW5ndGg7d2hpbGUoci0tKW5bcl09YXJndW1lbnRzW3JdO3ZhciBpLG89ZS5hcHBseSh0aGlzLG4pLGE9dGhpcy5fX29iX187c3dpdGNoKHQpe2Nhc2UicHVzaCI6Y2FzZSJ1bnNoaWZ0IjppPW47YnJlYWs7Y2FzZSJzcGxpY2UiOmk9bi5zbGljZSgyKTticmVha31yZXR1cm4gaSYmYS5vYnNlcnZlQXJyYXkoaSksYS5kZXAubm90aWZ5KCksb30pKX0pKTt2YXIgVHQ9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoa3QpLE90PSEwO2Z1bmN0aW9uIEF0KHQpe090PXR9dmFyIEV0PWZ1bmN0aW9uKHQpe3RoaXMudmFsdWU9dCx0aGlzLmRlcD1uZXcgdnQsdGhpcy52bUNvdW50PTAscSh0LCJfX29iX18iLHRoaXMpLEFycmF5LmlzQXJyYXkodCk/KEc/anQodCxrdCk6TXQodCxrdCxUdCksdGhpcy5vYnNlcnZlQXJyYXkodCkpOnRoaXMud2Fsayh0KX07ZnVuY3Rpb24ganQodCxlKXt0Ll9fcHJvdG9fXz1lfWZ1bmN0aW9uIE10KHQsZSxuKXtmb3IodmFyIHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspe3ZhciBvPW5bcl07cSh0LG8sZVtvXSl9fWZ1bmN0aW9uIEl0KHQsZSl7dmFyIG47aWYoYyh0KSYmISh0IGluc3RhbmNlb2YgYnQpKXJldHVybiBfKHQsIl9fb2JfXyIpJiZ0Ll9fb2JfXyBpbnN0YW5jZW9mIEV0P249dC5fX29iX186T3QmJiFjdCgpJiYoQXJyYXkuaXNBcnJheSh0KXx8bCh0KSkmJk9iamVjdC5pc0V4dGVuc2libGUodCkmJiF0Ll9pc1Z1ZSYmKG49bmV3IEV0KHQpKSxlJiZuJiZuLnZtQ291bnQrKyxufWZ1bmN0aW9uIFB0KHQsZSxuLHIsaSl7dmFyIG89bmV3IHZ0LGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpO2lmKCFhfHwhMSE9PWEuY29uZmlndXJhYmxlKXt2YXIgcz1hJiZhLmdldCxjPWEmJmEuc2V0O3MmJiFjfHwyIT09YXJndW1lbnRzLmxlbmd0aHx8KG49dFtlXSk7dmFyIHU9IWkmJkl0KG4pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3ZhciBlPXM/cy5jYWxsKHQpOm47cmV0dXJuIHZ0LlNoYXJlZE9iamVjdC50YXJnZXQmJihvLmRlcGVuZCgpLHUmJih1LmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KGUpJiZSdChlKSkpLGV9LHNldDpmdW5jdGlvbihlKXt2YXIgcj1zP3MuY2FsbCh0KTpuO2U9PT1yfHxlIT09ZSYmciE9PXJ8fHMmJiFjfHwoYz9jLmNhbGwodCxlKTpuPWUsdT0haSYmSXQoZSksby5ub3RpZnkoKSl9fSl9fWZ1bmN0aW9uICR0KHQsZSxuKXtpZihBcnJheS5pc0FycmF5KHQpJiZkKGUpKXJldHVybiB0Lmxlbmd0aD1NYXRoLm1heCh0Lmxlbmd0aCxlKSx0LnNwbGljZShlLDEsbiksbjtpZihlIGluIHQmJiEoZSBpbiBPYmplY3QucHJvdG90eXBlKSlyZXR1cm4gdFtlXT1uLG47dmFyIHI9dC5fX29iX187cmV0dXJuIHQuX2lzVnVlfHxyJiZyLnZtQ291bnQ/bjpyPyhQdChyLnZhbHVlLGUsbiksci5kZXAubm90aWZ5KCksbik6KHRbZV09bixuKX1mdW5jdGlvbiBMdCh0LGUpe2lmKEFycmF5LmlzQXJyYXkodCkmJmQoZSkpdC5zcGxpY2UoZSwxKTtlbHNle3ZhciBuPXQuX19vYl9fO3QuX2lzVnVlfHxuJiZuLnZtQ291bnR8fF8odCxlKSYmKGRlbGV0ZSB0W2VdLG4mJm4uZGVwLm5vdGlmeSgpKX19ZnVuY3Rpb24gUnQodCl7Zm9yKHZhciBlPXZvaWQgMCxuPTAscj10Lmxlbmd0aDtuPHI7bisrKWU9dFtuXSxlJiZlLl9fb2JfXyYmZS5fX29iX18uZGVwLmRlcGVuZCgpLEFycmF5LmlzQXJyYXkoZSkmJlJ0KGUpfUV0LnByb3RvdHlwZS53YWxrPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1PYmplY3Qua2V5cyh0KSxuPTA7bjxlLmxlbmd0aDtuKyspUHQodCxlW25dKX0sRXQucHJvdG90eXBlLm9ic2VydmVBcnJheT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspSXQodFtlXSl9O3ZhciBOdD1XLm9wdGlvbk1lcmdlU3RyYXRlZ2llcztmdW5jdGlvbiBEdCh0LGUpe2lmKCFlKXJldHVybiB0O2Zvcih2YXIgbixyLGksbz1kdD9SZWZsZWN0Lm93bktleXMoZSk6T2JqZWN0LmtleXMoZSksYT0wO2E8by5sZW5ndGg7YSsrKW49b1thXSwiX19vYl9fIiE9PW4mJihyPXRbbl0saT1lW25dLF8odCxuKT9yIT09aSYmbChyKSYmbChpKSYmRHQocixpKTokdCh0LG4saSkpO3JldHVybiB0fWZ1bmN0aW9uIEJ0KHQsZSxuKXtyZXR1cm4gbj9mdW5jdGlvbigpe3ZhciByPSJmdW5jdGlvbiI9PT10eXBlb2YgZT9lLmNhbGwobixuKTplLGk9ImZ1bmN0aW9uIj09PXR5cGVvZiB0P3QuY2FsbChuLG4pOnQ7cmV0dXJuIHI/RHQocixpKTppfTplP3Q/ZnVuY3Rpb24oKXtyZXR1cm4gRHQoImZ1bmN0aW9uIj09PXR5cGVvZiBlP2UuY2FsbCh0aGlzLHRoaXMpOmUsImZ1bmN0aW9uIj09PXR5cGVvZiB0P3QuY2FsbCh0aGlzLHRoaXMpOnQpfTplOnR9ZnVuY3Rpb24gRnQodCxlKXt2YXIgbj1lP3Q/dC5jb25jYXQoZSk6QXJyYXkuaXNBcnJheShlKT9lOltlXTp0O3JldHVybiBuP3p0KG4pOm59ZnVuY3Rpb24genQodCl7Zm9yKHZhciBlPVtdLG49MDtuPHQubGVuZ3RoO24rKyktMT09PWUuaW5kZXhPZih0W25dKSYmZS5wdXNoKHRbbl0pO3JldHVybiBlfWZ1bmN0aW9uIFd0KHQsZSxuLHIpe3ZhciBpPU9iamVjdC5jcmVhdGUodHx8bnVsbCk7cmV0dXJuIGU/TShpLGUpOml9TnQuZGF0YT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG4/QnQodCxlLG4pOmUmJiJmdW5jdGlvbiIhPT10eXBlb2YgZT90OkJ0KHQsZSl9LHouZm9yRWFjaCgoZnVuY3Rpb24odCl7TnRbdF09RnR9KSksRi5mb3JFYWNoKChmdW5jdGlvbih0KXtOdFt0KyJzIl09V3R9KSksTnQud2F0Y2g9ZnVuY3Rpb24odCxlLG4scil7aWYodD09PW90JiYodD12b2lkIDApLGU9PT1vdCYmKGU9dm9pZCAwKSwhZSlyZXR1cm4gT2JqZWN0LmNyZWF0ZSh0fHxudWxsKTtpZighdClyZXR1cm4gZTt2YXIgaT17fTtmb3IodmFyIG8gaW4gTShpLHQpLGUpe3ZhciBhPWlbb10scz1lW29dO2EmJiFBcnJheS5pc0FycmF5KGEpJiYoYT1bYV0pLGlbb109YT9hLmNvbmNhdChzKTpBcnJheS5pc0FycmF5KHMpP3M6W3NdfXJldHVybiBpfSxOdC5wcm9wcz1OdC5tZXRob2RzPU50LmluamVjdD1OdC5jb21wdXRlZD1mdW5jdGlvbih0LGUsbixyKXtpZighdClyZXR1cm4gZTt2YXIgaT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBNKGksdCksZSYmTShpLGUpLGl9LE50LnByb3ZpZGU9QnQ7dmFyIEh0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWU/dDplfTtmdW5jdGlvbiBVdCh0LGUpe3ZhciBuPXQucHJvcHM7aWYobil7dmFyIHIsaSxvLGE9e307aWYoQXJyYXkuaXNBcnJheShuKSl7cj1uLmxlbmd0aDt3aGlsZShyLS0paT1uW3JdLCJzdHJpbmciPT09dHlwZW9mIGkmJihvPXgoaSksYVtvXT17dHlwZTpudWxsfSl9ZWxzZSBpZihsKG4pKWZvcih2YXIgcyBpbiBuKWk9bltzXSxvPXgocyksYVtvXT1sKGkpP2k6e3R5cGU6aX07ZWxzZSAwO3QucHJvcHM9YX19ZnVuY3Rpb24gcXQodCxlKXt2YXIgbj10LmluamVjdDtpZihuKXt2YXIgcj10LmluamVjdD17fTtpZihBcnJheS5pc0FycmF5KG4pKWZvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXJbbltpXV09e2Zyb206bltpXX07ZWxzZSBpZihsKG4pKWZvcih2YXIgbyBpbiBuKXt2YXIgYT1uW29dO3Jbb109bChhKT9NKHtmcm9tOm99LGEpOntmcm9tOmF9fWVsc2UgMH19ZnVuY3Rpb24gVnQodCl7dmFyIGU9dC5kaXJlY3RpdmVzO2lmKGUpZm9yKHZhciBuIGluIGUpe3ZhciByPWVbbl07ImZ1bmN0aW9uIj09PXR5cGVvZiByJiYoZVtuXT17YmluZDpyLHVwZGF0ZTpyfSl9fWZ1bmN0aW9uIFl0KHQsZSxuKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUmJihlPWUub3B0aW9ucyksVXQoZSxuKSxxdChlLG4pLFZ0KGUpLCFlLl9iYXNlJiYoZS5leHRlbmRzJiYodD1ZdCh0LGUuZXh0ZW5kcyxuKSksZS5taXhpbnMpKWZvcih2YXIgcj0wLGk9ZS5taXhpbnMubGVuZ3RoO3I8aTtyKyspdD1ZdCh0LGUubWl4aW5zW3JdLG4pO3ZhciBvLGE9e307Zm9yKG8gaW4gdClzKG8pO2ZvcihvIGluIGUpXyh0LG8pfHxzKG8pO2Z1bmN0aW9uIHMocil7dmFyIGk9TnRbcl18fEh0O2Fbcl09aSh0W3JdLGVbcl0sbixyKX1yZXR1cm4gYX1mdW5jdGlvbiBYdCh0LGUsbixyKXtpZigic3RyaW5nIj09PXR5cGVvZiBuKXt2YXIgaT10W2VdO2lmKF8oaSxuKSlyZXR1cm4gaVtuXTt2YXIgbz14KG4pO2lmKF8oaSxvKSlyZXR1cm4gaVtvXTt2YXIgYT1rKG8pO2lmKF8oaSxhKSlyZXR1cm4gaVthXTt2YXIgcz1pW25dfHxpW29dfHxpW2FdO3JldHVybiBzfX1mdW5jdGlvbiBHdCh0LGUsbixyKXt2YXIgaT1lW3RdLG89IV8obix0KSxhPW5bdF0scz1adChCb29sZWFuLGkudHlwZSk7aWYocz4tMSlpZihvJiYhXyhpLCJkZWZhdWx0IikpYT0hMTtlbHNlIGlmKCIiPT09YXx8YT09PVQodCkpe3ZhciBjPVp0KFN0cmluZyxpLnR5cGUpOyhjPDB8fHM8YykmJihhPSEwKX1pZih2b2lkIDA9PT1hKXthPVF0KHIsaSx0KTt2YXIgdT1PdDtBdCghMCksSXQoYSksQXQodSl9cmV0dXJuIGF9ZnVuY3Rpb24gUXQodCxlLG4pe2lmKF8oZSwiZGVmYXVsdCIpKXt2YXIgcj1lLmRlZmF1bHQ7cmV0dXJuIHQmJnQuJG9wdGlvbnMucHJvcHNEYXRhJiZ2b2lkIDA9PT10LiRvcHRpb25zLnByb3BzRGF0YVtuXSYmdm9pZCAwIT09dC5fcHJvcHNbbl0/dC5fcHJvcHNbbl06ImZ1bmN0aW9uIj09PXR5cGVvZiByJiYiRnVuY3Rpb24iIT09SnQoZS50eXBlKT9yLmNhbGwodCk6cn19ZnVuY3Rpb24gSnQodCl7dmFyIGU9dCYmdC50b1N0cmluZygpLm1hdGNoKC9eXHMqZnVuY3Rpb24gKFx3KykvKTtyZXR1cm4gZT9lWzFdOiIifWZ1bmN0aW9uIEt0KHQsZSl7cmV0dXJuIEp0KHQpPT09SnQoZSl9ZnVuY3Rpb24gWnQodCxlKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gS3QoZSx0KT8wOi0xO2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKylpZihLdChlW25dLHQpKXJldHVybiBuO3JldHVybi0xfWZ1bmN0aW9uIHRlKHQsZSxuKXtndCgpO3RyeXtpZihlKXt2YXIgcj1lO3doaWxlKHI9ci4kcGFyZW50KXt2YXIgaT1yLiRvcHRpb25zLmVycm9yQ2FwdHVyZWQ7aWYoaSlmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKyl0cnl7dmFyIGE9ITE9PT1pW29dLmNhbGwocix0LGUsbik7aWYoYSlyZXR1cm59Y2F0Y2goTWEpe25lKE1hLHIsImVycm9yQ2FwdHVyZWQgaG9vayIpfX19bmUodCxlLG4pfWZpbmFsbHl7bXQoKX19ZnVuY3Rpb24gZWUodCxlLG4scixpKXt2YXIgbzt0cnl7bz1uP3QuYXBwbHkoZSxuKTp0LmNhbGwoZSksbyYmIW8uX2lzVnVlJiZoKG8pJiYhby5faGFuZGxlZCYmKG8uY2F0Y2goKGZ1bmN0aW9uKHQpe3JldHVybiB0ZSh0LHIsaSsiIChQcm9taXNlL2FzeW5jKSIpfSkpLG8uX2hhbmRsZWQ9ITApfWNhdGNoKE1hKXt0ZShNYSxyLGkpfXJldHVybiBvfWZ1bmN0aW9uIG5lKHQsZSxuKXtpZihXLmVycm9ySGFuZGxlcil0cnl7cmV0dXJuIFcuZXJyb3JIYW5kbGVyLmNhbGwobnVsbCx0LGUsbil9Y2F0Y2goTWEpe01hIT09dCYmcmUoTWEsbnVsbCwiY29uZmlnLmVycm9ySGFuZGxlciIpfXJlKHQsZSxuKX1mdW5jdGlvbiByZSh0LGUsbil7aWYoIVEmJiFKfHwidW5kZWZpbmVkIj09PXR5cGVvZiBjb25zb2xlKXRocm93IHQ7Y29uc29sZS5lcnJvcih0KX12YXIgaWUsb2U9ITEsYWU9W10sc2U9ITE7ZnVuY3Rpb24gY2UoKXtzZT0hMTt2YXIgdD1hZS5zbGljZSgwKTthZS5sZW5ndGg9MDtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdKCl9aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgUHJvbWlzZSYmbHQoUHJvbWlzZSkpe3ZhciB1ZT1Qcm9taXNlLnJlc29sdmUoKTtpZT1mdW5jdGlvbigpe3VlLnRoZW4oY2UpLHJ0JiZzZXRUaW1lb3V0KFApfSxvZT0hMH1lbHNlIGlmKHR0fHwidW5kZWZpbmVkIj09PXR5cGVvZiBNdXRhdGlvbk9ic2VydmVyfHwhbHQoTXV0YXRpb25PYnNlcnZlcikmJiJbb2JqZWN0IE11dGF0aW9uT2JzZXJ2ZXJDb25zdHJ1Y3Rvcl0iIT09TXV0YXRpb25PYnNlcnZlci50b1N0cmluZygpKWllPSJ1bmRlZmluZWQiIT09dHlwZW9mIHNldEltbWVkaWF0ZSYmbHQoc2V0SW1tZWRpYXRlKT9mdW5jdGlvbigpe3NldEltbWVkaWF0ZShjZSl9OmZ1bmN0aW9uKCl7c2V0VGltZW91dChjZSwwKX07ZWxzZXt2YXIgbGU9MSxmZT1uZXcgTXV0YXRpb25PYnNlcnZlcihjZSksZGU9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKGxlKSk7ZmUub2JzZXJ2ZShkZSx7Y2hhcmFjdGVyRGF0YTohMH0pLGllPWZ1bmN0aW9uKCl7bGU9KGxlKzEpJTIsZGUuZGF0YT1TdHJpbmcobGUpfSxvZT0hMH1mdW5jdGlvbiBoZSh0LGUpe3ZhciBuO2lmKGFlLnB1c2goKGZ1bmN0aW9uKCl7aWYodCl0cnl7dC5jYWxsKGUpfWNhdGNoKE1hKXt0ZShNYSxlLCJuZXh0VGljayIpfWVsc2UgbiYmbihlKX0pKSxzZXx8KHNlPSEwLGllKCkpLCF0JiYidW5kZWZpbmVkIiE9PXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7bj10fSkpfXZhciBwZT1uZXcgZnQ7ZnVuY3Rpb24gdmUodCl7Z2UodCxwZSkscGUuY2xlYXIoKX1mdW5jdGlvbiBnZSh0LGUpe3ZhciBuLHIsaT1BcnJheS5pc0FycmF5KHQpO2lmKCEoIWkmJiFjKHQpfHxPYmplY3QuaXNGcm96ZW4odCl8fHQgaW5zdGFuY2VvZiBidCkpe2lmKHQuX19vYl9fKXt2YXIgbz10Ll9fb2JfXy5kZXAuaWQ7aWYoZS5oYXMobykpcmV0dXJuO2UuYWRkKG8pfWlmKGkpe249dC5sZW5ndGg7d2hpbGUobi0tKWdlKHRbbl0sZSl9ZWxzZXtyPU9iamVjdC5rZXlzKHQpLG49ci5sZW5ndGg7d2hpbGUobi0tKWdlKHRbcltuXV0sZSl9fX12YXIgbWU9dygoZnVuY3Rpb24odCl7dmFyIGU9IiYiPT09dC5jaGFyQXQoMCk7dD1lP3Quc2xpY2UoMSk6dDt2YXIgbj0ifiI9PT10LmNoYXJBdCgwKTt0PW4/dC5zbGljZSgxKTp0O3ZhciByPSIhIj09PXQuY2hhckF0KDApO3JldHVybiB0PXI/dC5zbGljZSgxKTp0LHtuYW1lOnQsb25jZTpuLGNhcHR1cmU6cixwYXNzaXZlOmV9fSkpO2Z1bmN0aW9uIGJlKHQsZSl7ZnVuY3Rpb24gbigpe3ZhciB0PWFyZ3VtZW50cyxyPW4uZm5zO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybiBlZShyLG51bGwsYXJndW1lbnRzLGUsInYtb24gaGFuZGxlciIpO2Zvcih2YXIgaT1yLnNsaWNlKCksbz0wO288aS5sZW5ndGg7bysrKWVlKGlbb10sbnVsbCx0LGUsInYtb24gaGFuZGxlciIpfXJldHVybiBuLmZucz10LG59ZnVuY3Rpb24geWUodCxlLG4saSxhLHMpe3ZhciBjLHUsbCxmO2ZvcihjIGluIHQpdT10W2NdLGw9ZVtjXSxmPW1lKGMpLHIodSl8fChyKGwpPyhyKHUuZm5zKSYmKHU9dFtjXT1iZSh1LHMpKSxvKGYub25jZSkmJih1PXRbY109YShmLm5hbWUsdSxmLmNhcHR1cmUpKSxuKGYubmFtZSx1LGYuY2FwdHVyZSxmLnBhc3NpdmUsZi5wYXJhbXMpKTp1IT09bCYmKGwuZm5zPXUsdFtjXT1sKSk7Zm9yKGMgaW4gZSlyKHRbY10pJiYoZj1tZShjKSxpKGYubmFtZSxlW2NdLGYuY2FwdHVyZSkpfWZ1bmN0aW9uIF9lKHQsZSxuKXt2YXIgYTt0IGluc3RhbmNlb2YgYnQmJih0PXQuZGF0YS5ob29rfHwodC5kYXRhLmhvb2s9e30pKTt2YXIgcz10W2VdO2Z1bmN0aW9uIGMoKXtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxiKGEuZm5zLGMpfXIocyk/YT1iZShbY10pOmkocy5mbnMpJiZvKHMubWVyZ2VkKT8oYT1zLGEuZm5zLnB1c2goYykpOmE9YmUoW3MsY10pLGEubWVyZ2VkPSEwLHRbZV09YX1mdW5jdGlvbiB3ZSh0LGUsbixvKXt2YXIgYT1lLm9wdGlvbnMubXBPcHRpb25zJiZlLm9wdGlvbnMubXBPcHRpb25zLnByb3BlcnRpZXM7aWYocihhKSlyZXR1cm4gbjt2YXIgcz1lLm9wdGlvbnMubXBPcHRpb25zLmV4dGVybmFsQ2xhc3Nlc3x8W10sYz10LmF0dHJzLHU9dC5wcm9wcztpZihpKGMpfHxpKHUpKWZvcih2YXIgbCBpbiBhKXt2YXIgZj1UKGwpLGQ9eGUobix1LGwsZiwhMCl8fHhlKG4sYyxsLGYsITEpO2QmJm5bbF0mJi0xIT09cy5pbmRleE9mKGYpJiZvW3gobltsXSldJiYobltsXT1vW3gobltsXSldKX1yZXR1cm4gbn1mdW5jdGlvbiBTZSh0LGUsbixvKXt2YXIgYT1lLm9wdGlvbnMucHJvcHM7aWYocihhKSlyZXR1cm4gd2UodCxlLHt9LG8pO3ZhciBzPXt9LGM9dC5hdHRycyx1PXQucHJvcHM7aWYoaShjKXx8aSh1KSlmb3IodmFyIGwgaW4gYSl7dmFyIGY9VChsKTt4ZShzLHUsbCxmLCEwKXx8eGUocyxjLGwsZiwhMSl9cmV0dXJuIHdlKHQsZSxzLG8pfWZ1bmN0aW9uIHhlKHQsZSxuLHIsbyl7aWYoaShlKSl7aWYoXyhlLG4pKXJldHVybiB0W25dPWVbbl0sb3x8ZGVsZXRlIGVbbl0sITA7aWYoXyhlLHIpKXJldHVybiB0W25dPWVbcl0sb3x8ZGVsZXRlIGVbcl0sITB9cmV0dXJuITF9ZnVuY3Rpb24ga2UodCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYoQXJyYXkuaXNBcnJheSh0W2VdKSlyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSx0KTtyZXR1cm4gdH1mdW5jdGlvbiBDZSh0KXtyZXR1cm4gcyh0KT9bd3QodCldOkFycmF5LmlzQXJyYXkodCk/T2UodCk6dm9pZCAwfWZ1bmN0aW9uIFRlKHQpe3JldHVybiBpKHQpJiZpKHQudGV4dCkmJmEodC5pc0NvbW1lbnQpfWZ1bmN0aW9uIE9lKHQsZSl7dmFyIG4sYSxjLHUsbD1bXTtmb3Iobj0wO248dC5sZW5ndGg7bisrKWE9dFtuXSxyKGEpfHwiYm9vbGVhbiI9PT10eXBlb2YgYXx8KGM9bC5sZW5ndGgtMSx1PWxbY10sQXJyYXkuaXNBcnJheShhKT9hLmxlbmd0aD4wJiYoYT1PZShhLChlfHwiIikrIl8iK24pLFRlKGFbMF0pJiZUZSh1KSYmKGxbY109d3QodS50ZXh0K2FbMF0udGV4dCksYS5zaGlmdCgpKSxsLnB1c2guYXBwbHkobCxhKSk6cyhhKT9UZSh1KT9sW2NdPXd0KHUudGV4dCthKToiIiE9PWEmJmwucHVzaCh3dChhKSk6VGUoYSkmJlRlKHUpP2xbY109d3QodS50ZXh0K2EudGV4dCk6KG8odC5faXNWTGlzdCkmJmkoYS50YWcpJiZyKGEua2V5KSYmaShlKSYmKGEua2V5PSJfX3ZsaXN0IitlKyJfIituKyJfXyIpLGwucHVzaChhKSkpO3JldHVybiBsfWZ1bmN0aW9uIEFlKHQpe3ZhciBlPXQuJG9wdGlvbnMucHJvdmlkZTtlJiYodC5fcHJvdmlkZWQ9ImZ1bmN0aW9uIj09PXR5cGVvZiBlP2UuY2FsbCh0KTplKX1mdW5jdGlvbiBFZSh0KXt2YXIgZT1qZSh0LiRvcHRpb25zLmluamVjdCx0KTtlJiYoQXQoITEpLE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4pe1B0KHQsbixlW25dKX0pKSxBdCghMCkpfWZ1bmN0aW9uIGplKHQsZSl7aWYodCl7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1kdD9SZWZsZWN0Lm93bktleXModCk6T2JqZWN0LmtleXModCksaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgbz1yW2ldO2lmKCJfX29iX18iIT09byl7dmFyIGE9dFtvXS5mcm9tLHM9ZTt3aGlsZShzKXtpZihzLl9wcm92aWRlZCYmXyhzLl9wcm92aWRlZCxhKSl7bltvXT1zLl9wcm92aWRlZFthXTticmVha31zPXMuJHBhcmVudH1pZighcylpZigiZGVmYXVsdCJpbiB0W29dKXt2YXIgYz10W29dLmRlZmF1bHQ7bltvXT0iZnVuY3Rpb24iPT09dHlwZW9mIGM/Yy5jYWxsKGUpOmN9ZWxzZSAwfX1yZXR1cm4gbn19ZnVuY3Rpb24gTWUodCxlKXtpZighdHx8IXQubGVuZ3RoKXJldHVybnt9O2Zvcih2YXIgbj17fSxyPTAsaT10Lmxlbmd0aDtyPGk7cisrKXt2YXIgbz10W3JdLGE9by5kYXRhO2lmKGEmJmEuYXR0cnMmJmEuYXR0cnMuc2xvdCYmZGVsZXRlIGEuYXR0cnMuc2xvdCxvLmNvbnRleHQhPT1lJiZvLmZuQ29udGV4dCE9PWV8fCFhfHxudWxsPT1hLnNsb3Qpby5hc3luY01ldGEmJm8uYXN5bmNNZXRhLmRhdGEmJiJwYWdlIj09PW8uYXN5bmNNZXRhLmRhdGEuc2xvdD8oblsicGFnZSJdfHwoblsicGFnZSJdPVtdKSkucHVzaChvKToobi5kZWZhdWx0fHwobi5kZWZhdWx0PVtdKSkucHVzaChvKTtlbHNle3ZhciBzPWEuc2xvdCxjPW5bc118fChuW3NdPVtdKTsidGVtcGxhdGUiPT09by50YWc/Yy5wdXNoLmFwcGx5KGMsby5jaGlsZHJlbnx8W10pOmMucHVzaChvKX19Zm9yKHZhciB1IGluIG4pblt1XS5ldmVyeShJZSkmJmRlbGV0ZSBuW3VdO3JldHVybiBufWZ1bmN0aW9uIEllKHQpe3JldHVybiB0LmlzQ29tbWVudCYmIXQuYXN5bmNGYWN0b3J5fHwiICI9PT10LnRleHR9ZnVuY3Rpb24gUGUodCxlLHIpe3ZhciBpLG89T2JqZWN0LmtleXMoZSkubGVuZ3RoPjAsYT10PyEhdC4kc3RhYmxlOiFvLHM9dCYmdC4ka2V5O2lmKHQpe2lmKHQuX25vcm1hbGl6ZWQpcmV0dXJuIHQuX25vcm1hbGl6ZWQ7aWYoYSYmciYmciE9PW4mJnM9PT1yLiRrZXkmJiFvJiYhci4kaGFzTm9ybWFsKXJldHVybiByO2Zvcih2YXIgYyBpbiBpPXt9LHQpdFtjXSYmIiQiIT09Y1swXSYmKGlbY109JGUoZSxjLHRbY10pKX1lbHNlIGk9e307Zm9yKHZhciB1IGluIGUpdSBpbiBpfHwoaVt1XT1MZShlLHUpKTtyZXR1cm4gdCYmT2JqZWN0LmlzRXh0ZW5zaWJsZSh0KSYmKHQuX25vcm1hbGl6ZWQ9aSkscShpLCIkc3RhYmxlIixhKSxxKGksIiRrZXkiLHMpLHEoaSwiJGhhc05vcm1hbCIsbyksaX1mdW5jdGlvbiAkZSh0LGUsbil7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoP24uYXBwbHkobnVsbCxhcmd1bWVudHMpOm4oe30pO3JldHVybiB0PXQmJiJvYmplY3QiPT09dHlwZW9mIHQmJiFBcnJheS5pc0FycmF5KHQpP1t0XTpDZSh0KSx0JiYoMD09PXQubGVuZ3RofHwxPT09dC5sZW5ndGgmJnRbMF0uaXNDb21tZW50KT92b2lkIDA6dH07cmV0dXJuIG4ucHJveHkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse2dldDpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSkscn1mdW5jdGlvbiBMZSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0W2VdfX1mdW5jdGlvbiBSZSh0LGUpe3ZhciBuLHIsbyxhLHM7aWYoQXJyYXkuaXNBcnJheSh0KXx8InN0cmluZyI9PT10eXBlb2YgdClmb3Iobj1uZXcgQXJyYXkodC5sZW5ndGgpLHI9MCxvPXQubGVuZ3RoO3I8bztyKyspbltyXT1lKHRbcl0scixyLHIpO2Vsc2UgaWYoIm51bWJlciI9PT10eXBlb2YgdClmb3Iobj1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1lKHIrMSxyLHIscik7ZWxzZSBpZihjKHQpKWlmKGR0JiZ0W1N5bWJvbC5pdGVyYXRvcl0pe249W107dmFyIHU9dFtTeW1ib2wuaXRlcmF0b3JdKCksbD11Lm5leHQoKTt3aGlsZSghbC5kb25lKW4ucHVzaChlKGwudmFsdWUsbi5sZW5ndGgscixyKyspKSxsPXUubmV4dCgpfWVsc2UgZm9yKGE9T2JqZWN0LmtleXModCksbj1uZXcgQXJyYXkoYS5sZW5ndGgpLHI9MCxvPWEubGVuZ3RoO3I8bztyKyspcz1hW3JdLG5bcl09ZSh0W3NdLHMscixyKTtyZXR1cm4gaShuKXx8KG49W10pLG4uX2lzVkxpc3Q9ITAsbn1mdW5jdGlvbiBOZSh0LGUsbixyKXt2YXIgaSxvPXRoaXMuJHNjb3BlZFNsb3RzW3RdO28/KG49bnx8e30sciYmKG49TShNKHt9LHIpLG4pKSxpPW8obix0aGlzLG4uX2kpfHxlKTppPXRoaXMuJHNsb3RzW3RdfHxlO3ZhciBhPW4mJm4uc2xvdDtyZXR1cm4gYT90aGlzLiRjcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIse3Nsb3Q6YX0saSk6aX1mdW5jdGlvbiBEZSh0KXtyZXR1cm4gWHQodGhpcy4kb3B0aW9ucywiZmlsdGVycyIsdCwhMCl8fEx9ZnVuY3Rpb24gQmUodCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8tMT09PXQuaW5kZXhPZihlKTp0IT09ZX1mdW5jdGlvbiBGZSh0LGUsbixyLGkpe3ZhciBvPVcua2V5Q29kZXNbZV18fG47cmV0dXJuIGkmJnImJiFXLmtleUNvZGVzW2VdP0JlKGkscik6bz9CZShvLHQpOnI/VChyKSE9PWU6dm9pZCAwfWZ1bmN0aW9uIHplKHQsZSxuLHIsaSl7aWYobilpZihjKG4pKXt2YXIgbztBcnJheS5pc0FycmF5KG4pJiYobj1JKG4pKTt2YXIgYT1mdW5jdGlvbihhKXtpZigiY2xhc3MiPT09YXx8InN0eWxlIj09PWF8fG0oYSkpbz10O2Vsc2V7dmFyIHM9dC5hdHRycyYmdC5hdHRycy50eXBlO289cnx8Vy5tdXN0VXNlUHJvcChlLHMsYSk/dC5kb21Qcm9wc3x8KHQuZG9tUHJvcHM9e30pOnQuYXR0cnN8fCh0LmF0dHJzPXt9KX12YXIgYz14KGEpLHU9VChhKTtpZighKGMgaW4gbykmJiEodSBpbiBvKSYmKG9bYV09blthXSxpKSl7dmFyIGw9dC5vbnx8KHQub249e30pO2xbInVwZGF0ZToiK2FdPWZ1bmN0aW9uKHQpe25bYV09dH19fTtmb3IodmFyIHMgaW4gbilhKHMpfWVsc2U7cmV0dXJuIHR9ZnVuY3Rpb24gV2UodCxlKXt2YXIgbj10aGlzLl9zdGF0aWNUcmVlc3x8KHRoaXMuX3N0YXRpY1RyZWVzPVtdKSxyPW5bdF07cmV0dXJuIHImJiFlfHwocj1uW3RdPXRoaXMuJG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zW3RdLmNhbGwodGhpcy5fcmVuZGVyUHJveHksbnVsbCx0aGlzKSxVZShyLCJfX3N0YXRpY19fIit0LCExKSkscn1mdW5jdGlvbiBIZSh0LGUsbil7cmV0dXJuIFVlKHQsIl9fb25jZV9fIitlKyhuPyJfIituOiIiKSwhMCksdH1mdW5jdGlvbiBVZSh0LGUsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdJiYic3RyaW5nIiE9PXR5cGVvZiB0W3JdJiZxZSh0W3JdLGUrIl8iK3Isbik7ZWxzZSBxZSh0LGUsbil9ZnVuY3Rpb24gcWUodCxlLG4pe3QuaXNTdGF0aWM9ITAsdC5rZXk9ZSx0LmlzT25jZT1ufWZ1bmN0aW9uIFZlKHQsZSl7aWYoZSlpZihsKGUpKXt2YXIgbj10Lm9uPXQub24/TSh7fSx0Lm9uKTp7fTtmb3IodmFyIHIgaW4gZSl7dmFyIGk9bltyXSxvPWVbcl07bltyXT1pP1tdLmNvbmNhdChpLG8pOm99fWVsc2U7cmV0dXJuIHR9ZnVuY3Rpb24gWWUodCxlLG4scil7ZT1lfHx7JHN0YWJsZTohbn07Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBvPXRbaV07QXJyYXkuaXNBcnJheShvKT9ZZShvLGUsbik6byYmKG8ucHJveHkmJihvLmZuLnByb3h5PSEwKSxlW28ua2V5XT1vLmZuKX1yZXR1cm4gciYmKGUuJGtleT1yKSxlfWZ1bmN0aW9uIFhlKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKz0yKXt2YXIgcj1lW25dOyJzdHJpbmciPT09dHlwZW9mIHImJnImJih0W2Vbbl1dPWVbbisxXSl9cmV0dXJuIHR9ZnVuY3Rpb24gR2UodCxlKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiB0P2UrdDp0fWZ1bmN0aW9uIFFlKHQpe3QuX289SGUsdC5fbj12LHQuX3M9cCx0Ll9sPVJlLHQuX3Q9TmUsdC5fcT1SLHQuX2k9Tix0Ll9tPVdlLHQuX2Y9RGUsdC5faz1GZSx0Ll9iPXplLHQuX3Y9d3QsdC5fZT1fdCx0Ll91PVllLHQuX2c9VmUsdC5fZD1YZSx0Ll9wPUdlfWZ1bmN0aW9uIEplKHQsZSxyLGksYSl7dmFyIHMsYz10aGlzLHU9YS5vcHRpb25zO18oaSwiX3VpZCIpPyhzPU9iamVjdC5jcmVhdGUoaSkscy5fb3JpZ2luYWw9aSk6KHM9aSxpPWkuX29yaWdpbmFsKTt2YXIgbD1vKHUuX2NvbXBpbGVkKSxmPSFsO3RoaXMuZGF0YT10LHRoaXMucHJvcHM9ZSx0aGlzLmNoaWxkcmVuPXIsdGhpcy5wYXJlbnQ9aSx0aGlzLmxpc3RlbmVycz10Lm9ufHxuLHRoaXMuaW5qZWN0aW9ucz1qZSh1LmluamVjdCxpKSx0aGlzLnNsb3RzPWZ1bmN0aW9uKCl7cmV0dXJuIGMuJHNsb3RzfHxQZSh0LnNjb3BlZFNsb3RzLGMuJHNsb3RzPU1lKHIsaSkpLGMuJHNsb3RzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywic2NvcGVkU2xvdHMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBQZSh0LnNjb3BlZFNsb3RzLHRoaXMuc2xvdHMoKSl9fSksbCYmKHRoaXMuJG9wdGlvbnM9dSx0aGlzLiRzbG90cz10aGlzLnNsb3RzKCksdGhpcy4kc2NvcGVkU2xvdHM9UGUodC5zY29wZWRTbG90cyx0aGlzLiRzbG90cykpLHUuX3Njb3BlSWQ/dGhpcy5fYz1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz1mbihzLHQsZSxuLHIsZik7cmV0dXJuIG8mJiFBcnJheS5pc0FycmF5KG8pJiYoby5mblNjb3BlSWQ9dS5fc2NvcGVJZCxvLmZuQ29udGV4dD1pKSxvfTp0aGlzLl9jPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiBmbihzLHQsZSxuLHIsZil9fWZ1bmN0aW9uIEtlKHQsZSxyLG8sYSl7dmFyIHM9dC5vcHRpb25zLGM9e30sdT1zLnByb3BzO2lmKGkodSkpZm9yKHZhciBsIGluIHUpY1tsXT1HdChsLHUsZXx8bik7ZWxzZSBpKHIuYXR0cnMpJiZ0bihjLHIuYXR0cnMpLGkoci5wcm9wcykmJnRuKGMsci5wcm9wcyk7dmFyIGY9bmV3IEplKHIsYyxhLG8sdCksZD1zLnJlbmRlci5jYWxsKG51bGwsZi5fYyxmKTtpZihkIGluc3RhbmNlb2YgYnQpcmV0dXJuIFplKGQscixmLnBhcmVudCxzLGYpO2lmKEFycmF5LmlzQXJyYXkoZCkpe2Zvcih2YXIgaD1DZShkKXx8W10scD1uZXcgQXJyYXkoaC5sZW5ndGgpLHY9MDt2PGgubGVuZ3RoO3YrKylwW3ZdPVplKGhbdl0scixmLnBhcmVudCxzLGYpO3JldHVybiBwfX1mdW5jdGlvbiBaZSh0LGUsbixyLGkpe3ZhciBvPVN0KHQpO3JldHVybiBvLmZuQ29udGV4dD1uLG8uZm5PcHRpb25zPXIsZS5zbG90JiYoKG8uZGF0YXx8KG8uZGF0YT17fSkpLnNsb3Q9ZS5zbG90KSxvfWZ1bmN0aW9uIHRuKHQsZSl7Zm9yKHZhciBuIGluIGUpdFt4KG4pXT1lW25dfVFlKEplLnByb3RvdHlwZSk7dmFyIGVuPXtpbml0OmZ1bmN0aW9uKHQsZSl7aWYodC5jb21wb25lbnRJbnN0YW5jZSYmIXQuY29tcG9uZW50SW5zdGFuY2UuX2lzRGVzdHJveWVkJiZ0LmRhdGEua2VlcEFsaXZlKXt2YXIgbj10O2VuLnByZXBhdGNoKG4sbil9ZWxzZXt2YXIgcj10LmNvbXBvbmVudEluc3RhbmNlPW9uKHQsam4pO3IuJG1vdW50KGU/dC5lbG06dm9pZCAwLGUpfX0scHJlcGF0Y2g6ZnVuY3Rpb24odCxlKXt2YXIgbj1lLmNvbXBvbmVudE9wdGlvbnMscj1lLmNvbXBvbmVudEluc3RhbmNlPXQuY29tcG9uZW50SW5zdGFuY2U7TG4ocixuLnByb3BzRGF0YSxuLmxpc3RlbmVycyxlLG4uY2hpbGRyZW4pfSxpbnNlcnQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb250ZXh0LG49dC5jb21wb25lbnRJbnN0YW5jZTtuLl9pc01vdW50ZWR8fChCbihuLCJvblNlcnZpY2VDcmVhdGVkIiksQm4obiwib25TZXJ2aWNlQXR0YWNoZWQiKSxuLl9pc01vdW50ZWQ9ITAsQm4obiwibW91bnRlZCIpKSx0LmRhdGEua2VlcEFsaXZlJiYoZS5faXNNb3VudGVkP0tuKG4pOk5uKG4sITApKX0sZGVzdHJveTpmdW5jdGlvbih0KXt2YXIgZT10LmNvbXBvbmVudEluc3RhbmNlO2UuX2lzRGVzdHJveWVkfHwodC5kYXRhLmtlZXBBbGl2ZT9EbihlLCEwKTplLiRkZXN0cm95KCkpfX0sbm49T2JqZWN0LmtleXMoZW4pO2Z1bmN0aW9uIHJuKHQsZSxuLGEscyl7aWYoIXIodCkpe3ZhciB1PW4uJG9wdGlvbnMuX2Jhc2U7aWYoYyh0KSYmKHQ9dS5leHRlbmQodCkpLCJmdW5jdGlvbiI9PT10eXBlb2YgdCl7dmFyIGw7aWYocih0LmNpZCkmJihsPXQsdD13bihsLHUpLHZvaWQgMD09PXQpKXJldHVybiBfbihsLGUsbixhLHMpO2U9ZXx8e30sd3IodCksaShlLm1vZGVsKSYmY24odC5vcHRpb25zLGUpO3ZhciBmPVNlKGUsdCxzLG4pO2lmKG8odC5vcHRpb25zLmZ1bmN0aW9uYWwpKXJldHVybiBLZSh0LGYsZSxuLGEpO3ZhciBkPWUub247aWYoZS5vbj1lLm5hdGl2ZU9uLG8odC5vcHRpb25zLmFic3RyYWN0KSl7dmFyIGg9ZS5zbG90O2U9e30saCYmKGUuc2xvdD1oKX1hbihlKTt2YXIgcD10Lm9wdGlvbnMubmFtZXx8cyx2PW5ldyBidCgidnVlLWNvbXBvbmVudC0iK3QuY2lkKyhwPyItIitwOiIiKSxlLHZvaWQgMCx2b2lkIDAsdm9pZCAwLG4se0N0b3I6dCxwcm9wc0RhdGE6ZixsaXN0ZW5lcnM6ZCx0YWc6cyxjaGlsZHJlbjphfSxsKTtyZXR1cm4gdn19fWZ1bmN0aW9uIG9uKHQsZSl7dmFyIG49e19pc0NvbXBvbmVudDohMCxfcGFyZW50Vm5vZGU6dCxwYXJlbnQ6ZX0scj10LmRhdGEuaW5saW5lVGVtcGxhdGU7cmV0dXJuIGkocikmJihuLnJlbmRlcj1yLnJlbmRlcixuLnN0YXRpY1JlbmRlckZucz1yLnN0YXRpY1JlbmRlckZucyksbmV3IHQuY29tcG9uZW50T3B0aW9ucy5DdG9yKG4pfWZ1bmN0aW9uIGFuKHQpe2Zvcih2YXIgZT10Lmhvb2t8fCh0Lmhvb2s9e30pLG49MDtuPG5uLmxlbmd0aDtuKyspe3ZhciByPW5uW25dLGk9ZVtyXSxvPWVuW3JdO2k9PT1vfHxpJiZpLl9tZXJnZWR8fChlW3JdPWk/c24obyxpKTpvKX19ZnVuY3Rpb24gc24odCxlKXt2YXIgbj1mdW5jdGlvbihuLHIpe3QobixyKSxlKG4scil9O3JldHVybiBuLl9tZXJnZWQ9ITAsbn1mdW5jdGlvbiBjbih0LGUpe3ZhciBuPXQubW9kZWwmJnQubW9kZWwucHJvcHx8InZhbHVlIixyPXQubW9kZWwmJnQubW9kZWwuZXZlbnR8fCJpbnB1dCI7KGUuYXR0cnN8fChlLmF0dHJzPXt9KSlbbl09ZS5tb2RlbC52YWx1ZTt2YXIgbz1lLm9ufHwoZS5vbj17fSksYT1vW3JdLHM9ZS5tb2RlbC5jYWxsYmFjaztpKGEpPyhBcnJheS5pc0FycmF5KGEpPy0xPT09YS5pbmRleE9mKHMpOmEhPT1zKSYmKG9bcl09W3NdLmNvbmNhdChhKSk6b1tyXT1zfXZhciB1bj0xLGxuPTI7ZnVuY3Rpb24gZm4odCxlLG4scixpLGEpe3JldHVybihBcnJheS5pc0FycmF5KG4pfHxzKG4pKSYmKGk9cixyPW4sbj12b2lkIDApLG8oYSkmJihpPWxuKSxkbih0LGUsbixyLGkpfWZ1bmN0aW9uIGRuKHQsZSxuLHIsbyl7aWYoaShuKSYmaShuLl9fb2JfXykpcmV0dXJuIF90KCk7aWYoaShuKSYmaShuLmlzKSYmKGU9bi5pcyksIWUpcmV0dXJuIF90KCk7dmFyIGEscyxjOyhBcnJheS5pc0FycmF5KHIpJiYiZnVuY3Rpb24iPT09dHlwZW9mIHJbMF0mJihuPW58fHt9LG4uc2NvcGVkU2xvdHM9e2RlZmF1bHQ6clswXX0sci5sZW5ndGg9MCksbz09PWxuP3I9Q2Uocik6bz09PXVuJiYocj1rZShyKSksInN0cmluZyI9PT10eXBlb2YgZSk/KHM9dC4kdm5vZGUmJnQuJHZub2RlLm5zfHxXLmdldFRhZ05hbWVzcGFjZShlKSxhPVcuaXNSZXNlcnZlZFRhZyhlKT9uZXcgYnQoVy5wYXJzZVBsYXRmb3JtVGFnTmFtZShlKSxuLHIsdm9pZCAwLHZvaWQgMCx0KTpuJiZuLnByZXx8IWkoYz1YdCh0LiRvcHRpb25zLCJjb21wb25lbnRzIixlKSk/bmV3IGJ0KGUsbixyLHZvaWQgMCx2b2lkIDAsdCk6cm4oYyxuLHQscixlKSk6YT1ybihlLG4sdCxyKTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hOmkoYSk/KGkocykmJmhuKGEscyksaShuKSYmcG4obiksYSk6X3QoKX1mdW5jdGlvbiBobih0LGUsbil7aWYodC5ucz1lLCJmb3JlaWduT2JqZWN0Ij09PXQudGFnJiYoZT12b2lkIDAsbj0hMCksaSh0LmNoaWxkcmVuKSlmb3IodmFyIGE9MCxzPXQuY2hpbGRyZW4ubGVuZ3RoO2E8czthKyspe3ZhciBjPXQuY2hpbGRyZW5bYV07aShjLnRhZykmJihyKGMubnMpfHxvKG4pJiYic3ZnIiE9PWMudGFnKSYmaG4oYyxlLG4pfX1mdW5jdGlvbiBwbih0KXtjKHQuc3R5bGUpJiZ2ZSh0LnN0eWxlKSxjKHQuY2xhc3MpJiZ2ZSh0LmNsYXNzKX1mdW5jdGlvbiB2bih0KXt0Ll92bm9kZT1udWxsLHQuX3N0YXRpY1RyZWVzPW51bGw7dmFyIGU9dC4kb3B0aW9ucyxyPXQuJHZub2RlPWUuX3BhcmVudFZub2RlLGk9ciYmci5jb250ZXh0O3QuJHNsb3RzPU1lKGUuX3JlbmRlckNoaWxkcmVuLGkpLHQuJHNjb3BlZFNsb3RzPW4sdC5fYz1mdW5jdGlvbihlLG4scixpKXtyZXR1cm4gZm4odCxlLG4scixpLCExKX0sdC4kY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLG4scixpKXtyZXR1cm4gZm4odCxlLG4scixpLCEwKX07dmFyIG89ciYmci5kYXRhO1B0KHQsIiRhdHRycyIsbyYmby5hdHRyc3x8bixudWxsLCEwKSxQdCh0LCIkbGlzdGVuZXJzIixlLl9wYXJlbnRMaXN0ZW5lcnN8fG4sbnVsbCwhMCl9dmFyIGduLG1uPW51bGw7ZnVuY3Rpb24gYm4odCl7UWUodC5wcm90b3R5cGUpLHQucHJvdG90eXBlLiRuZXh0VGljaz1mdW5jdGlvbih0KXtyZXR1cm4gaGUodCx0aGlzKX0sdC5wcm90b3R5cGUuX3JlbmRlcj1mdW5jdGlvbigpe3ZhciB0LGU9dGhpcyxuPWUuJG9wdGlvbnMscj1uLnJlbmRlcixpPW4uX3BhcmVudFZub2RlO2kmJihlLiRzY29wZWRTbG90cz1QZShpLmRhdGEuc2NvcGVkU2xvdHMsZS4kc2xvdHMsZS4kc2NvcGVkU2xvdHMpKSxlLiR2bm9kZT1pO3RyeXttbj1lLHQ9ci5jYWxsKGUuX3JlbmRlclByb3h5LGUuJGNyZWF0ZUVsZW1lbnQpfWNhdGNoKE1hKXt0ZShNYSxlLCJyZW5kZXIiKSx0PWUuX3Zub2RlfWZpbmFsbHl7bW49bnVsbH1yZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmMT09PXQubGVuZ3RoJiYodD10WzBdKSx0IGluc3RhbmNlb2YgYnR8fCh0PV90KCkpLHQucGFyZW50PWksdH19ZnVuY3Rpb24geW4odCxlKXtyZXR1cm4odC5fX2VzTW9kdWxlfHxkdCYmIk1vZHVsZSI9PT10W1N5bWJvbC50b1N0cmluZ1RhZ10pJiYodD10LmRlZmF1bHQpLGModCk/ZS5leHRlbmQodCk6dH1mdW5jdGlvbiBfbih0LGUsbixyLGkpe3ZhciBvPV90KCk7cmV0dXJuIG8uYXN5bmNGYWN0b3J5PXQsby5hc3luY01ldGE9e2RhdGE6ZSxjb250ZXh0Om4sY2hpbGRyZW46cix0YWc6aX0sb31mdW5jdGlvbiB3bih0LGUpe2lmKG8odC5lcnJvcikmJmkodC5lcnJvckNvbXApKXJldHVybiB0LmVycm9yQ29tcDtpZihpKHQucmVzb2x2ZWQpKXJldHVybiB0LnJlc29sdmVkO3ZhciBuPW1uO2lmKG4mJmkodC5vd25lcnMpJiYtMT09PXQub3duZXJzLmluZGV4T2YobikmJnQub3duZXJzLnB1c2gobiksbyh0LmxvYWRpbmcpJiZpKHQubG9hZGluZ0NvbXApKXJldHVybiB0LmxvYWRpbmdDb21wO2lmKG4mJiFpKHQub3duZXJzKSl7dmFyIGE9dC5vd25lcnM9W25dLHM9ITAsdT1udWxsLGw9bnVsbDtuLiRvbigiaG9vazpkZXN0cm95ZWQiLChmdW5jdGlvbigpe3JldHVybiBiKGEsbil9KSk7dmFyIGY9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj1hLmxlbmd0aDtlPG47ZSsrKWFbZV0uJGZvcmNlVXBkYXRlKCk7dCYmKGEubGVuZ3RoPTAsbnVsbCE9PXUmJihjbGVhclRpbWVvdXQodSksdT1udWxsKSxudWxsIT09bCYmKGNsZWFyVGltZW91dChsKSxsPW51bGwpKX0sZD1EKChmdW5jdGlvbihuKXt0LnJlc29sdmVkPXluKG4sZSkscz9hLmxlbmd0aD0wOmYoITApfSkpLHA9RCgoZnVuY3Rpb24oZSl7aSh0LmVycm9yQ29tcCkmJih0LmVycm9yPSEwLGYoITApKX0pKSx2PXQoZCxwKTtyZXR1cm4gYyh2KSYmKGgodik/cih0LnJlc29sdmVkKSYmdi50aGVuKGQscCk6aCh2LmNvbXBvbmVudCkmJih2LmNvbXBvbmVudC50aGVuKGQscCksaSh2LmVycm9yKSYmKHQuZXJyb3JDb21wPXluKHYuZXJyb3IsZSkpLGkodi5sb2FkaW5nKSYmKHQubG9hZGluZ0NvbXA9eW4odi5sb2FkaW5nLGUpLDA9PT12LmRlbGF5P3QubG9hZGluZz0hMDp1PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dT1udWxsLHIodC5yZXNvbHZlZCkmJnIodC5lcnJvcikmJih0LmxvYWRpbmc9ITAsZighMSkpfSksdi5kZWxheXx8MjAwKSksaSh2LnRpbWVvdXQpJiYobD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2w9bnVsbCxyKHQucmVzb2x2ZWQpJiZwKG51bGwpfSksdi50aW1lb3V0KSkpKSxzPSExLHQubG9hZGluZz90LmxvYWRpbmdDb21wOnQucmVzb2x2ZWR9fWZ1bmN0aW9uIFNuKHQpe3JldHVybiB0LmlzQ29tbWVudCYmdC5hc3luY0ZhY3Rvcnl9ZnVuY3Rpb24geG4odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG49dFtlXTtpZihpKG4pJiYoaShuLmNvbXBvbmVudE9wdGlvbnMpfHxTbihuKSkpcmV0dXJuIG59fWZ1bmN0aW9uIGtuKHQpe3QuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHQuX2hhc0hvb2tFdmVudD0hMTt2YXIgZT10LiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7ZSYmQW4odCxlKX1mdW5jdGlvbiBDbih0LGUpe2duLiRvbih0LGUpfWZ1bmN0aW9uIFRuKHQsZSl7Z24uJG9mZih0LGUpfWZ1bmN0aW9uIE9uKHQsZSl7dmFyIG49Z247cmV0dXJuIGZ1bmN0aW9uIHIoKXt2YXIgaT1lLmFwcGx5KG51bGwsYXJndW1lbnRzKTtudWxsIT09aSYmbi4kb2ZmKHQscil9fWZ1bmN0aW9uIEFuKHQsZSxuKXtnbj10LHllKGUsbnx8e30sQ24sVG4sT24sdCksZ249dm9pZCAwfWZ1bmN0aW9uIEVuKHQpe3ZhciBlPS9eaG9vazovO3QucHJvdG90eXBlLiRvbj1mdW5jdGlvbih0LG4pe3ZhciByPXRoaXM7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGk9MCxvPXQubGVuZ3RoO2k8bztpKyspci4kb24odFtpXSxuKTtlbHNlKHIuX2V2ZW50c1t0XXx8KHIuX2V2ZW50c1t0XT1bXSkpLnB1c2gobiksZS50ZXN0KHQpJiYoci5faGFzSG9va0V2ZW50PSEwKTtyZXR1cm4gcn0sdC5wcm90b3R5cGUuJG9uY2U9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO2Z1bmN0aW9uIHIoKXtuLiRvZmYodCxyKSxlLmFwcGx5KG4sYXJndW1lbnRzKX1yZXR1cm4gci5mbj1lLG4uJG9uKHQsciksbn0sdC5wcm90b3R5cGUuJG9mZj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG4uX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLG47aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7cisrKW4uJG9mZih0W3JdLGUpO3JldHVybiBufXZhciBvLGE9bi5fZXZlbnRzW3RdO2lmKCFhKXJldHVybiBuO2lmKCFlKXJldHVybiBuLl9ldmVudHNbdF09bnVsbCxuO3ZhciBzPWEubGVuZ3RoO3doaWxlKHMtLSlpZihvPWFbc10sbz09PWV8fG8uZm49PT1lKXthLnNwbGljZShzLDEpO2JyZWFrfXJldHVybiBufSx0LnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZS5fZXZlbnRzW3RdO2lmKG4pe249bi5sZW5ndGg+MT9qKG4pOm47Zm9yKHZhciByPWooYXJndW1lbnRzLDEpLGk9J2V2ZW50IGhhbmRsZXIgZm9yICInK3QrJyInLG89MCxhPW4ubGVuZ3RoO288YTtvKyspZWUobltvXSxlLHIsZSxpKX1yZXR1cm4gZX19dmFyIGpuPW51bGw7ZnVuY3Rpb24gTW4odCl7dmFyIGU9am47cmV0dXJuIGpuPXQsZnVuY3Rpb24oKXtqbj1lfX1mdW5jdGlvbiBJbih0KXt2YXIgZT10LiRvcHRpb25zLG49ZS5wYXJlbnQ7aWYobiYmIWUuYWJzdHJhY3Qpe3doaWxlKG4uJG9wdGlvbnMuYWJzdHJhY3QmJm4uJHBhcmVudCluPW4uJHBhcmVudDtuLiRjaGlsZHJlbi5wdXNoKHQpfXQuJHBhcmVudD1uLHQuJHJvb3Q9bj9uLiRyb290OnQsdC4kY2hpbGRyZW49W10sdC4kcmVmcz17fSx0Ll93YXRjaGVyPW51bGwsdC5faW5hY3RpdmU9bnVsbCx0Ll9kaXJlY3RJbmFjdGl2ZT0hMSx0Ll9pc01vdW50ZWQ9ITEsdC5faXNEZXN0cm95ZWQ9ITEsdC5faXNCZWluZ0Rlc3Ryb3llZD0hMX1mdW5jdGlvbiBQbih0KXt0LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxyPW4uJGVsLGk9bi5fdm5vZGUsbz1NbihuKTtuLl92bm9kZT10LG4uJGVsPWk/bi5fX3BhdGNoX18oaSx0KTpuLl9fcGF0Y2hfXyhuLiRlbCx0LGUsITEpLG8oKSxyJiYoci5fX3Z1ZV9fPW51bGwpLG4uJGVsJiYobi4kZWwuX192dWVfXz1uKSxuLiR2bm9kZSYmbi4kcGFyZW50JiZuLiR2bm9kZT09PW4uJHBhcmVudC5fdm5vZGUmJihuLiRwYXJlbnQuJGVsPW4uJGVsKX0sdC5wcm90b3R5cGUuJGZvcmNlVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Ll93YXRjaGVyJiZ0Ll93YXRjaGVyLnVwZGF0ZSgpfSx0LnByb3RvdHlwZS4kZGVzdHJveT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoIXQuX2lzQmVpbmdEZXN0cm95ZWQpe0JuKHQsImJlZm9yZURlc3Ryb3kiKSx0Ll9pc0JlaW5nRGVzdHJveWVkPSEwO3ZhciBlPXQuJHBhcmVudDshZXx8ZS5faXNCZWluZ0Rlc3Ryb3llZHx8dC4kb3B0aW9ucy5hYnN0cmFjdHx8YihlLiRjaGlsZHJlbix0KSx0Ll93YXRjaGVyJiZ0Ll93YXRjaGVyLnRlYXJkb3duKCk7dmFyIG49dC5fd2F0Y2hlcnMubGVuZ3RoO3doaWxlKG4tLSl0Ll93YXRjaGVyc1tuXS50ZWFyZG93bigpO3QuX2RhdGEuX19vYl9fJiZ0Ll9kYXRhLl9fb2JfXy52bUNvdW50LS0sdC5faXNEZXN0cm95ZWQ9ITAsdC5fX3BhdGNoX18odC5fdm5vZGUsbnVsbCksQm4odCwiZGVzdHJveWVkIiksdC4kb2ZmKCksdC4kZWwmJih0LiRlbC5fX3Z1ZV9fPW51bGwpLHQuJHZub2RlJiYodC4kdm5vZGUucGFyZW50PW51bGwpfX19ZnVuY3Rpb24gJG4odCxlLG4pe3ZhciByO3JldHVybiB0LiRlbD1lLHQuJG9wdGlvbnMucmVuZGVyfHwodC4kb3B0aW9ucy5yZW5kZXI9X3QpLEJuKHQsImJlZm9yZU1vdW50Iikscj1mdW5jdGlvbigpe3QuX3VwZGF0ZSh0Ll9yZW5kZXIoKSxuKX0sbmV3IG5yKHQscixQLHtiZWZvcmU6ZnVuY3Rpb24oKXt0Ll9pc01vdW50ZWQmJiF0Ll9pc0Rlc3Ryb3llZCYmQm4odCwiYmVmb3JlVXBkYXRlIil9fSwhMCksbj0hMSxudWxsPT10LiR2bm9kZSYmKEJuKHQsIm9uU2VydmljZUNyZWF0ZWQiKSxCbih0LCJvblNlcnZpY2VBdHRhY2hlZCIpLHQuX2lzTW91bnRlZD0hMCxCbih0LCJtb3VudGVkIikpLHR9ZnVuY3Rpb24gTG4odCxlLHIsaSxvKXt2YXIgYT1pLmRhdGEuc2NvcGVkU2xvdHMscz10LiRzY29wZWRTbG90cyxjPSEhKGEmJiFhLiRzdGFibGV8fHMhPT1uJiYhcy4kc3RhYmxlfHxhJiZ0LiRzY29wZWRTbG90cy4ka2V5IT09YS4ka2V5KSx1PSEhKG98fHQuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVufHxjKTtpZih0LiRvcHRpb25zLl9wYXJlbnRWbm9kZT1pLHQuJHZub2RlPWksdC5fdm5vZGUmJih0Ll92bm9kZS5wYXJlbnQ9aSksdC4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW49byx0LiRhdHRycz1pLmRhdGEuYXR0cnN8fG4sdC4kbGlzdGVuZXJzPXJ8fG4sZSYmdC4kb3B0aW9ucy5wcm9wcyl7QXQoITEpO2Zvcih2YXIgbD10Ll9wcm9wcyxmPXQuJG9wdGlvbnMuX3Byb3BLZXlzfHxbXSxkPTA7ZDxmLmxlbmd0aDtkKyspe3ZhciBoPWZbZF0scD10LiRvcHRpb25zLnByb3BzO2xbaF09R3QoaCxwLGUsdCl9QXQoITApLHQuJG9wdGlvbnMucHJvcHNEYXRhPWV9dC5fJHVwZGF0ZVByb3BlcnRpZXMmJnQuXyR1cGRhdGVQcm9wZXJ0aWVzKHQpLHI9cnx8bjt2YXIgdj10LiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7dC4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzPXIsQW4odCxyLHYpLHUmJih0LiRzbG90cz1NZShvLGkuY29udGV4dCksdC4kZm9yY2VVcGRhdGUoKSl9ZnVuY3Rpb24gUm4odCl7d2hpbGUodCYmKHQ9dC4kcGFyZW50KSlpZih0Ll9pbmFjdGl2ZSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBObih0LGUpe2lmKGUpe2lmKHQuX2RpcmVjdEluYWN0aXZlPSExLFJuKHQpKXJldHVybn1lbHNlIGlmKHQuX2RpcmVjdEluYWN0aXZlKXJldHVybjtpZih0Ll9pbmFjdGl2ZXx8bnVsbD09PXQuX2luYWN0aXZlKXt0Ll9pbmFjdGl2ZT0hMTtmb3IodmFyIG49MDtuPHQuJGNoaWxkcmVuLmxlbmd0aDtuKyspTm4odC4kY2hpbGRyZW5bbl0pO0JuKHQsImFjdGl2YXRlZCIpfX1mdW5jdGlvbiBEbih0LGUpe2lmKCghZXx8KHQuX2RpcmVjdEluYWN0aXZlPSEwLCFSbih0KSkpJiYhdC5faW5hY3RpdmUpe3QuX2luYWN0aXZlPSEwO2Zvcih2YXIgbj0wO248dC4kY2hpbGRyZW4ubGVuZ3RoO24rKylEbih0LiRjaGlsZHJlbltuXSk7Qm4odCwiZGVhY3RpdmF0ZWQiKX19ZnVuY3Rpb24gQm4odCxlKXtndCgpO3ZhciBuPXQuJG9wdGlvbnNbZV0scj1lKyIgaG9vayI7aWYobilmb3IodmFyIGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspZWUobltpXSx0LG51bGwsdCxyKTt0Ll9oYXNIb29rRXZlbnQmJnQuJGVtaXQoImhvb2s6IitlKSxtdCgpfXZhciBGbj1bXSx6bj1bXSxXbj17fSxIbj0hMSxVbj0hMSxxbj0wO2Z1bmN0aW9uIFZuKCl7cW49Rm4ubGVuZ3RoPXpuLmxlbmd0aD0wLFduPXt9LEhuPVVuPSExfXZhciBZbj0wLFhuPURhdGUubm93O2lmKFEmJiF0dCl7dmFyIEduPXdpbmRvdy5wZXJmb3JtYW5jZTtHbiYmImZ1bmN0aW9uIj09PXR5cGVvZiBHbi5ub3cmJlhuKCk+ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50IikudGltZVN0YW1wJiYoWG49ZnVuY3Rpb24oKXtyZXR1cm4gR24ubm93KCl9KX1mdW5jdGlvbiBRbigpe3ZhciB0LGU7Zm9yKFluPVhuKCksVW49ITAsRm4uc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5pZC1lLmlkfSkpLHFuPTA7cW48Rm4ubGVuZ3RoO3FuKyspdD1Gbltxbl0sdC5iZWZvcmUmJnQuYmVmb3JlKCksZT10LmlkLFduW2VdPW51bGwsdC5ydW4oKTt2YXIgbj16bi5zbGljZSgpLHI9Rm4uc2xpY2UoKTtWbigpLFpuKG4pLEpuKHIpLHV0JiZXLmRldnRvb2xzJiZ1dC5lbWl0KCJmbHVzaCIpfWZ1bmN0aW9uIEpuKHQpe3ZhciBlPXQubGVuZ3RoO3doaWxlKGUtLSl7dmFyIG49dFtlXSxyPW4udm07ci5fd2F0Y2hlcj09PW4mJnIuX2lzTW91bnRlZCYmIXIuX2lzRGVzdHJveWVkJiZCbihyLCJ1cGRhdGVkIil9fWZ1bmN0aW9uIEtuKHQpe3QuX2luYWN0aXZlPSExLHpuLnB1c2godCl9ZnVuY3Rpb24gWm4odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXS5faW5hY3RpdmU9ITAsTm4odFtlXSwhMCl9ZnVuY3Rpb24gdHIodCl7dmFyIGU9dC5pZDtpZihudWxsPT1XbltlXSl7aWYoV25bZV09ITAsVW4pe3ZhciBuPUZuLmxlbmd0aC0xO3doaWxlKG4+cW4mJkZuW25dLmlkPnQuaWQpbi0tO0ZuLnNwbGljZShuKzEsMCx0KX1lbHNlIEZuLnB1c2godCk7SG58fChIbj0hMCxoZShRbikpfX12YXIgZXI9MCxucj1mdW5jdGlvbih0LGUsbixyLGkpe3RoaXMudm09dCxpJiYodC5fd2F0Y2hlcj10aGlzKSx0Ll93YXRjaGVycy5wdXNoKHRoaXMpLHI/KHRoaXMuZGVlcD0hIXIuZGVlcCx0aGlzLnVzZXI9ISFyLnVzZXIsdGhpcy5sYXp5PSEhci5sYXp5LHRoaXMuc3luYz0hIXIuc3luYyx0aGlzLmJlZm9yZT1yLmJlZm9yZSk6dGhpcy5kZWVwPXRoaXMudXNlcj10aGlzLmxhenk9dGhpcy5zeW5jPSExLHRoaXMuY2I9bix0aGlzLmlkPSsrZXIsdGhpcy5hY3RpdmU9ITAsdGhpcy5kaXJ0eT10aGlzLmxhenksdGhpcy5kZXBzPVtdLHRoaXMubmV3RGVwcz1bXSx0aGlzLmRlcElkcz1uZXcgZnQsdGhpcy5uZXdEZXBJZHM9bmV3IGZ0LHRoaXMuZXhwcmVzc2lvbj0iIiwiZnVuY3Rpb24iPT09dHlwZW9mIGU/dGhpcy5nZXR0ZXI9ZToodGhpcy5nZXR0ZXI9WShlKSx0aGlzLmdldHRlcnx8KHRoaXMuZ2V0dGVyPVApKSx0aGlzLnZhbHVlPXRoaXMubGF6eT92b2lkIDA6dGhpcy5nZXQoKX07bnIucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe3ZhciB0O2d0KHRoaXMpO3ZhciBlPXRoaXMudm07dHJ5e3Q9dGhpcy5nZXR0ZXIuY2FsbChlLGUpfWNhdGNoKE1hKXtpZighdGhpcy51c2VyKXRocm93IE1hO3RlKE1hLGUsJ2dldHRlciBmb3Igd2F0Y2hlciAiJyt0aGlzLmV4cHJlc3Npb24rJyInKX1maW5hbGx5e3RoaXMuZGVlcCYmdmUodCksbXQoKSx0aGlzLmNsZWFudXBEZXBzKCl9cmV0dXJuIHR9LG5yLnByb3RvdHlwZS5hZGREZXA9ZnVuY3Rpb24odCl7dmFyIGU9dC5pZDt0aGlzLm5ld0RlcElkcy5oYXMoZSl8fCh0aGlzLm5ld0RlcElkcy5hZGQoZSksdGhpcy5uZXdEZXBzLnB1c2godCksdGhpcy5kZXBJZHMuaGFzKGUpfHx0LmFkZFN1Yih0aGlzKSl9LG5yLnByb3RvdHlwZS5jbGVhbnVwRGVwcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZGVwcy5sZW5ndGg7d2hpbGUodC0tKXt2YXIgZT10aGlzLmRlcHNbdF07dGhpcy5uZXdEZXBJZHMuaGFzKGUuaWQpfHxlLnJlbW92ZVN1Yih0aGlzKX12YXIgbj10aGlzLmRlcElkczt0aGlzLmRlcElkcz10aGlzLm5ld0RlcElkcyx0aGlzLm5ld0RlcElkcz1uLHRoaXMubmV3RGVwSWRzLmNsZWFyKCksbj10aGlzLmRlcHMsdGhpcy5kZXBzPXRoaXMubmV3RGVwcyx0aGlzLm5ld0RlcHM9bix0aGlzLm5ld0RlcHMubGVuZ3RoPTB9LG5yLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt0aGlzLmxhenk/dGhpcy5kaXJ0eT0hMDp0aGlzLnN5bmM/dGhpcy5ydW4oKTp0cih0aGlzKX0sbnIucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt2YXIgdD10aGlzLmdldCgpO2lmKHQhPT10aGlzLnZhbHVlfHxjKHQpfHx0aGlzLmRlZXApe3ZhciBlPXRoaXMudmFsdWU7aWYodGhpcy52YWx1ZT10LHRoaXMudXNlcil0cnl7dGhpcy5jYi5jYWxsKHRoaXMudm0sdCxlKX1jYXRjaChNYSl7dGUoTWEsdGhpcy52bSwnY2FsbGJhY2sgZm9yIHdhdGNoZXIgIicrdGhpcy5leHByZXNzaW9uKyciJyl9ZWxzZSB0aGlzLmNiLmNhbGwodGhpcy52bSx0LGUpfX19LG5yLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5nZXQoKSx0aGlzLmRpcnR5PSExfSxuci5wcm90b3R5cGUuZGVwZW5kPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kZXBzLmxlbmd0aDt3aGlsZSh0LS0pdGhpcy5kZXBzW3RdLmRlcGVuZCgpfSxuci5wcm90b3R5cGUudGVhcmRvd249ZnVuY3Rpb24oKXtpZih0aGlzLmFjdGl2ZSl7dGhpcy52bS5faXNCZWluZ0Rlc3Ryb3llZHx8Yih0aGlzLnZtLl93YXRjaGVycyx0aGlzKTt2YXIgdD10aGlzLmRlcHMubGVuZ3RoO3doaWxlKHQtLSl0aGlzLmRlcHNbdF0ucmVtb3ZlU3ViKHRoaXMpO3RoaXMuYWN0aXZlPSExfX07dmFyIHJyPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6UCxzZXQ6UH07ZnVuY3Rpb24gaXIodCxlLG4pe3JyLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzW2VdW25dfSxyci5zZXQ9ZnVuY3Rpb24odCl7dGhpc1tlXVtuXT10fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHJyKX1mdW5jdGlvbiBvcih0KXt0Ll93YXRjaGVycz1bXTt2YXIgZT10LiRvcHRpb25zO2UucHJvcHMmJmFyKHQsZS5wcm9wcyksZS5tZXRob2RzJiZwcih0LGUubWV0aG9kcyksZS5kYXRhP3NyKHQpOkl0KHQuX2RhdGE9e30sITApLGUuY29tcHV0ZWQmJmxyKHQsZS5jb21wdXRlZCksZS53YXRjaCYmZS53YXRjaCE9PW90JiZ2cih0LGUud2F0Y2gpfWZ1bmN0aW9uIGFyKHQsZSl7dmFyIG49dC4kb3B0aW9ucy5wcm9wc0RhdGF8fHt9LHI9dC5fcHJvcHM9e30saT10LiRvcHRpb25zLl9wcm9wS2V5cz1bXSxvPSF0LiRwYXJlbnQ7b3x8QXQoITEpO3ZhciBhPWZ1bmN0aW9uKG8pe2kucHVzaChvKTt2YXIgYT1HdChvLGUsbix0KTtQdChyLG8sYSksbyBpbiB0fHxpcih0LCJfcHJvcHMiLG8pfTtmb3IodmFyIHMgaW4gZSlhKHMpO0F0KCEwKX1mdW5jdGlvbiBzcih0KXt2YXIgZT10LiRvcHRpb25zLmRhdGE7ZT10Ll9kYXRhPSJmdW5jdGlvbiI9PT10eXBlb2YgZT9jcihlLHQpOmV8fHt9LGwoZSl8fChlPXt9KTt2YXIgbj1PYmplY3Qua2V5cyhlKSxyPXQuJG9wdGlvbnMucHJvcHMsaT0odC4kb3B0aW9ucy5tZXRob2RzLG4ubGVuZ3RoKTt3aGlsZShpLS0pe3ZhciBvPW5baV07MCxyJiZfKHIsbyl8fFUobyl8fGlyKHQsIl9kYXRhIixvKX1JdChlLCEwKX1mdW5jdGlvbiBjcih0LGUpe2d0KCk7dHJ5e3JldHVybiB0LmNhbGwoZSxlKX1jYXRjaChNYSl7cmV0dXJuIHRlKE1hLGUsImRhdGEoKSIpLHt9fWZpbmFsbHl7bXQoKX19dmFyIHVyPXtsYXp5OiEwfTtmdW5jdGlvbiBscih0LGUpe3ZhciBuPXQuX2NvbXB1dGVkV2F0Y2hlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSxyPWN0KCk7Zm9yKHZhciBpIGluIGUpe3ZhciBvPWVbaV0sYT0iZnVuY3Rpb24iPT09dHlwZW9mIG8/bzpvLmdldDswLHJ8fChuW2ldPW5ldyBucih0LGF8fFAsUCx1cikpLGkgaW4gdHx8ZnIodCxpLG8pfX1mdW5jdGlvbiBmcih0LGUsbil7dmFyIHI9IWN0KCk7ImZ1bmN0aW9uIj09PXR5cGVvZiBuPyhyci5nZXQ9cj9kcihlKTpocihuKSxyci5zZXQ9UCk6KHJyLmdldD1uLmdldD9yJiYhMSE9PW4uY2FjaGU/ZHIoZSk6aHIobi5nZXQpOlAscnIuc2V0PW4uc2V0fHxQKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHJyKX1mdW5jdGlvbiBkcih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jb21wdXRlZFdhdGNoZXJzJiZ0aGlzLl9jb21wdXRlZFdhdGNoZXJzW3RdO2lmKGUpcmV0dXJuIGUuZGlydHkmJmUuZXZhbHVhdGUoKSx2dC5TaGFyZWRPYmplY3QudGFyZ2V0JiZlLmRlcGVuZCgpLGUudmFsdWV9fWZ1bmN0aW9uIGhyKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmNhbGwodGhpcyx0aGlzKX19ZnVuY3Rpb24gcHIodCxlKXt0LiRvcHRpb25zLnByb3BzO2Zvcih2YXIgbiBpbiBlKXRbbl09ImZ1bmN0aW9uIiE9PXR5cGVvZiBlW25dP1A6RShlW25dLHQpfWZ1bmN0aW9uIHZyKHQsZSl7Zm9yKHZhciBuIGluIGUpe3ZhciByPWVbbl07aWYoQXJyYXkuaXNBcnJheShyKSlmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKylncih0LG4scltpXSk7ZWxzZSBncih0LG4scil9fWZ1bmN0aW9uIGdyKHQsZSxuLHIpe3JldHVybiBsKG4pJiYocj1uLG49bi5oYW5kbGVyKSwic3RyaW5nIj09PXR5cGVvZiBuJiYobj10W25dKSx0LiR3YXRjaChlLG4scil9ZnVuY3Rpb24gbXIodCl7dmFyIGU9e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhfX0sbj17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BzfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCIkZGF0YSIsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCIkcHJvcHMiLG4pLHQucHJvdG90eXBlLiRzZXQ9JHQsdC5wcm90b3R5cGUuJGRlbGV0ZT1MdCx0LnByb3RvdHlwZS4kd2F0Y2g9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXM7aWYobChlKSlyZXR1cm4gZ3Iocix0LGUsbik7bj1ufHx7fSxuLnVzZXI9ITA7dmFyIGk9bmV3IG5yKHIsdCxlLG4pO2lmKG4uaW1tZWRpYXRlKXRyeXtlLmNhbGwocixpLnZhbHVlKX1jYXRjaChvKXt0ZShvLHIsJ2NhbGxiYWNrIGZvciBpbW1lZGlhdGUgd2F0Y2hlciAiJytpLmV4cHJlc3Npb24rJyInKX1yZXR1cm4gZnVuY3Rpb24oKXtpLnRlYXJkb3duKCl9fX12YXIgYnI9MDtmdW5jdGlvbiB5cih0KXt0LnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2UuX3VpZD1icisrLGUuX2lzVnVlPSEwLHQmJnQuX2lzQ29tcG9uZW50P19yKGUsdCk6ZS4kb3B0aW9ucz1ZdCh3cihlLmNvbnN0cnVjdG9yKSx0fHx7fSxlKSxlLl9yZW5kZXJQcm94eT1lLGUuX3NlbGY9ZSxJbihlKSxrbihlKSx2bihlKSxCbihlLCJiZWZvcmVDcmVhdGUiKSwhZS5fJGZhbGxiYWNrJiZFZShlKSxvcihlKSwhZS5fJGZhbGxiYWNrJiZBZShlKSwhZS5fJGZhbGxiYWNrJiZCbihlLCJjcmVhdGVkIiksZS4kb3B0aW9ucy5lbCYmZS4kbW91bnQoZS4kb3B0aW9ucy5lbCl9fWZ1bmN0aW9uIF9yKHQsZSl7dmFyIG49dC4kb3B0aW9ucz1PYmplY3QuY3JlYXRlKHQuY29uc3RydWN0b3Iub3B0aW9ucykscj1lLl9wYXJlbnRWbm9kZTtuLnBhcmVudD1lLnBhcmVudCxuLl9wYXJlbnRWbm9kZT1yO3ZhciBpPXIuY29tcG9uZW50T3B0aW9ucztuLnByb3BzRGF0YT1pLnByb3BzRGF0YSxuLl9wYXJlbnRMaXN0ZW5lcnM9aS5saXN0ZW5lcnMsbi5fcmVuZGVyQ2hpbGRyZW49aS5jaGlsZHJlbixuLl9jb21wb25lbnRUYWc9aS50YWcsZS5yZW5kZXImJihuLnJlbmRlcj1lLnJlbmRlcixuLnN0YXRpY1JlbmRlckZucz1lLnN0YXRpY1JlbmRlckZucyl9ZnVuY3Rpb24gd3IodCl7dmFyIGU9dC5vcHRpb25zO2lmKHQuc3VwZXIpe3ZhciBuPXdyKHQuc3VwZXIpLHI9dC5zdXBlck9wdGlvbnM7aWYobiE9PXIpe3Quc3VwZXJPcHRpb25zPW47dmFyIGk9U3IodCk7aSYmTSh0LmV4dGVuZE9wdGlvbnMsaSksZT10Lm9wdGlvbnM9WXQobix0LmV4dGVuZE9wdGlvbnMpLGUubmFtZSYmKGUuY29tcG9uZW50c1tlLm5hbWVdPXQpfX1yZXR1cm4gZX1mdW5jdGlvbiBTcih0KXt2YXIgZSxuPXQub3B0aW9ucyxyPXQuc2VhbGVkT3B0aW9ucztmb3IodmFyIGkgaW4gbiluW2ldIT09cltpXSYmKGV8fChlPXt9KSxlW2ldPW5baV0pO3JldHVybiBlfWZ1bmN0aW9uIHhyKHQpe3RoaXMuX2luaXQodCl9ZnVuY3Rpb24ga3IodCl7dC51c2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faW5zdGFsbGVkUGx1Z2luc3x8KHRoaXMuX2luc3RhbGxlZFBsdWdpbnM9W10pO2lmKGUuaW5kZXhPZih0KT4tMSlyZXR1cm4gdGhpczt2YXIgbj1qKGFyZ3VtZW50cywxKTtyZXR1cm4gbi51bnNoaWZ0KHRoaXMpLCJmdW5jdGlvbiI9PT10eXBlb2YgdC5pbnN0YWxsP3QuaW5zdGFsbC5hcHBseSh0LG4pOiJmdW5jdGlvbiI9PT10eXBlb2YgdCYmdC5hcHBseShudWxsLG4pLGUucHVzaCh0KSx0aGlzfX1mdW5jdGlvbiBDcih0KXt0Lm1peGluPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnM9WXQodGhpcy5vcHRpb25zLHQpLHRoaXN9fWZ1bmN0aW9uIFRyKHQpe3QuY2lkPTA7dmFyIGU9MTt0LmV4dGVuZD1mdW5jdGlvbih0KXt0PXR8fHt9O3ZhciBuPXRoaXMscj1uLmNpZCxpPXQuX0N0b3J8fCh0Ll9DdG9yPXt9KTtpZihpW3JdKXJldHVybiBpW3JdO3ZhciBvPXQubmFtZXx8bi5vcHRpb25zLm5hbWU7dmFyIGE9ZnVuY3Rpb24odCl7dGhpcy5faW5pdCh0KX07cmV0dXJuIGEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLGEucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEsYS5jaWQ9ZSsrLGEub3B0aW9ucz1ZdChuLm9wdGlvbnMsdCksYVsic3VwZXIiXT1uLGEub3B0aW9ucy5wcm9wcyYmT3IoYSksYS5vcHRpb25zLmNvbXB1dGVkJiZBcihhKSxhLmV4dGVuZD1uLmV4dGVuZCxhLm1peGluPW4ubWl4aW4sYS51c2U9bi51c2UsRi5mb3JFYWNoKChmdW5jdGlvbih0KXthW3RdPW5bdF19KSksbyYmKGEub3B0aW9ucy5jb21wb25lbnRzW29dPWEpLGEuc3VwZXJPcHRpb25zPW4ub3B0aW9ucyxhLmV4dGVuZE9wdGlvbnM9dCxhLnNlYWxlZE9wdGlvbnM9TSh7fSxhLm9wdGlvbnMpLGlbcl09YSxhfX1mdW5jdGlvbiBPcih0KXt2YXIgZT10Lm9wdGlvbnMucHJvcHM7Zm9yKHZhciBuIGluIGUpaXIodC5wcm90b3R5cGUsIl9wcm9wcyIsbil9ZnVuY3Rpb24gQXIodCl7dmFyIGU9dC5vcHRpb25zLmNvbXB1dGVkO2Zvcih2YXIgbiBpbiBlKWZyKHQucHJvdG90eXBlLG4sZVtuXSl9ZnVuY3Rpb24gRXIodCl7Ri5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2VdPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG4/KCJjb21wb25lbnQiPT09ZSYmbChuKSYmKG4ubmFtZT1uLm5hbWV8fHQsbj10aGlzLm9wdGlvbnMuX2Jhc2UuZXh0ZW5kKG4pKSwiZGlyZWN0aXZlIj09PWUmJiJmdW5jdGlvbiI9PT10eXBlb2YgbiYmKG49e2JpbmQ6bix1cGRhdGU6bn0pLHRoaXMub3B0aW9uc1tlKyJzIl1bdF09bixuKTp0aGlzLm9wdGlvbnNbZSsicyJdW3RdfX0pKX1mdW5jdGlvbiBqcih0KXtyZXR1cm4gdCYmKHQuQ3Rvci5vcHRpb25zLm5hbWV8fHQudGFnKX1mdW5jdGlvbiBNcih0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QuaW5kZXhPZihlKT4tMToic3RyaW5nIj09PXR5cGVvZiB0P3Quc3BsaXQoIiwiKS5pbmRleE9mKGUpPi0xOiEhZih0KSYmdC50ZXN0KGUpfWZ1bmN0aW9uIElyKHQsZSl7dmFyIG49dC5jYWNoZSxyPXQua2V5cyxpPXQuX3Zub2RlO2Zvcih2YXIgbyBpbiBuKXt2YXIgYT1uW29dO2lmKGEpe3ZhciBzPWpyKGEuY29tcG9uZW50T3B0aW9ucyk7cyYmIWUocykmJlByKG4sbyxyLGkpfX19ZnVuY3Rpb24gUHIodCxlLG4scil7dmFyIGk9dFtlXTshaXx8ciYmaS50YWc9PT1yLnRhZ3x8aS5jb21wb25lbnRJbnN0YW5jZS4kZGVzdHJveSgpLHRbZV09bnVsbCxiKG4sZSl9eXIoeHIpLG1yKHhyKSxFbih4ciksUG4oeHIpLGJuKHhyKTt2YXIgJHI9W1N0cmluZyxSZWdFeHAsQXJyYXldLExyPXtuYW1lOiJrZWVwLWFsaXZlIixhYnN0cmFjdDohMCxwcm9wczp7aW5jbHVkZTokcixleGNsdWRlOiRyLG1heDpbU3RyaW5nLE51bWJlcl19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhY2hlPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5rZXlzPVtdfSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5jYWNoZSlQcih0aGlzLmNhY2hlLHQsdGhpcy5rZXlzKX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy4kd2F0Y2goImluY2x1ZGUiLChmdW5jdGlvbihlKXtJcih0LChmdW5jdGlvbih0KXtyZXR1cm4gTXIoZSx0KX0pKX0pKSx0aGlzLiR3YXRjaCgiZXhjbHVkZSIsKGZ1bmN0aW9uKGUpe0lyKHQsKGZ1bmN0aW9uKHQpe3JldHVybiFNcihlLHQpfSkpfSkpfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRzbG90cy5kZWZhdWx0LGU9eG4odCksbj1lJiZlLmNvbXBvbmVudE9wdGlvbnM7aWYobil7dmFyIHI9anIobiksaT10aGlzLG89aS5pbmNsdWRlLGE9aS5leGNsdWRlO2lmKG8mJighcnx8IU1yKG8scikpfHxhJiZyJiZNcihhLHIpKXJldHVybiBlO3ZhciBzPXRoaXMsYz1zLmNhY2hlLHU9cy5rZXlzLGw9bnVsbD09ZS5rZXk/bi5DdG9yLmNpZCsobi50YWc/Ijo6IituLnRhZzoiIik6ZS5rZXk7Y1tsXT8oZS5jb21wb25lbnRJbnN0YW5jZT1jW2xdLmNvbXBvbmVudEluc3RhbmNlLGIodSxsKSx1LnB1c2gobCkpOihjW2xdPWUsdS5wdXNoKGwpLHRoaXMubWF4JiZ1Lmxlbmd0aD5wYXJzZUludCh0aGlzLm1heCkmJlByKGMsdVswXSx1LHRoaXMuX3Zub2RlKSksZS5kYXRhLmtlZXBBbGl2ZT0hMH1yZXR1cm4gZXx8dCYmdFswXX19LFJyPXtLZWVwQWxpdmU6THJ9O2Z1bmN0aW9uIE5yKHQpe3ZhciBlPXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gV319O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJjb25maWciLGUpLHQudXRpbD17d2FybjpodCxleHRlbmQ6TSxtZXJnZU9wdGlvbnM6WXQsZGVmaW5lUmVhY3RpdmU6UHR9LHQuc2V0PSR0LHQuZGVsZXRlPUx0LHQubmV4dFRpY2s9aGUsdC5vYnNlcnZhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBJdCh0KSx0fSx0Lm9wdGlvbnM9T2JqZWN0LmNyZWF0ZShudWxsKSxGLmZvckVhY2goKGZ1bmN0aW9uKGUpe3Qub3B0aW9uc1tlKyJzIl09T2JqZWN0LmNyZWF0ZShudWxsKX0pKSx0Lm9wdGlvbnMuX2Jhc2U9dCxNKHQub3B0aW9ucy5jb21wb25lbnRzLFJyKSxrcih0KSxDcih0KSxUcih0KSxFcih0KX1Ocih4ciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHhyLnByb3RvdHlwZSwiJGlzU2VydmVyIix7Z2V0OmN0fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHhyLnByb3RvdHlwZSwiJHNzckNvbnRleHQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdm5vZGUmJnRoaXMuJHZub2RlLnNzckNvbnRleHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHhyLCJGdW5jdGlvbmFsUmVuZGVyQ29udGV4dCIse3ZhbHVlOkplfSkseHIudmVyc2lvbj0iMi42LjExIjt2YXIgRHI9Zygic3R5bGUsY2xhc3MiKSxCcj1nKCJpbnB1dCx0ZXh0YXJlYSxvcHRpb24sc2VsZWN0LHByb2dyZXNzIiksRnI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiJ2YWx1ZSI9PT1uJiZCcih0KSYmImJ1dHRvbiIhPT1lfHwic2VsZWN0ZWQiPT09biYmIm9wdGlvbiI9PT10fHwiY2hlY2tlZCI9PT1uJiYiaW5wdXQiPT09dHx8Im11dGVkIj09PW4mJiJ2aWRlbyI9PT10fSx6cj1nKCJjb250ZW50ZWRpdGFibGUsZHJhZ2dhYmxlLHNwZWxsY2hlY2siKSxXcj1nKCJldmVudHMsY2FyZXQsdHlwaW5nLHBsYWludGV4dC1vbmx5IiksSHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gWHIoZSl8fCJmYWxzZSI9PT1lPyJmYWxzZSI6ImNvbnRlbnRlZGl0YWJsZSI9PT10JiZXcihlKT9lOiJ0cnVlIn0sVXI9ZygiYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSxkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQsZGVmZXIsZGlzYWJsZWQsZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0aXBsZSxtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LHJlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUsdHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSIpLHFyPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixWcj1mdW5jdGlvbih0KXtyZXR1cm4iOiI9PT10LmNoYXJBdCg1KSYmInhsaW5rIj09PXQuc2xpY2UoMCw1KX0sWXI9ZnVuY3Rpb24odCl7cmV0dXJuIFZyKHQpP3Quc2xpY2UoNix0Lmxlbmd0aCk6IiJ9LFhyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fHwhMT09PXR9O2Z1bmN0aW9uIEdyKHQpe3ZhciBlPXQuZGF0YSxuPXQscj10O3doaWxlKGkoci5jb21wb25lbnRJbnN0YW5jZSkpcj1yLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSxyJiZyLmRhdGEmJihlPVFyKHIuZGF0YSxlKSk7d2hpbGUoaShuPW4ucGFyZW50KSluJiZuLmRhdGEmJihlPVFyKGUsbi5kYXRhKSk7cmV0dXJuIEpyKGUuc3RhdGljQ2xhc3MsZS5jbGFzcyl9ZnVuY3Rpb24gUXIodCxlKXtyZXR1cm57c3RhdGljQ2xhc3M6S3IodC5zdGF0aWNDbGFzcyxlLnN0YXRpY0NsYXNzKSxjbGFzczppKHQuY2xhc3MpP1t0LmNsYXNzLGUuY2xhc3NdOmUuY2xhc3N9fWZ1bmN0aW9uIEpyKHQsZSl7cmV0dXJuIGkodCl8fGkoZSk/S3IodCxacihlKSk6IiJ9ZnVuY3Rpb24gS3IodCxlKXtyZXR1cm4gdD9lP3QrIiAiK2U6dDplfHwiIn1mdW5jdGlvbiBacih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90aSh0KTpjKHQpP2VpKHQpOiJzdHJpbmciPT09dHlwZW9mIHQ/dDoiIn1mdW5jdGlvbiB0aSh0KXtmb3IodmFyIGUsbj0iIixyPTAsbz10Lmxlbmd0aDtyPG87cisrKWkoZT1acih0W3JdKSkmJiIiIT09ZSYmKG4mJihuKz0iICIpLG4rPWUpO3JldHVybiBufWZ1bmN0aW9uIGVpKHQpe3ZhciBlPSIiO2Zvcih2YXIgbiBpbiB0KXRbbl0mJihlJiYoZSs9IiAiKSxlKz1uKTtyZXR1cm4gZX12YXIgbmk9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLG1hdGg6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwifSxyaT1nKCJodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSxhZGRyZXNzLGFydGljbGUsYXNpZGUsZm9vdGVyLGhlYWRlcixoMSxoMixoMyxoNCxoNSxoNixoZ3JvdXAsbmF2LHNlY3Rpb24sZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LHMsc2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxzdWIsc3VwLHRpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRyYWNrLHZpZGVvLGVtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLGNhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRyLGJ1dHRvbixkYXRhbGlzdCxmaWVsZHNldCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCxvcHRpb24sb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSxkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVtLHN1bW1hcnksY29udGVudCxlbGVtZW50LHNoYWRvdyx0ZW1wbGF0ZSxibG9ja3F1b3RlLGlmcmFtZSx0Zm9vdCIpLGlpPWcoInN2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVmcyxkZXNjLGVsbGlwc2UsZmlsdGVyLGZvbnQtZmFjZSxmb3JlaWduT2JqZWN0LGcsZ2x5cGgsaW1hZ2UsbGluZSxtYXJrZXIsbWFzayxtaXNzaW5nLWdseXBoLHBhdGgscGF0dGVybixwb2x5Z29uLHBvbHlsaW5lLHJlY3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRleHRwYXRoLHRzcGFuLHVzZSx2aWV3IiwhMCksb2k9ZnVuY3Rpb24odCl7cmV0dXJuIHJpKHQpfHxpaSh0KX07ZnVuY3Rpb24gYWkodCl7cmV0dXJuIGlpKHQpPyJzdmciOiJtYXRoIj09PXQ/Im1hdGgiOnZvaWQgMH12YXIgc2k9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBjaSh0KXtpZighUSlyZXR1cm4hMDtpZihvaSh0KSlyZXR1cm4hMTtpZih0PXQudG9Mb3dlckNhc2UoKSxudWxsIT1zaVt0XSlyZXR1cm4gc2lbdF07dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtyZXR1cm4gdC5pbmRleE9mKCItIik+LTE/c2lbdF09ZS5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MVW5rbm93bkVsZW1lbnR8fGUuY29uc3RydWN0b3I9PT13aW5kb3cuSFRNTEVsZW1lbnQ6c2lbdF09L0hUTUxVbmtub3duRWxlbWVudC8udGVzdChlLnRvU3RyaW5nKCkpfXZhciB1aT1nKCJ0ZXh0LG51bWJlcixwYXNzd29yZCxzZWFyY2gsZW1haWwsdGVsLHVybCIpO2Z1bmN0aW9uIGxpKHQpe2lmKCJzdHJpbmciPT09dHlwZW9mIHQpe3ZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk7cmV0dXJuIGV8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpfXJldHVybiB0fWZ1bmN0aW9uIGZpKHQsZSl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtyZXR1cm4ic2VsZWN0IiE9PXR8fGUuZGF0YSYmZS5kYXRhLmF0dHJzJiZ2b2lkIDAhPT1lLmRhdGEuYXR0cnMubXVsdGlwbGUmJm4uc2V0QXR0cmlidXRlKCJtdWx0aXBsZSIsIm11bHRpcGxlIiksbn1mdW5jdGlvbiBkaSh0LGUpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobmlbdF0sZSl9ZnVuY3Rpb24gaGkodCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpfWZ1bmN0aW9uIHBpKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHQpfWZ1bmN0aW9uIHZpKHQsZSxuKXt0Lmluc2VydEJlZm9yZShlLG4pfWZ1bmN0aW9uIGdpKHQsZSl7dC5yZW1vdmVDaGlsZChlKX1mdW5jdGlvbiBtaSh0LGUpe3QuYXBwZW5kQ2hpbGQoZSl9ZnVuY3Rpb24gYmkodCl7cmV0dXJuIHQucGFyZW50Tm9kZX1mdW5jdGlvbiB5aSh0KXtyZXR1cm4gdC5uZXh0U2libGluZ31mdW5jdGlvbiBfaSh0KXtyZXR1cm4gdC50YWdOYW1lfWZ1bmN0aW9uIHdpKHQsZSl7dC50ZXh0Q29udGVudD1lfWZ1bmN0aW9uIFNpKHQsZSl7dC5zZXRBdHRyaWJ1dGUoZSwiIil9dmFyIHhpPU9iamVjdC5mcmVlemUoe2NyZWF0ZUVsZW1lbnQ6ZmksY3JlYXRlRWxlbWVudE5TOmRpLGNyZWF0ZVRleHROb2RlOmhpLGNyZWF0ZUNvbW1lbnQ6cGksaW5zZXJ0QmVmb3JlOnZpLHJlbW92ZUNoaWxkOmdpLGFwcGVuZENoaWxkOm1pLHBhcmVudE5vZGU6YmksbmV4dFNpYmxpbmc6eWksdGFnTmFtZTpfaSxzZXRUZXh0Q29udGVudDp3aSxzZXRTdHlsZVNjb3BlOlNpfSksa2k9e2NyZWF0ZTpmdW5jdGlvbih0LGUpe0NpKGUpfSx1cGRhdGU6ZnVuY3Rpb24odCxlKXt0LmRhdGEucmVmIT09ZS5kYXRhLnJlZiYmKENpKHQsITApLENpKGUpKX0sZGVzdHJveTpmdW5jdGlvbih0KXtDaSh0LCEwKX19O2Z1bmN0aW9uIENpKHQsZSl7dmFyIG49dC5kYXRhLnJlZjtpZihpKG4pKXt2YXIgcj10LmNvbnRleHQsbz10LmNvbXBvbmVudEluc3RhbmNlfHx0LmVsbSxhPXIuJHJlZnM7ZT9BcnJheS5pc0FycmF5KGFbbl0pP2IoYVtuXSxvKTphW25dPT09byYmKGFbbl09dm9pZCAwKTp0LmRhdGEucmVmSW5Gb3I/QXJyYXkuaXNBcnJheShhW25dKT9hW25dLmluZGV4T2Yobyk8MCYmYVtuXS5wdXNoKG8pOmFbbl09W29dOmFbbl09b319dmFyIFRpPW5ldyBidCgiIix7fSxbXSksT2k9WyJjcmVhdGUiLCJhY3RpdmF0ZSIsInVwZGF0ZSIsInJlbW92ZSIsImRlc3Ryb3kiXTtmdW5jdGlvbiBBaSh0LGUpe3JldHVybiB0LmtleT09PWUua2V5JiYodC50YWc9PT1lLnRhZyYmdC5pc0NvbW1lbnQ9PT1lLmlzQ29tbWVudCYmaSh0LmRhdGEpPT09aShlLmRhdGEpJiZFaSh0LGUpfHxvKHQuaXNBc3luY1BsYWNlaG9sZGVyKSYmdC5hc3luY0ZhY3Rvcnk9PT1lLmFzeW5jRmFjdG9yeSYmcihlLmFzeW5jRmFjdG9yeS5lcnJvcikpfWZ1bmN0aW9uIEVpKHQsZSl7aWYoImlucHV0IiE9PXQudGFnKXJldHVybiEwO3ZhciBuLHI9aShuPXQuZGF0YSkmJmkobj1uLmF0dHJzKSYmbi50eXBlLG89aShuPWUuZGF0YSkmJmkobj1uLmF0dHJzKSYmbi50eXBlO3JldHVybiByPT09b3x8dWkocikmJnVpKG8pfWZ1bmN0aW9uIGppKHQsZSxuKXt2YXIgcixvLGE9e307Zm9yKHI9ZTtyPD1uOysrcilvPXRbcl0ua2V5LGkobykmJihhW29dPXIpO3JldHVybiBhfWZ1bmN0aW9uIE1pKHQpe3ZhciBlLG4sYT17fSxjPXQubW9kdWxlcyx1PXQubm9kZU9wcztmb3IoZT0wO2U8T2kubGVuZ3RoOysrZSlmb3IoYVtPaVtlXV09W10sbj0wO248Yy5sZW5ndGg7KytuKWkoY1tuXVtPaVtlXV0pJiZhW09pW2VdXS5wdXNoKGNbbl1bT2lbZV1dKTtmdW5jdGlvbiBsKHQpe3JldHVybiBuZXcgYnQodS50YWdOYW1lKHQpLnRvTG93ZXJDYXNlKCkse30sW10sdm9pZCAwLHQpfWZ1bmN0aW9uIGYodCxlKXtmdW5jdGlvbiBuKCl7MD09PS0tbi5saXN0ZW5lcnMmJmQodCl9cmV0dXJuIG4ubGlzdGVuZXJzPWUsbn1mdW5jdGlvbiBkKHQpe3ZhciBlPXUucGFyZW50Tm9kZSh0KTtpKGUpJiZ1LnJlbW92ZUNoaWxkKGUsdCl9ZnVuY3Rpb24gaCh0LGUsbixyLGEscyxjKXtpZihpKHQuZWxtKSYmaShzKSYmKHQ9c1tjXT1TdCh0KSksdC5pc1Jvb3RJbnNlcnQ9IWEsIXAodCxlLG4scikpe3ZhciBsPXQuZGF0YSxmPXQuY2hpbGRyZW4sZD10LnRhZztpKGQpPyh0LmVsbT10Lm5zP3UuY3JlYXRlRWxlbWVudE5TKHQubnMsZCk6dS5jcmVhdGVFbGVtZW50KGQsdCksUyh0KSx5KHQsZixlKSxpKGwpJiZ3KHQsZSksYihuLHQuZWxtLHIpKTpvKHQuaXNDb21tZW50KT8odC5lbG09dS5jcmVhdGVDb21tZW50KHQudGV4dCksYihuLHQuZWxtLHIpKToodC5lbG09dS5jcmVhdGVUZXh0Tm9kZSh0LnRleHQpLGIobix0LmVsbSxyKSl9fWZ1bmN0aW9uIHAodCxlLG4scil7dmFyIGE9dC5kYXRhO2lmKGkoYSkpe3ZhciBzPWkodC5jb21wb25lbnRJbnN0YW5jZSkmJmEua2VlcEFsaXZlO2lmKGkoYT1hLmhvb2spJiZpKGE9YS5pbml0KSYmYSh0LCExKSxpKHQuY29tcG9uZW50SW5zdGFuY2UpKXJldHVybiB2KHQsZSksYihuLHQuZWxtLHIpLG8ocykmJm0odCxlLG4sciksITB9fWZ1bmN0aW9uIHYodCxlKXtpKHQuZGF0YS5wZW5kaW5nSW5zZXJ0KSYmKGUucHVzaC5hcHBseShlLHQuZGF0YS5wZW5kaW5nSW5zZXJ0KSx0LmRhdGEucGVuZGluZ0luc2VydD1udWxsKSx0LmVsbT10LmNvbXBvbmVudEluc3RhbmNlLiRlbCxfKHQpPyh3KHQsZSksUyh0KSk6KENpKHQpLGUucHVzaCh0KSl9ZnVuY3Rpb24gbSh0LGUsbixyKXt2YXIgbyxzPXQ7d2hpbGUocy5jb21wb25lbnRJbnN0YW5jZSlpZihzPXMuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLGkobz1zLmRhdGEpJiZpKG89by50cmFuc2l0aW9uKSl7Zm9yKG89MDtvPGEuYWN0aXZhdGUubGVuZ3RoOysrbylhLmFjdGl2YXRlW29dKFRpLHMpO2UucHVzaChzKTticmVha31iKG4sdC5lbG0scil9ZnVuY3Rpb24gYih0LGUsbil7aSh0KSYmKGkobik/dS5wYXJlbnROb2RlKG4pPT09dCYmdS5pbnNlcnRCZWZvcmUodCxlLG4pOnUuYXBwZW5kQ2hpbGQodCxlKSl9ZnVuY3Rpb24geSh0LGUsbil7aWYoQXJyYXkuaXNBcnJheShlKSl7MDtmb3IodmFyIHI9MDtyPGUubGVuZ3RoOysrciloKGVbcl0sbix0LmVsbSxudWxsLCEwLGUscil9ZWxzZSBzKHQudGV4dCkmJnUuYXBwZW5kQ2hpbGQodC5lbG0sdS5jcmVhdGVUZXh0Tm9kZShTdHJpbmcodC50ZXh0KSkpfWZ1bmN0aW9uIF8odCl7d2hpbGUodC5jb21wb25lbnRJbnN0YW5jZSl0PXQuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO3JldHVybiBpKHQudGFnKX1mdW5jdGlvbiB3KHQsbil7Zm9yKHZhciByPTA7cjxhLmNyZWF0ZS5sZW5ndGg7KytyKWEuY3JlYXRlW3JdKFRpLHQpO2U9dC5kYXRhLmhvb2ssaShlKSYmKGkoZS5jcmVhdGUpJiZlLmNyZWF0ZShUaSx0KSxpKGUuaW5zZXJ0KSYmbi5wdXNoKHQpKX1mdW5jdGlvbiBTKHQpe3ZhciBlO2lmKGkoZT10LmZuU2NvcGVJZCkpdS5zZXRTdHlsZVNjb3BlKHQuZWxtLGUpO2Vsc2V7dmFyIG49dDt3aGlsZShuKWkoZT1uLmNvbnRleHQpJiZpKGU9ZS4kb3B0aW9ucy5fc2NvcGVJZCkmJnUuc2V0U3R5bGVTY29wZSh0LmVsbSxlKSxuPW4ucGFyZW50fWkoZT1qbikmJmUhPT10LmNvbnRleHQmJmUhPT10LmZuQ29udGV4dCYmaShlPWUuJG9wdGlvbnMuX3Njb3BlSWQpJiYham4uX3Zub2RlLmVsbS5fX3VuaURhdGFzZXQmJnUuc2V0U3R5bGVTY29wZSh0LmVsbSxlKX1mdW5jdGlvbiB4KHQsZSxuLHIsaSxvKXtmb3IoO3I8PWk7KytyKWgobltyXSxvLHQsZSwhMSxuLHIpfWZ1bmN0aW9uIGsodCl7dmFyIGUsbixyPXQuZGF0YTtpZihpKHIpKWZvcihpKGU9ci5ob29rKSYmaShlPWUuZGVzdHJveSkmJmUodCksZT0wO2U8YS5kZXN0cm95Lmxlbmd0aDsrK2UpYS5kZXN0cm95W2VdKHQpO2lmKGkoZT10LmNoaWxkcmVuKSlmb3Iobj0wO248dC5jaGlsZHJlbi5sZW5ndGg7KytuKWsodC5jaGlsZHJlbltuXSl9ZnVuY3Rpb24gQyh0LGUsbil7Zm9yKDtlPD1uOysrZSl7dmFyIHI9dFtlXTtpKHIpJiYoaShyLnRhZyk/KFQociksayhyKSk6ZChyLmVsbSkpfX1mdW5jdGlvbiBUKHQsZSl7aWYoaShlKXx8aSh0LmRhdGEpKXt2YXIgbixyPWEucmVtb3ZlLmxlbmd0aCsxO2ZvcihpKGUpP2UubGlzdGVuZXJzKz1yOmU9Zih0LmVsbSxyKSxpKG49dC5jb21wb25lbnRJbnN0YW5jZSkmJmkobj1uLl92bm9kZSkmJmkobi5kYXRhKSYmVChuLGUpLG49MDtuPGEucmVtb3ZlLmxlbmd0aDsrK24pYS5yZW1vdmVbbl0odCxlKTtpKG49dC5kYXRhLmhvb2spJiZpKG49bi5yZW1vdmUpP24odCxlKTplKCl9ZWxzZSBkKHQuZWxtKX1mdW5jdGlvbiBPKHQsZSxuLG8sYSl7dmFyIHMsYyxsLGYsZD0wLHA9MCx2PWUubGVuZ3RoLTEsZz1lWzBdLG09ZVt2XSxiPW4ubGVuZ3RoLTEseT1uWzBdLF89bltiXSx3PSFhO3doaWxlKGQ8PXYmJnA8PWIpcihnKT9nPWVbKytkXTpyKG0pP209ZVstLXZdOkFpKGcseSk/KEUoZyx5LG8sbixwKSxnPWVbKytkXSx5PW5bKytwXSk6QWkobSxfKT8oRShtLF8sbyxuLGIpLG09ZVstLXZdLF89blstLWJdKTpBaShnLF8pPyhFKGcsXyxvLG4sYiksdyYmdS5pbnNlcnRCZWZvcmUodCxnLmVsbSx1Lm5leHRTaWJsaW5nKG0uZWxtKSksZz1lWysrZF0sXz1uWy0tYl0pOkFpKG0seSk/KEUobSx5LG8sbixwKSx3JiZ1Lmluc2VydEJlZm9yZSh0LG0uZWxtLGcuZWxtKSxtPWVbLS12XSx5PW5bKytwXSk6KHIocykmJihzPWppKGUsZCx2KSksYz1pKHkua2V5KT9zW3kua2V5XTpBKHksZSxkLHYpLHIoYyk/aCh5LG8sdCxnLmVsbSwhMSxuLHApOihsPWVbY10sQWkobCx5KT8oRShsLHksbyxuLHApLGVbY109dm9pZCAwLHcmJnUuaW5zZXJ0QmVmb3JlKHQsbC5lbG0sZy5lbG0pKTpoKHksbyx0LGcuZWxtLCExLG4scCkpLHk9blsrK3BdKTtkPnY/KGY9cihuW2IrMV0pP251bGw6bltiKzFdLmVsbSx4KHQsZixuLHAsYixvKSk6cD5iJiZDKGUsZCx2KX1mdW5jdGlvbiBBKHQsZSxuLHIpe2Zvcih2YXIgbz1uO288cjtvKyspe3ZhciBhPWVbb107aWYoaShhKSYmQWkodCxhKSlyZXR1cm4gb319ZnVuY3Rpb24gRSh0LGUsbixzLGMsbCl7aWYodCE9PWUpe2koZS5lbG0pJiZpKHMpJiYoZT1zW2NdPVN0KGUpKTt2YXIgZj1lLmVsbT10LmVsbTtpZihvKHQuaXNBc3luY1BsYWNlaG9sZGVyKSlpKGUuYXN5bmNGYWN0b3J5LnJlc29sdmVkKT9JKHQuZWxtLGUsbik6ZS5pc0FzeW5jUGxhY2Vob2xkZXI9ITA7ZWxzZSBpZihvKGUuaXNTdGF0aWMpJiZvKHQuaXNTdGF0aWMpJiZlLmtleT09PXQua2V5JiYobyhlLmlzQ2xvbmVkKXx8byhlLmlzT25jZSkpKWUuY29tcG9uZW50SW5zdGFuY2U9dC5jb21wb25lbnRJbnN0YW5jZTtlbHNle3ZhciBkLGg9ZS5kYXRhO2koaCkmJmkoZD1oLmhvb2spJiZpKGQ9ZC5wcmVwYXRjaCkmJmQodCxlKTt2YXIgcD10LmNoaWxkcmVuLHY9ZS5jaGlsZHJlbjtpZihpKGgpJiZfKGUpKXtmb3IoZD0wO2Q8YS51cGRhdGUubGVuZ3RoOysrZClhLnVwZGF0ZVtkXSh0LGUpO2koZD1oLmhvb2spJiZpKGQ9ZC51cGRhdGUpJiZkKHQsZSl9cihlLnRleHQpP2kocCkmJmkodik/cCE9PXYmJk8oZixwLHYsbixsKTppKHYpPyhpKHQudGV4dCkmJnUuc2V0VGV4dENvbnRlbnQoZiwiIikseChmLG51bGwsdiwwLHYubGVuZ3RoLTEsbikpOmkocCk/QyhwLDAscC5sZW5ndGgtMSk6aSh0LnRleHQpJiZ1LnNldFRleHRDb250ZW50KGYsIiIpOnQudGV4dCE9PWUudGV4dCYmdS5zZXRUZXh0Q29udGVudChmLGUudGV4dCksaShoKSYmaShkPWguaG9vaykmJmkoZD1kLnBvc3RwYXRjaCkmJmQodCxlKX19fWZ1bmN0aW9uIGoodCxlLG4pe2lmKG8obikmJmkodC5wYXJlbnQpKXQucGFyZW50LmRhdGEucGVuZGluZ0luc2VydD1lO2Vsc2UgZm9yKHZhciByPTA7cjxlLmxlbmd0aDsrK3IpZVtyXS5kYXRhLmhvb2suaW5zZXJ0KGVbcl0pfXZhciBNPWcoImF0dHJzLGNsYXNzLHN0YXRpY0NsYXNzLHN0YXRpY1N0eWxlLGtleSIpO2Z1bmN0aW9uIEkodCxlLG4scil7dmFyIGEscz1lLnRhZyxjPWUuZGF0YSx1PWUuY2hpbGRyZW47aWYocj1yfHxjJiZjLnByZSxlLmVsbT10LG8oZS5pc0NvbW1lbnQpJiZpKGUuYXN5bmNGYWN0b3J5KSlyZXR1cm4gZS5pc0FzeW5jUGxhY2Vob2xkZXI9ITAsITA7aWYoaShjKSYmKGkoYT1jLmhvb2spJiZpKGE9YS5pbml0KSYmYShlLCEwKSxpKGE9ZS5jb21wb25lbnRJbnN0YW5jZSkpKXJldHVybiB2KGUsbiksITA7aWYoaShzKSl7aWYoaSh1KSlpZih0Lmhhc0NoaWxkTm9kZXMoKSlpZihpKGE9YykmJmkoYT1hLmRvbVByb3BzKSYmaShhPWEuaW5uZXJIVE1MKSl7aWYoYSE9PXQuaW5uZXJIVE1MKXJldHVybiExfWVsc2V7Zm9yKHZhciBsPSEwLGY9dC5maXJzdENoaWxkLGQ9MDtkPHUubGVuZ3RoO2QrKyl7aWYoIWZ8fCFJKGYsdVtkXSxuLHIpKXtsPSExO2JyZWFrfWY9Zi5uZXh0U2libGluZ31pZighbHx8ZilyZXR1cm4hMX1lbHNlIHkoZSx1LG4pO2lmKGkoYykpe3ZhciBoPSExO2Zvcih2YXIgcCBpbiBjKWlmKCFNKHApKXtoPSEwLHcoZSxuKTticmVha30haCYmY1siY2xhc3MiXSYmdmUoY1siY2xhc3MiXSl9fWVsc2UgdC5kYXRhIT09ZS50ZXh0JiYodC5kYXRhPWUudGV4dCk7cmV0dXJuITB9cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLHMpe2lmKCFyKGUpKXt2YXIgYz0hMSxmPVtdO2lmKHIodCkpYz0hMCxoKGUsZik7ZWxzZXt2YXIgZD1pKHQubm9kZVR5cGUpO2lmKCFkJiZBaSh0LGUpKUUodCxlLGYsbnVsbCxudWxsLHMpO2Vsc2V7aWYoZCl7aWYoMT09PXQubm9kZVR5cGUmJnQuaGFzQXR0cmlidXRlKEIpJiYodC5yZW1vdmVBdHRyaWJ1dGUoQiksbj0hMCksbyhuKSYmSSh0LGUsZikpcmV0dXJuIGooZSxmLCEwKSx0O3Q9bCh0KX12YXIgcD10LmVsbSx2PXUucGFyZW50Tm9kZShwKTtpZihoKGUsZixwLl9sZWF2ZUNiP251bGw6dix1Lm5leHRTaWJsaW5nKHApKSxpKGUucGFyZW50KSl7dmFyIGc9ZS5wYXJlbnQsbT1fKGUpO3doaWxlKGcpe2Zvcih2YXIgYj0wO2I8YS5kZXN0cm95Lmxlbmd0aDsrK2IpYS5kZXN0cm95W2JdKGcpO2lmKGcuZWxtPWUuZWxtLG0pe2Zvcih2YXIgeT0wO3k8YS5jcmVhdGUubGVuZ3RoOysreSlhLmNyZWF0ZVt5XShUaSxnKTt2YXIgdz1nLmRhdGEuaG9vay5pbnNlcnQ7aWYody5tZXJnZWQpZm9yKHZhciBTPTE7Uzx3LmZucy5sZW5ndGg7UysrKXcuZm5zW1NdKCl9ZWxzZSBDaShnKTtnPWcucGFyZW50fX1pKHYpP0MoW3RdLDAsMCk6aSh0LnRhZykmJmsodCl9fXJldHVybiBqKGUsZixjKSxlLmVsbX1pKHQpJiZrKHQpfX12YXIgSWk9e2NyZWF0ZTpQaSx1cGRhdGU6UGksZGVzdHJveTpmdW5jdGlvbih0KXtQaSh0LFRpKX19O2Z1bmN0aW9uIFBpKHQsZSl7KHQuZGF0YS5kaXJlY3RpdmVzfHxlLmRhdGEuZGlyZWN0aXZlcykmJiRpKHQsZSl9ZnVuY3Rpb24gJGkodCxlKXt2YXIgbixyLGksbz10PT09VGksYT1lPT09VGkscz1SaSh0LmRhdGEuZGlyZWN0aXZlcyx0LmNvbnRleHQpLGM9UmkoZS5kYXRhLmRpcmVjdGl2ZXMsZS5jb250ZXh0KSx1PVtdLGw9W107Zm9yKG4gaW4gYylyPXNbbl0saT1jW25dLHI/KGkub2xkVmFsdWU9ci52YWx1ZSxpLm9sZEFyZz1yLmFyZyxEaShpLCJ1cGRhdGUiLGUsdCksaS5kZWYmJmkuZGVmLmNvbXBvbmVudFVwZGF0ZWQmJmwucHVzaChpKSk6KERpKGksImJpbmQiLGUsdCksaS5kZWYmJmkuZGVmLmluc2VydGVkJiZ1LnB1c2goaSkpO2lmKHUubGVuZ3RoKXt2YXIgZj1mdW5jdGlvbigpe2Zvcih2YXIgbj0wO248dS5sZW5ndGg7bisrKURpKHVbbl0sImluc2VydGVkIixlLHQpfTtvP19lKGUsImluc2VydCIsZik6ZigpfWlmKGwubGVuZ3RoJiZfZShlLCJwb3N0cGF0Y2giLChmdW5jdGlvbigpe2Zvcih2YXIgbj0wO248bC5sZW5ndGg7bisrKURpKGxbbl0sImNvbXBvbmVudFVwZGF0ZWQiLGUsdCl9KSksIW8pZm9yKG4gaW4gcyljW25dfHxEaShzW25dLCJ1bmJpbmQiLHQsdCxhKX12YXIgTGk9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBSaSh0LGUpe3ZhciBuLHIsaT1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCF0KXJldHVybiBpO2ZvcihuPTA7bjx0Lmxlbmd0aDtuKyspcj10W25dLHIubW9kaWZpZXJzfHwoci5tb2RpZmllcnM9TGkpLGlbTmkocildPXIsci5kZWY9WHQoZS4kb3B0aW9ucywiZGlyZWN0aXZlcyIsci5uYW1lLCEwKTtyZXR1cm4gaX1mdW5jdGlvbiBOaSh0KXtyZXR1cm4gdC5yYXdOYW1lfHx0Lm5hbWUrIi4iK09iamVjdC5rZXlzKHQubW9kaWZpZXJzfHx7fSkuam9pbigiLiIpfWZ1bmN0aW9uIERpKHQsZSxuLHIsaSl7dmFyIG89dC5kZWYmJnQuZGVmW2VdO2lmKG8pdHJ5e28obi5lbG0sdCxuLHIsaSl9Y2F0Y2goTWEpe3RlKE1hLG4uY29udGV4dCwiZGlyZWN0aXZlICIrdC5uYW1lKyIgIitlKyIgaG9vayIpfX12YXIgQmk9W2tpLElpXTtmdW5jdGlvbiBGaSh0LGUpe3ZhciBuPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihyKXtlW3JdJiYoblt0W3JdXT1lW3JdLGRlbGV0ZSBlW3JdKX0pKSxufWZ1bmN0aW9uIHppKHQsZSl7aWYoIXIodC5kYXRhLnd4c1Byb3BzKXx8IXIoZS5kYXRhLnd4c1Byb3BzKSl7dmFyIG49dC4kd3hzV2F0Y2hlcyxpPU9iamVjdC5rZXlzKGUuZGF0YS53eHNQcm9wcyk7aWYobnx8aS5sZW5ndGgpe258fChuPXt9KTt2YXIgbz1GaShlLmRhdGEud3hzUHJvcHMsZS5kYXRhLmF0dHJzKSxhPWUuY29udGV4dDtlLiR3eHNXYXRjaGVzPXt9LE9iamVjdC5rZXlzKG8pLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciByPXQ7ZS5jb250ZXh0Lnd4c1Byb3BzJiYocj0id3hzUHJvcHMuIit0KSxlLiR3eHNXYXRjaGVzW3RdPW5bdF18fGUuY29udGV4dC4kd2F0Y2gociwoZnVuY3Rpb24obixyKXt2YXIgaT1lLmVsbS5fX3Z1ZV9ffHxlLmVsbTtvW3RdKG4scixhLiRnZXRDb21wb25lbnREZXNjcmlwdG9yKGEsITApLGkuJGdldENvbXBvbmVudERlc2NyaXB0b3ImJmkuJGdldENvbXBvbmVudERlc2NyaXB0b3IoaSwhMSkpfSkse2ltbWVkaWF0ZTohMCxkZWVwOiEwfSl9KSksT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS4kd3hzV2F0Y2hlc1t0XXx8KG5bdF0oKSxkZWxldGUgblt0XSl9KSl9fX12YXIgV2k9e2NyZWF0ZTp6aSx1cGRhdGU6eml9O2Z1bmN0aW9uIEhpKHQsZSl7dmFyIG49ZS5jb21wb25lbnRPcHRpb25zO2lmKCghaShuKXx8ITEhPT1uLkN0b3Iub3B0aW9ucy5pbmhlcml0QXR0cnMpJiYoIXIodC5kYXRhLmF0dHJzKXx8IXIoZS5kYXRhLmF0dHJzKSkpe3ZhciBvLGEscyxjPWUuZWxtLHU9dC5kYXRhLmF0dHJzfHx7fSxsPWUuZGF0YS5hdHRyc3x8e307Zm9yKG8gaW4gaShsLl9fb2JfXykmJihsPWUuZGF0YS5hdHRycz1NKHt9LGwpKSxsKWE9bFtvXSxzPXVbb10scyE9PWEmJlVpKGMsbyxhKTtmb3IobyBpbih0dHx8bnQpJiZsLnZhbHVlIT09dS52YWx1ZSYmVWkoYywidmFsdWUiLGwudmFsdWUpLHUpcihsW29dKSYmKFZyKG8pP2MucmVtb3ZlQXR0cmlidXRlTlMocXIsWXIobykpOnpyKG8pfHxjLnJlbW92ZUF0dHJpYnV0ZShvKSl9fWZ1bmN0aW9uIFVpKHQsZSxuKXt0LnRhZ05hbWUuaW5kZXhPZigiLSIpPi0xP3FpKHQsZSxuKTpVcihlKT9YcihuKT90LnJlbW92ZUF0dHJpYnV0ZShlKToobj0iYWxsb3dmdWxsc2NyZWVuIj09PWUmJiJFTUJFRCI9PT10LnRhZ05hbWU/InRydWUiOmUsdC5zZXRBdHRyaWJ1dGUoZSxuKSk6enIoZSk/dC5zZXRBdHRyaWJ1dGUoZSxIcihlLG4pKTpWcihlKT9YcihuKT90LnJlbW92ZUF0dHJpYnV0ZU5TKHFyLFlyKGUpKTp0LnNldEF0dHJpYnV0ZU5TKHFyLGUsbik6cWkodCxlLG4pfWZ1bmN0aW9uIHFpKHQsZSxuKXtpZihYcihuKSl0LnJlbW92ZUF0dHJpYnV0ZShlKTtlbHNle2lmKHR0JiYhZXQmJiJURVhUQVJFQSI9PT10LnRhZ05hbWUmJiJwbGFjZWhvbGRlciI9PT1lJiYiIiE9PW4mJiF0Ll9faWVwaCl7dmFyIHI9ZnVuY3Rpb24oZSl7ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImlucHV0IixyKX07dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsciksdC5fX2llcGg9ITB9dC5zZXRBdHRyaWJ1dGUoZSxuKX19dmFyIFZpPXtjcmVhdGU6SGksdXBkYXRlOkhpfTtmdW5jdGlvbiBZaSh0LGUpe3ZhciBuPWUuZWxtLG89ZS5kYXRhLGE9dC5kYXRhO2lmKCEocihvLnN0YXRpY0NsYXNzKSYmcihvLmNsYXNzKSYmKHIoYSl8fHIoYS5zdGF0aWNDbGFzcykmJnIoYS5jbGFzcykpJiZyKG4uX193eHNBZGRDbGFzcykmJnIobi5fX3d4c1JlbW92ZUNsYXNzKSkpe3ZhciBzPUdyKGUpLGM9bi5fdHJhbnNpdGlvbkNsYXNzZXM7aWYoaShjKSYmKHM9S3IocyxacihjKSkpLEFycmF5LmlzQXJyYXkobi5fX3d4c1JlbW92ZUNsYXNzKSYmbi5fX3d4c1JlbW92ZUNsYXNzLmxlbmd0aCl7dmFyIHU9cy5zcGxpdCgvXHMrLyk7bi5fX3d4c1JlbW92ZUNsYXNzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXUuZmluZEluZGV4KChmdW5jdGlvbihlKXtyZXR1cm4gZT09PXR9KSk7LTEhPT1lJiZ1LnNwbGljZShlLDEpfSkpLHM9dS5qb2luKCIgIiksbi5fX3d4c1JlbW92ZUNsYXNzLmxlbmd0aD0wfWlmKG4uX193eHNBZGRDbGFzcyl7dmFyIGw9cy5zcGxpdCgvXHMrLykuY29uY2F0KG4uX193eHNBZGRDbGFzcy5zcGxpdCgvXHMrLykpLGY9T2JqZWN0LmNyZWF0ZShudWxsKTtsLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QmJihmW3RdPTEpfSkpLHM9T2JqZWN0LmtleXMoZikuam9pbigiICIpfXZhciBkPWUuY29udGV4dCxoPWQuJG9wdGlvbnMubXBPcHRpb25zJiZkLiRvcHRpb25zLm1wT3B0aW9ucy5leHRlcm5hbENsYXNzZXM7QXJyYXkuaXNBcnJheShoKSYmaC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1kW3godCldO2UmJihzPXMucmVwbGFjZSh0LGUpKX0pKSxzIT09bi5fcHJldkNsYXNzJiYobi5zZXRBdHRyaWJ1dGUoImNsYXNzIixzKSxuLl9wcmV2Q2xhc3M9cyl9fXZhciBYaSxHaT17Y3JlYXRlOllpLHVwZGF0ZTpZaX0sUWk9Il9fciIsSmk9Il9fYyI7ZnVuY3Rpb24gS2kodCl7aWYoaSh0W1FpXSkpe3ZhciBlPXR0PyJjaGFuZ2UiOiJpbnB1dCI7dFtlXT1bXS5jb25jYXQodFtRaV0sdFtlXXx8W10pLGRlbGV0ZSB0W1FpXX1pKHRbSmldKSYmKHQuY2hhbmdlPVtdLmNvbmNhdCh0W0ppXSx0LmNoYW5nZXx8W10pLGRlbGV0ZSB0W0ppXSl9ZnVuY3Rpb24gWmkodCxlLG4pe3ZhciByPVhpO3JldHVybiBmdW5jdGlvbiBpKCl7dmFyIG89ZS5hcHBseShudWxsLGFyZ3VtZW50cyk7bnVsbCE9PW8mJm5vKHQsaSxuLHIpfX12YXIgdG89b2UmJiEoaXQmJk51bWJlcihpdFsxXSk8PTUzKTtmdW5jdGlvbiBlbyh0LGUsbixyKXtpZih0byl7dmFyIGk9WW4sbz1lO2U9by5fd3JhcHBlcj1mdW5jdGlvbih0KXtpZih0LnRhcmdldD09PXQuY3VycmVudFRhcmdldHx8dC50aW1lU3RhbXA+PWl8fHQudGltZVN0YW1wPD0wfHx0LnRhcmdldC5vd25lckRvY3VtZW50IT09ZG9jdW1lbnQpcmV0dXJuIG8uYXBwbHkodGhpcyxhcmd1bWVudHMpfX1YaS5hZGRFdmVudExpc3RlbmVyKHQsZSxhdD97Y2FwdHVyZTpuLHBhc3NpdmU6cn06bil9ZnVuY3Rpb24gbm8odCxlLG4scil7KHJ8fFhpKS5yZW1vdmVFdmVudExpc3RlbmVyKHQsZS5fd3JhcHBlcnx8ZSxuKX1mdW5jdGlvbiBybyh0LGUpe2lmKCFyKHQuZGF0YS5vbil8fCFyKGUuZGF0YS5vbikpe3ZhciBuPWUuZGF0YS5vbnx8e30saT10LmRhdGEub258fHt9O1hpPWUuZWxtLEtpKG4pLHllKG4saSxlbyxubyxaaSxlLmNvbnRleHQpLFhpPXZvaWQgMH19dmFyIGlvLG9vPXtjcmVhdGU6cm8sdXBkYXRlOnJvfTtmdW5jdGlvbiBhbyh0LGUpe2lmKCFyKHQuZGF0YS5kb21Qcm9wcyl8fCFyKGUuZGF0YS5kb21Qcm9wcykpe3ZhciBuLG8sYT1lLmVsbSxzPXQuZGF0YS5kb21Qcm9wc3x8e30sYz1lLmRhdGEuZG9tUHJvcHN8fHt9O2ZvcihuIGluIGkoYy5fX29iX18pJiYoYz1lLmRhdGEuZG9tUHJvcHM9TSh7fSxjKSkscyluIGluIGN8fChhW25dPSIiKTtmb3IobiBpbiBjKXtpZihvPWNbbl0sInRleHRDb250ZW50Ij09PW58fCJpbm5lckhUTUwiPT09bil7aWYoZS5jaGlsZHJlbiYmKGUuY2hpbGRyZW4ubGVuZ3RoPTApLG89PT1zW25dKWNvbnRpbnVlOzE9PT1hLmNoaWxkTm9kZXMubGVuZ3RoJiZhLnJlbW92ZUNoaWxkKGEuY2hpbGROb2Rlc1swXSl9aWYoInZhbHVlIj09PW4mJiJQUk9HUkVTUyIhPT1hLnRhZ05hbWUpe2EuX3ZhbHVlPW87dmFyIHU9cihvKT8iIjpTdHJpbmcobyk7c28oYSx1KSYmKGEudmFsdWU9dSl9ZWxzZSBpZigiaW5uZXJIVE1MIj09PW4mJmlpKGEudGFnTmFtZSkmJnIoYS5pbm5lckhUTUwpKXtpbz1pb3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksaW8uaW5uZXJIVE1MPSI8c3ZnPiIrbysiPC9zdmc+Ijt2YXIgbD1pby5maXJzdENoaWxkO3doaWxlKGEuZmlyc3RDaGlsZClhLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCk7d2hpbGUobC5maXJzdENoaWxkKWEuYXBwZW5kQ2hpbGQobC5maXJzdENoaWxkKX1lbHNlIGlmKG8hPT1zW25dKXRyeXthW25dPW99Y2F0Y2goTWEpe319fX1mdW5jdGlvbiBzbyh0LGUpe3JldHVybiF0LmNvbXBvc2luZyYmKCJPUFRJT04iPT09dC50YWdOYW1lfHxjbyh0LGUpfHx1byh0LGUpKX1mdW5jdGlvbiBjbyh0LGUpe3ZhciBuPSEwO3RyeXtuPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT10fWNhdGNoKE1hKXt9cmV0dXJuIG4mJnQudmFsdWUhPT1lfWZ1bmN0aW9uIHVvKHQsZSl7dmFyIG49dC52YWx1ZSxyPXQuX3ZNb2RpZmllcnM7aWYoaShyKSl7aWYoci5udW1iZXIpcmV0dXJuIHYobikhPT12KGUpO2lmKHIudHJpbSlyZXR1cm4gbi50cmltKCkhPT1lLnRyaW0oKX1yZXR1cm4gbiE9PWV9dmFyIGxvPXtjcmVhdGU6YW8sdXBkYXRlOmFvfSxmbz13KChmdW5jdGlvbih0KXt2YXIgZT17fSxuPS87KD8hW14oXSpcKSkvZyxyPS86KC4rKS87cmV0dXJuIHQuc3BsaXQobikuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYodCl7dmFyIG49dC5zcGxpdChyKTtuLmxlbmd0aD4xJiYoZVtuWzBdLnRyaW0oKV09blsxXS50cmltKCkpfX0pKSxlfSkpO2Z1bmN0aW9uIGhvKHQpe3ZhciBlPXBvKHQuc3R5bGUpO3JldHVybiB0LnN0YXRpY1N0eWxlP00odC5zdGF0aWNTdHlsZSxlKTplfWZ1bmN0aW9uIHBvKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP0kodCk6InN0cmluZyI9PT10eXBlb2YgdD9mbyh0KTp0fWZ1bmN0aW9uIHZvKHQsZSl7dmFyIG4scj17fTtpZihlKXt2YXIgaT10O3doaWxlKGkuY29tcG9uZW50SW5zdGFuY2UpaT1pLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSxpJiZpLmRhdGEmJihuPWhvKGkuZGF0YSkpJiZNKHIsbil9KG49aG8odC5kYXRhKSkmJk0ocixuKTt2YXIgbz10O3doaWxlKG89by5wYXJlbnQpby5kYXRhJiYobj1obyhvLmRhdGEpKSYmTShyLG4pO3JldHVybiByfXZhciBnbyxtbz0vXi0tLyxibz0vXHMqIWltcG9ydGFudCQvLHlvPS9cYihbKy1dP1xkKyhcLlxkKyk/KVtyfHVdcHhcYi9nLF9vPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIHQ/dC5yZXBsYWNlKHlvLChmdW5jdGlvbih0LGUpe3JldHVybiB1bmkudXB4MnB4KGUpKyJweCJ9KSk6dH0sd289L3VybFwoXHMqWyciXSguKz9cLihqcGd8Z2lmfHBuZykpWyciXVxzKlwpLyxTbz0vdXJsXChccyooW2EtekEtWjAtOVwuXC1cX1wvXSs/XC4oanBnfGdpZnxwbmcpKVxzKlwpLyx4bz1mdW5jdGlvbih0LGUpe2lmKCJzdHJpbmciPT09dHlwZW9mIHQmJi0xIT09dC5pbmRleE9mKCJ1cmwoIikpe3ZhciBuPXQubWF0Y2god28pfHx0Lm1hdGNoKFNvKTtuJiYzPT09bi5sZW5ndGgmJih0PXQucmVwbGFjZShuWzFdLGUuXyRnZXRSZWFsUGF0aChuWzFdKSkpfXJldHVybiB0fSxrbz1mdW5jdGlvbih0LGUsbixyKXtpZihyJiZyLl8kZ2V0UmVhbFBhdGgmJm4mJihuPXhvKG4scikpLG1vLnRlc3QoZSkpdC5zdHlsZS5zZXRQcm9wZXJ0eShlLG4pO2Vsc2UgaWYoYm8udGVzdChuKSl0LnN0eWxlLnNldFByb3BlcnR5KFQoZSksbi5yZXBsYWNlKGJvLCIiKSwiaW1wb3J0YW50Iik7ZWxzZXt2YXIgaT1UbyhlKTtpZihBcnJheS5pc0FycmF5KG4pKWZvcih2YXIgbz0wLGE9bi5sZW5ndGg7bzxhO28rKyl0LnN0eWxlW2ldPV9vKG5bb10pO2Vsc2UgdC5zdHlsZVtpXT1fbyhuKX19LENvPVsiV2Via2l0IiwiTW96IiwibXMiXSxUbz13KChmdW5jdGlvbih0KXtpZihnbz1nb3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsdD14KHQpLCJmaWx0ZXIiIT09dCYmdCBpbiBnbylyZXR1cm4gdDtmb3IodmFyIGU9dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpLG49MDtuPENvLmxlbmd0aDtuKyspe3ZhciByPUNvW25dK2U7aWYociBpbiBnbylyZXR1cm4gcn19KSk7ZnVuY3Rpb24gT28odCxlKXt2YXIgbj1lLmRhdGEsbz10LmRhdGEsYT1lLmVsbTtpZighKHIobi5zdGF0aWNTdHlsZSkmJnIobi5zdHlsZSkmJnIoby5zdGF0aWNTdHlsZSkmJnIoby5zdHlsZSkmJnIoYS5fX3d4c1N0eWxlKSkpe3ZhciBzLGMsdT1vLnN0YXRpY1N0eWxlLGw9by5ub3JtYWxpemVkU3R5bGV8fG8uc3R5bGV8fHt9LGY9dXx8bCxkPXBvKGUuZGF0YS5zdHlsZSl8fHt9O2UuZGF0YS5ub3JtYWxpemVkU3R5bGU9aShkLl9fb2JfXyk/TSh7fSxkKTpkO3ZhciBoPXZvKGUsITApO2ZvcihjIGluIGEuX193eHNTdHlsZSYmKE9iamVjdC5hc3NpZ24oZS5kYXRhLm5vcm1hbGl6ZWRTdHlsZSxhLl9fd3hzU3R5bGUpLE9iamVjdC5hc3NpZ24oaCxhLl9fd3hzU3R5bGUpKSxmKXIoaFtjXSkmJmtvKGEsYywiIik7Zm9yKGMgaW4gaClzPWhbY10scyE9PWZbY10mJmtvKGEsYyxudWxsPT1zPyIiOnMsZS5jb250ZXh0KX19dmFyIEFvPXtjcmVhdGU6T28sdXBkYXRlOk9vfSxFbz0vXHMrLztmdW5jdGlvbiBqbyh0LGUpe2lmKGUmJihlPWUudHJpbSgpKSlpZih0LmNsYXNzTGlzdCllLmluZGV4T2YoIiAiKT4tMT9lLnNwbGl0KEVvKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5jbGFzc0xpc3QuYWRkKGUpfSkpOnQuY2xhc3NMaXN0LmFkZChlKTtlbHNle3ZhciBuPSIgIisodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKSsiICI7bi5pbmRleE9mKCIgIitlKyIgIik8MCYmdC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwobitlKS50cmltKCkpfX1mdW5jdGlvbiBNbyh0LGUpe2lmKGUmJihlPWUudHJpbSgpKSlpZih0LmNsYXNzTGlzdCllLmluZGV4T2YoIiAiKT4tMT9lLnNwbGl0KEVvKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5jbGFzc0xpc3QucmVtb3ZlKGUpfSkpOnQuY2xhc3NMaXN0LnJlbW92ZShlKSx0LmNsYXNzTGlzdC5sZW5ndGh8fHQucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIpO2Vsc2V7dmFyIG49IiAiKyh0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIixyPSIgIitlKyIgIjt3aGlsZShuLmluZGV4T2Yocik+PTApbj1uLnJlcGxhY2UociwiICIpO249bi50cmltKCksbj90LnNldEF0dHJpYnV0ZSgiY2xhc3MiLG4pOnQucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIpfX1mdW5jdGlvbiBJbyh0KXtpZih0KXtpZigib2JqZWN0Ij09PXR5cGVvZiB0KXt2YXIgZT17fTtyZXR1cm4hMSE9PXQuY3NzJiZNKGUsUG8odC5uYW1lfHwidiIpKSxNKGUsdCksZX1yZXR1cm4ic3RyaW5nIj09PXR5cGVvZiB0P1BvKHQpOnZvaWQgMH19dmFyIFBvPXcoKGZ1bmN0aW9uKHQpe3JldHVybntlbnRlckNsYXNzOnQrIi1lbnRlciIsZW50ZXJUb0NsYXNzOnQrIi1lbnRlci10byIsZW50ZXJBY3RpdmVDbGFzczp0KyItZW50ZXItYWN0aXZlIixsZWF2ZUNsYXNzOnQrIi1sZWF2ZSIsbGVhdmVUb0NsYXNzOnQrIi1sZWF2ZS10byIsbGVhdmVBY3RpdmVDbGFzczp0KyItbGVhdmUtYWN0aXZlIn19KSksJG89USYmIWV0LExvPSJ0cmFuc2l0aW9uIixSbz0iYW5pbWF0aW9uIixObz0idHJhbnNpdGlvbiIsRG89InRyYW5zaXRpb25lbmQiLEJvPSJhbmltYXRpb24iLEZvPSJhbmltYXRpb25lbmQiOyRvJiYodm9pZCAwPT09d2luZG93Lm9udHJhbnNpdGlvbmVuZCYmdm9pZCAwIT09d2luZG93Lm9ud2Via2l0dHJhbnNpdGlvbmVuZCYmKE5vPSJXZWJraXRUcmFuc2l0aW9uIixEbz0id2Via2l0VHJhbnNpdGlvbkVuZCIpLHZvaWQgMD09PXdpbmRvdy5vbmFuaW1hdGlvbmVuZCYmdm9pZCAwIT09d2luZG93Lm9ud2Via2l0YW5pbWF0aW9uZW5kJiYoQm89IldlYmtpdEFuaW1hdGlvbiIsRm89IndlYmtpdEFuaW1hdGlvbkVuZCIpKTt2YXIgem89UT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOnNldFRpbWVvdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQoKX07ZnVuY3Rpb24gV28odCl7em8oKGZ1bmN0aW9uKCl7em8odCl9KSl9ZnVuY3Rpb24gSG8odCxlKXt2YXIgbj10Ll90cmFuc2l0aW9uQ2xhc3Nlc3x8KHQuX3RyYW5zaXRpb25DbGFzc2VzPVtdKTtuLmluZGV4T2YoZSk8MCYmKG4ucHVzaChlKSxqbyh0LGUpKX1mdW5jdGlvbiBVbyh0LGUpe3QuX3RyYW5zaXRpb25DbGFzc2VzJiZiKHQuX3RyYW5zaXRpb25DbGFzc2VzLGUpLE1vKHQsZSl9ZnVuY3Rpb24gcW8odCxlLG4pe3ZhciByPVlvKHQsZSksaT1yLnR5cGUsbz1yLnRpbWVvdXQsYT1yLnByb3BDb3VudDtpZighaSlyZXR1cm4gbigpO3ZhciBzPWk9PT1Mbz9EbzpGbyxjPTAsdT1mdW5jdGlvbigpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLGwpLG4oKX0sbD1mdW5jdGlvbihlKXtlLnRhcmdldD09PXQmJisrYz49YSYmdSgpfTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe2M8YSYmdSgpfSksbysxKSx0LmFkZEV2ZW50TGlzdGVuZXIocyxsKX12YXIgVm89L1xiKHRyYW5zZm9ybXxhbGwpKCx8JCkvO2Z1bmN0aW9uIFlvKHQsZSl7dmFyIG4scj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KSxpPShyW05vKyJEZWxheSJdfHwiIikuc3BsaXQoIiwgIiksbz0ocltObysiRHVyYXRpb24iXXx8IiIpLnNwbGl0KCIsICIpLGE9WG8oaSxvKSxzPShyW0JvKyJEZWxheSJdfHwiIikuc3BsaXQoIiwgIiksYz0ocltCbysiRHVyYXRpb24iXXx8IiIpLnNwbGl0KCIsICIpLHU9WG8ocyxjKSxsPTAsZj0wO2U9PT1Mbz9hPjAmJihuPUxvLGw9YSxmPW8ubGVuZ3RoKTplPT09Um8/dT4wJiYobj1SbyxsPXUsZj1jLmxlbmd0aCk6KGw9TWF0aC5tYXgoYSx1KSxuPWw+MD9hPnU/TG86Um86bnVsbCxmPW4/bj09PUxvP28ubGVuZ3RoOmMubGVuZ3RoOjApO3ZhciBkPW49PT1MbyYmVm8udGVzdChyW05vKyJQcm9wZXJ0eSJdKTtyZXR1cm57dHlwZTpuLHRpbWVvdXQ6bCxwcm9wQ291bnQ6ZixoYXNUcmFuc2Zvcm06ZH19ZnVuY3Rpb24gWG8odCxlKXt3aGlsZSh0Lmxlbmd0aDxlLmxlbmd0aCl0PXQuY29uY2F0KHQpO3JldHVybiBNYXRoLm1heC5hcHBseShudWxsLGUubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBHbyhlKStHbyh0W25dKX0pKSl9ZnVuY3Rpb24gR28odCl7cmV0dXJuIDFlMypOdW1iZXIodC5zbGljZSgwLC0xKS5yZXBsYWNlKCIsIiwiLiIpKX1mdW5jdGlvbiBRbyh0LGUpe3ZhciBuPXQuZWxtO2kobi5fbGVhdmVDYikmJihuLl9sZWF2ZUNiLmNhbmNlbGxlZD0hMCxuLl9sZWF2ZUNiKCkpO3ZhciBvPUlvKHQuZGF0YS50cmFuc2l0aW9uKTtpZighcihvKSYmIWkobi5fZW50ZXJDYikmJjE9PT1uLm5vZGVUeXBlKXt2YXIgYT1vLmNzcyxzPW8udHlwZSx1PW8uZW50ZXJDbGFzcyxsPW8uZW50ZXJUb0NsYXNzLGY9by5lbnRlckFjdGl2ZUNsYXNzLGQ9by5hcHBlYXJDbGFzcyxoPW8uYXBwZWFyVG9DbGFzcyxwPW8uYXBwZWFyQWN0aXZlQ2xhc3MsZz1vLmJlZm9yZUVudGVyLG09by5lbnRlcixiPW8uYWZ0ZXJFbnRlcix5PW8uZW50ZXJDYW5jZWxsZWQsXz1vLmJlZm9yZUFwcGVhcix3PW8uYXBwZWFyLFM9by5hZnRlckFwcGVhcix4PW8uYXBwZWFyQ2FuY2VsbGVkLGs9by5kdXJhdGlvbixDPWpuLFQ9am4uJHZub2RlO3doaWxlKFQmJlQucGFyZW50KUM9VC5jb250ZXh0LFQ9VC5wYXJlbnQ7dmFyIE89IUMuX2lzTW91bnRlZHx8IXQuaXNSb290SW5zZXJ0O2lmKCFPfHx3fHwiIj09PXcpe3ZhciBBPU8mJmQ/ZDp1LEU9TyYmcD9wOmYsaj1PJiZoP2g6bCxNPU8mJl98fGcsST1PJiYiZnVuY3Rpb24iPT09dHlwZW9mIHc/dzptLFA9TyYmU3x8YiwkPU8mJnh8fHksTD12KGMoayk/ay5lbnRlcjprKTswO3ZhciBSPSExIT09YSYmIWV0LE49Wm8oSSksQj1uLl9lbnRlckNiPUQoKGZ1bmN0aW9uKCl7UiYmKFVvKG4saiksVW8obixFKSksQi5jYW5jZWxsZWQ/KFImJlVvKG4sQSksJCYmJChuKSk6UCYmUChuKSxuLl9lbnRlckNiPW51bGx9KSk7dC5kYXRhLnNob3d8fF9lKHQsImluc2VydCIsKGZ1bmN0aW9uKCl7dmFyIGU9bi5wYXJlbnROb2RlLHI9ZSYmZS5fcGVuZGluZyYmZS5fcGVuZGluZ1t0LmtleV07ciYmci50YWc9PT10LnRhZyYmci5lbG0uX2xlYXZlQ2ImJnIuZWxtLl9sZWF2ZUNiKCksSSYmSShuLEIpfSkpLE0mJk0obiksUiYmKEhvKG4sQSksSG8obixFKSxXbygoZnVuY3Rpb24oKXtVbyhuLEEpLEIuY2FuY2VsbGVkfHwoSG8obixqKSxOfHwoS28oTCk/c2V0VGltZW91dChCLEwpOnFvKG4scyxCKSkpfSkpKSx0LmRhdGEuc2hvdyYmKGUmJmUoKSxJJiZJKG4sQikpLFJ8fE58fEIoKX19fWZ1bmN0aW9uIEpvKHQsZSl7dmFyIG49dC5lbG07aShuLl9lbnRlckNiKSYmKG4uX2VudGVyQ2IuY2FuY2VsbGVkPSEwLG4uX2VudGVyQ2IoKSk7dmFyIG89SW8odC5kYXRhLnRyYW5zaXRpb24pO2lmKHIobyl8fDEhPT1uLm5vZGVUeXBlKXJldHVybiBlKCk7aWYoIWkobi5fbGVhdmVDYikpe3ZhciBhPW8uY3NzLHM9by50eXBlLHU9by5sZWF2ZUNsYXNzLGw9by5sZWF2ZVRvQ2xhc3MsZj1vLmxlYXZlQWN0aXZlQ2xhc3MsZD1vLmJlZm9yZUxlYXZlLGg9by5sZWF2ZSxwPW8uYWZ0ZXJMZWF2ZSxnPW8ubGVhdmVDYW5jZWxsZWQsbT1vLmRlbGF5TGVhdmUsYj1vLmR1cmF0aW9uLHk9ITEhPT1hJiYhZXQsXz1abyhoKSx3PXYoYyhiKT9iLmxlYXZlOmIpOzA7dmFyIFM9bi5fbGVhdmVDYj1EKChmdW5jdGlvbigpe24ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLl9wZW5kaW5nJiYobi5wYXJlbnROb2RlLl9wZW5kaW5nW3Qua2V5XT1udWxsKSx5JiYoVW8obixsKSxVbyhuLGYpKSxTLmNhbmNlbGxlZD8oeSYmVW8obix1KSxnJiZnKG4pKTooZSgpLHAmJnAobikpLG4uX2xlYXZlQ2I9bnVsbH0pKTttP20oeCk6eCgpfWZ1bmN0aW9uIHgoKXtTLmNhbmNlbGxlZHx8KCF0LmRhdGEuc2hvdyYmbi5wYXJlbnROb2RlJiYoKG4ucGFyZW50Tm9kZS5fcGVuZGluZ3x8KG4ucGFyZW50Tm9kZS5fcGVuZGluZz17fSkpW3Qua2V5XT10KSxkJiZkKG4pLHkmJihIbyhuLHUpLEhvKG4sZiksV28oKGZ1bmN0aW9uKCl7VW8obix1KSxTLmNhbmNlbGxlZHx8KEhvKG4sbCksX3x8KEtvKHcpP3NldFRpbWVvdXQoUyx3KTpxbyhuLHMsUykpKX0pKSksaCYmaChuLFMpLHl8fF98fFMoKSl9fWZ1bmN0aW9uIEtvKHQpe3JldHVybiJudW1iZXIiPT09dHlwZW9mIHQmJiFpc05hTih0KX1mdW5jdGlvbiBabyh0KXtpZihyKHQpKXJldHVybiExO3ZhciBlPXQuZm5zO3JldHVybiBpKGUpP1pvKEFycmF5LmlzQXJyYXkoZSk/ZVswXTplKToodC5fbGVuZ3RofHx0Lmxlbmd0aCk+MX1mdW5jdGlvbiB0YSh0LGUpeyEwIT09ZS5kYXRhLnNob3cmJlFvKGUpfXZhciBlYT1RP3tjcmVhdGU6dGEsYWN0aXZhdGU6dGEscmVtb3ZlOmZ1bmN0aW9uKHQsZSl7ITAhPT10LmRhdGEuc2hvdz9Kbyh0LGUpOmUoKX19Ont9LG5hPVtXaSxWaSxHaSxvbyxsbyxBbyxlYV0scmE9bmEuY29uY2F0KEJpKSxpYT1NaSh7bm9kZU9wczp4aSxtb2R1bGVzOnJhfSk7ZXQmJmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsKGZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDt0JiZ0LnZtb2RlbCYmZGEodCwiaW5wdXQiKX0pKTt2YXIgb2E9e2luc2VydGVkOmZ1bmN0aW9uKHQsZSxuLHIpeyJzZWxlY3QiPT09bi50YWc/KHIuZWxtJiYhci5lbG0uX3ZPcHRpb25zP19lKG4sInBvc3RwYXRjaCIsKGZ1bmN0aW9uKCl7b2EuY29tcG9uZW50VXBkYXRlZCh0LGUsbil9KSk6YWEodCxlLG4uY29udGV4dCksdC5fdk9wdGlvbnM9W10ubWFwLmNhbGwodC5vcHRpb25zLHVhKSk6KCJ0ZXh0YXJlYSI9PT1uLnRhZ3x8dWkodC50eXBlKSkmJih0Ll92TW9kaWZpZXJzPWUubW9kaWZpZXJzLGUubW9kaWZpZXJzLmxhenl8fCh0LmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uc3RhcnQiLGxhKSx0LmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uZW5kIixmYSksdC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGZhKSxldCYmKHQudm1vZGVsPSEwKSkpfSxjb21wb25lbnRVcGRhdGVkOmZ1bmN0aW9uKHQsZSxuKXtpZigic2VsZWN0Ij09PW4udGFnKXthYSh0LGUsbi5jb250ZXh0KTt2YXIgcj10Ll92T3B0aW9ucyxpPXQuX3ZPcHRpb25zPVtdLm1hcC5jYWxsKHQub3B0aW9ucyx1YSk7aWYoaS5zb21lKChmdW5jdGlvbih0LGUpe3JldHVybiFSKHQscltlXSl9KSkpe3ZhciBvPXQubXVsdGlwbGU/ZS52YWx1ZS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gY2EodCxpKX0pKTplLnZhbHVlIT09ZS5vbGRWYWx1ZSYmY2EoZS52YWx1ZSxpKTtvJiZkYSh0LCJjaGFuZ2UiKX19fX07ZnVuY3Rpb24gYWEodCxlLG4pe3NhKHQsZSxuKSwodHR8fG50KSYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtzYSh0LGUsbil9KSwwKX1mdW5jdGlvbiBzYSh0LGUsbil7dmFyIHI9ZS52YWx1ZSxpPXQubXVsdGlwbGU7aWYoIWl8fEFycmF5LmlzQXJyYXkocikpe2Zvcih2YXIgbyxhLHM9MCxjPXQub3B0aW9ucy5sZW5ndGg7czxjO3MrKylpZihhPXQub3B0aW9uc1tzXSxpKW89TihyLHVhKGEpKT4tMSxhLnNlbGVjdGVkIT09byYmKGEuc2VsZWN0ZWQ9byk7ZWxzZSBpZihSKHVhKGEpLHIpKXJldHVybiB2b2lkKHQuc2VsZWN0ZWRJbmRleCE9PXMmJih0LnNlbGVjdGVkSW5kZXg9cykpO2l8fCh0LnNlbGVjdGVkSW5kZXg9LTEpfX1mdW5jdGlvbiBjYSh0LGUpe3JldHVybiBlLmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4hUihlLHQpfSkpfWZ1bmN0aW9uIHVhKHQpe3JldHVybiJfdmFsdWUiaW4gdD90Ll92YWx1ZTp0LnZhbHVlfWZ1bmN0aW9uIGxhKHQpe3QudGFyZ2V0LmNvbXBvc2luZz0hMH1mdW5jdGlvbiBmYSh0KXt0LnRhcmdldC5jb21wb3NpbmcmJih0LnRhcmdldC5jb21wb3Npbmc9ITEsZGEodC50YXJnZXQsImlucHV0IikpfWZ1bmN0aW9uIGRhKHQsZSl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkhUTUxFdmVudHMiKTtuLmluaXRFdmVudChlLCEwLCEwKSx0LmRpc3BhdGNoRXZlbnQobil9ZnVuY3Rpb24gaGEodCl7cmV0dXJuIXQuY29tcG9uZW50SW5zdGFuY2V8fHQuZGF0YSYmdC5kYXRhLnRyYW5zaXRpb24/dDpoYSh0LmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSl9dmFyIHBhPXtiaW5kOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1lLnZhbHVlO249aGEobik7dmFyIGk9bi5kYXRhJiZuLmRhdGEudHJhbnNpdGlvbixvPXQuX192T3JpZ2luYWxEaXNwbGF5PSJub25lIj09PXQuc3R5bGUuZGlzcGxheT8iIjp0LnN0eWxlLmRpc3BsYXk7ciYmaT8obi5kYXRhLnNob3c9ITAsUW8obiwoZnVuY3Rpb24oKXt0LnN0eWxlLmRpc3BsYXk9b30pKSk6dC5zdHlsZS5kaXNwbGF5PXI/bzoibm9uZSJ9LHVwZGF0ZTpmdW5jdGlvbih0LGUsbil7dmFyIHI9ZS52YWx1ZSxpPWUub2xkVmFsdWU7aWYoIXIhPT0haSl7bj1oYShuKTt2YXIgbz1uLmRhdGEmJm4uZGF0YS50cmFuc2l0aW9uO28/KG4uZGF0YS5zaG93PSEwLHI/UW8obiwoZnVuY3Rpb24oKXt0LnN0eWxlLmRpc3BsYXk9dC5fX3ZPcmlnaW5hbERpc3BsYXl9KSk6Sm8obiwoZnVuY3Rpb24oKXt0LnN0eWxlLmRpc3BsYXk9Im5vbmUifSkpKTp0LnN0eWxlLmRpc3BsYXk9cj90Ll9fdk9yaWdpbmFsRGlzcGxheToibm9uZSJ9fSx1bmJpbmQ6ZnVuY3Rpb24odCxlLG4scixpKXtpfHwodC5zdHlsZS5kaXNwbGF5PXQuX192T3JpZ2luYWxEaXNwbGF5KX19LHZhPXttb2RlbDpvYSxzaG93OnBhfSxnYT17bmFtZTpTdHJpbmcsYXBwZWFyOkJvb2xlYW4sY3NzOkJvb2xlYW4sbW9kZTpTdHJpbmcsdHlwZTpTdHJpbmcsZW50ZXJDbGFzczpTdHJpbmcsbGVhdmVDbGFzczpTdHJpbmcsZW50ZXJUb0NsYXNzOlN0cmluZyxsZWF2ZVRvQ2xhc3M6U3RyaW5nLGVudGVyQWN0aXZlQ2xhc3M6U3RyaW5nLGxlYXZlQWN0aXZlQ2xhc3M6U3RyaW5nLGFwcGVhckNsYXNzOlN0cmluZyxhcHBlYXJBY3RpdmVDbGFzczpTdHJpbmcsYXBwZWFyVG9DbGFzczpTdHJpbmcsZHVyYXRpb246W051bWJlcixTdHJpbmcsT2JqZWN0XX07ZnVuY3Rpb24gbWEodCl7dmFyIGU9dCYmdC5jb21wb25lbnRPcHRpb25zO3JldHVybiBlJiZlLkN0b3Iub3B0aW9ucy5hYnN0cmFjdD9tYSh4bihlLmNoaWxkcmVuKSk6dH1mdW5jdGlvbiBiYSh0KXt2YXIgZT17fSxuPXQuJG9wdGlvbnM7Zm9yKHZhciByIGluIG4ucHJvcHNEYXRhKWVbcl09dFtyXTt2YXIgaT1uLl9wYXJlbnRMaXN0ZW5lcnM7Zm9yKHZhciBvIGluIGkpZVt4KG8pXT1pW29dO3JldHVybiBlfWZ1bmN0aW9uIHlhKHQsZSl7aWYoL1xkLWtlZXAtYWxpdmUkLy50ZXN0KGUudGFnKSlyZXR1cm4gdCgia2VlcC1hbGl2ZSIse3Byb3BzOmUuY29tcG9uZW50T3B0aW9ucy5wcm9wc0RhdGF9KX1mdW5jdGlvbiBfYSh0KXt3aGlsZSh0PXQucGFyZW50KWlmKHQuZGF0YS50cmFuc2l0aW9uKXJldHVybiEwfWZ1bmN0aW9uIHdhKHQsZSl7cmV0dXJuIGUua2V5PT09dC5rZXkmJmUudGFnPT09dC50YWd9dmFyIFNhPWZ1bmN0aW9uKHQpe3JldHVybiB0LnRhZ3x8U24odCl9LHhhPWZ1bmN0aW9uKHQpe3JldHVybiJzaG93Ij09PXQubmFtZX0sa2E9e25hbWU6InRyYW5zaXRpb24iLHByb3BzOmdhLGFic3RyYWN0OiEwLHJlbmRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy4kc2xvdHMuZGVmYXVsdDtpZihuJiYobj1uLmZpbHRlcihTYSksbi5sZW5ndGgpKXswO3ZhciByPXRoaXMubW9kZTswO3ZhciBpPW5bMF07aWYoX2EodGhpcy4kdm5vZGUpKXJldHVybiBpO3ZhciBvPW1hKGkpO2lmKCFvKXJldHVybiBpO2lmKHRoaXMuX2xlYXZpbmcpcmV0dXJuIHlhKHQsaSk7dmFyIGE9Il9fdHJhbnNpdGlvbi0iK3RoaXMuX3VpZCsiLSI7by5rZXk9bnVsbD09by5rZXk/by5pc0NvbW1lbnQ/YSsiY29tbWVudCI6YStvLnRhZzpzKG8ua2V5KT8wPT09U3RyaW5nKG8ua2V5KS5pbmRleE9mKGEpP28ua2V5OmErby5rZXk6by5rZXk7dmFyIGM9KG8uZGF0YXx8KG8uZGF0YT17fSkpLnRyYW5zaXRpb249YmEodGhpcyksdT10aGlzLl92bm9kZSxsPW1hKHUpO2lmKG8uZGF0YS5kaXJlY3RpdmVzJiZvLmRhdGEuZGlyZWN0aXZlcy5zb21lKHhhKSYmKG8uZGF0YS5zaG93PSEwKSxsJiZsLmRhdGEmJiF3YShvLGwpJiYhU24obCkmJighbC5jb21wb25lbnRJbnN0YW5jZXx8IWwuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLmlzQ29tbWVudCkpe3ZhciBmPWwuZGF0YS50cmFuc2l0aW9uPU0oe30sYyk7aWYoIm91dC1pbiI9PT1yKXJldHVybiB0aGlzLl9sZWF2aW5nPSEwLF9lKGYsImFmdGVyTGVhdmUiLChmdW5jdGlvbigpe2UuX2xlYXZpbmc9ITEsZS4kZm9yY2VVcGRhdGUoKX0pKSx5YSh0LGkpO2lmKCJpbi1vdXQiPT09cil7aWYoU24obykpcmV0dXJuIHU7dmFyIGQsaD1mdW5jdGlvbigpe2QoKX07X2UoYywiYWZ0ZXJFbnRlciIsaCksX2UoYywiZW50ZXJDYW5jZWxsZWQiLGgpLF9lKGYsImRlbGF5TGVhdmUiLChmdW5jdGlvbih0KXtkPXR9KSl9fXJldHVybiBpfX19LENhPU0oe3RhZzpTdHJpbmcsbW92ZUNsYXNzOlN0cmluZ30sZ2EpO2RlbGV0ZSBDYS5tb2RlO3ZhciBUYT17cHJvcHM6Q2EsYmVmb3JlTW91bnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fdXBkYXRlO3RoaXMuX3VwZGF0ZT1mdW5jdGlvbihuLHIpe3ZhciBpPU1uKHQpO3QuX19wYXRjaF9fKHQuX3Zub2RlLHQua2VwdCwhMSwhMCksdC5fdm5vZGU9dC5rZXB0LGkoKSxlLmNhbGwodCxuLHIpfX0scmVuZGVyOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRhZ3x8dGhpcy4kdm5vZGUuZGF0YS50YWd8fCJzcGFuIixuPU9iamVjdC5jcmVhdGUobnVsbCkscj10aGlzLnByZXZDaGlsZHJlbj10aGlzLmNoaWxkcmVuLGk9dGhpcy4kc2xvdHMuZGVmYXVsdHx8W10sbz10aGlzLmNoaWxkcmVuPVtdLGE9YmEodGhpcykscz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgYz1pW3NdO2lmKGMudGFnKWlmKG51bGwhPWMua2V5JiYwIT09U3RyaW5nKGMua2V5KS5pbmRleE9mKCJfX3ZsaXN0Iikpby5wdXNoKGMpLG5bYy5rZXldPWMsKGMuZGF0YXx8KGMuZGF0YT17fSkpLnRyYW5zaXRpb249YTtlbHNlO31pZihyKXtmb3IodmFyIHU9W10sbD1bXSxmPTA7ZjxyLmxlbmd0aDtmKyspe3ZhciBkPXJbZl07ZC5kYXRhLnRyYW5zaXRpb249YSxkLmRhdGEucG9zPWQuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG5bZC5rZXldP3UucHVzaChkKTpsLnB1c2goZCl9dGhpcy5rZXB0PXQoZSxudWxsLHUpLHRoaXMucmVtb3ZlZD1sfXJldHVybiB0KGUsbnVsbCxvKX0sdXBkYXRlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucHJldkNoaWxkcmVuLGU9dGhpcy5tb3ZlQ2xhc3N8fCh0aGlzLm5hbWV8fCJ2IikrIi1tb3ZlIjt0Lmxlbmd0aCYmdGhpcy5oYXNNb3ZlKHRbMF0uZWxtLGUpJiYodC5mb3JFYWNoKE9hKSx0LmZvckVhY2goQWEpLHQuZm9yRWFjaChFYSksdGhpcy5fcmVmbG93PWRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0LHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYodC5kYXRhLm1vdmVkKXt2YXIgbj10LmVsbSxyPW4uc3R5bGU7SG8obixlKSxyLnRyYW5zZm9ybT1yLldlYmtpdFRyYW5zZm9ybT1yLnRyYW5zaXRpb25EdXJhdGlvbj0iIixuLmFkZEV2ZW50TGlzdGVuZXIoRG8sbi5fbW92ZUNiPWZ1bmN0aW9uIHQocil7ciYmci50YXJnZXQhPT1ufHxyJiYhL3RyYW5zZm9ybSQvLnRlc3Qoci5wcm9wZXJ0eU5hbWUpfHwobi5yZW1vdmVFdmVudExpc3RlbmVyKERvLHQpLG4uX21vdmVDYj1udWxsLFVvKG4sZSkpfSl9fSkpKX0sbWV0aG9kczp7aGFzTW92ZTpmdW5jdGlvbih0LGUpe2lmKCEkbylyZXR1cm4hMTtpZih0aGlzLl9oYXNNb3ZlKXJldHVybiB0aGlzLl9oYXNNb3ZlO3ZhciBuPXQuY2xvbmVOb2RlKCk7dC5fdHJhbnNpdGlvbkNsYXNzZXMmJnQuX3RyYW5zaXRpb25DbGFzc2VzLmZvckVhY2goKGZ1bmN0aW9uKHQpe01vKG4sdCl9KSksam8obixlKSxuLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuJGVsLmFwcGVuZENoaWxkKG4pO3ZhciByPVlvKG4pO3JldHVybiB0aGlzLiRlbC5yZW1vdmVDaGlsZChuKSx0aGlzLl9oYXNNb3ZlPXIuaGFzVHJhbnNmb3JtfX19O2Z1bmN0aW9uIE9hKHQpe3QuZWxtLl9tb3ZlQ2ImJnQuZWxtLl9tb3ZlQ2IoKSx0LmVsbS5fZW50ZXJDYiYmdC5lbG0uX2VudGVyQ2IoKX1mdW5jdGlvbiBBYSh0KXt0LmRhdGEubmV3UG9zPXQuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWZ1bmN0aW9uIEVhKHQpe3ZhciBlPXQuZGF0YS5wb3Msbj10LmRhdGEubmV3UG9zLHI9ZS5sZWZ0LW4ubGVmdCxpPWUudG9wLW4udG9wO2lmKHJ8fGkpe3QuZGF0YS5tb3ZlZD0hMDt2YXIgbz10LmVsbS5zdHlsZTtvLnRyYW5zZm9ybT1vLldlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIrcisicHgsIitpKyJweCkiLG8udHJhbnNpdGlvbkR1cmF0aW9uPSIwcyJ9fXZhciBqYT17VHJhbnNpdGlvbjprYSxUcmFuc2l0aW9uR3JvdXA6VGF9O3hyLmNvbmZpZy5tdXN0VXNlUHJvcD1Gcix4ci5jb25maWcuaXNSZXNlcnZlZFRhZz1vaSx4ci5jb25maWcuaXNSZXNlcnZlZEF0dHI9RHIseHIuY29uZmlnLmdldFRhZ05hbWVzcGFjZT1haSx4ci5jb25maWcuaXNVbmtub3duRWxlbWVudD1jaSxNKHhyLm9wdGlvbnMuZGlyZWN0aXZlcyx2YSksTSh4ci5vcHRpb25zLmNvbXBvbmVudHMsamEpLHhyLnByb3RvdHlwZS5fX3BhdGNoX189UT9pYTpQLHhyLnByb3RvdHlwZS5fX2NhbGxfaG9vaz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7Z3QoKTt2YXIgcixpPW4uJG9wdGlvbnNbdF0sbz10KyIgaG9vayI7aWYoaSlmb3IodmFyIGE9MCxzPWkubGVuZ3RoO2E8czthKyspcj1lZShpW2FdLG4sZT9bZV06bnVsbCxuLG8pO3JldHVybiBuLl9oYXNIb29rRXZlbnQmJm4uJGVtaXQoImhvb2s6Iit0LGUpLG10KCkscn0seHIucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbih0LGUpe3JldHVybiB0PXQmJlE/bGkodCk6dm9pZCAwLCRuKHRoaXMsdCxlKX0sUSYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtXLmRldnRvb2xzJiZ1dCYmdXQuZW1pdCgiaW5pdCIseHIpfSksMCksZVsiZGVmYXVsdCJdPXhyfS5jYWxsKHRoaXMsbigiYzhiYSIpKX0sZTE2MzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjFhMmQiKSxpPW4oIjE2MjYiKSxvPW4oIjdiMGIiKSxhPW4oImY3NzIiKSxzPW4oImUxNzciKSxjPWEoIklFX1BST1RPIiksdT1PYmplY3QsbD11LnByb3RvdHlwZTt0LmV4cG9ydHM9cz91LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3ZhciBlPW8odCk7aWYocihlLGMpKXJldHVybiBlW2NdO3ZhciBuPWUuY29uc3RydWN0b3I7cmV0dXJuIGkobikmJmUgaW5zdGFuY2VvZiBuP24ucHJvdG90eXBlOmUgaW5zdGFuY2VvZiB1P2w6bnVsbH19LGUxNzc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkMDM5Iik7dC5leHBvcnRzPSFyKChmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPW51bGwsT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyB0KSE9PXQucHJvdG90eXBlfSkpfSxlMjVlOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiYzIwZCIpO3Ioe2dsb2JhbDohMCxmb3JjZWQ6cGFyc2VJbnQhPT1pfSx7cGFyc2VJbnQ6aX0pfSxlMjYwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZmM2YSIpLGk9bigiNDRkMiIpLG89bigiM2Y4YyIpLGE9bigiNjlmMyIpLHM9bigiOWJmMiIpLmYsYz1uKCJjNmQyIiksdT1uKCI0NzU0IiksbD1uKCJjNDMwIiksZj1uKCI4M2FiIiksZD0iQXJyYXkgSXRlcmF0b3IiLGg9YS5zZXQscD1hLmdldHRlckZvcihkKTt0LmV4cG9ydHM9YyhBcnJheSwiQXJyYXkiLChmdW5jdGlvbih0LGUpe2godGhpcyx7dHlwZTpkLHRhcmdldDpyKHQpLGluZGV4OjAsa2luZDplfSl9KSwoZnVuY3Rpb24oKXt2YXIgdD1wKHRoaXMpLGU9dC50YXJnZXQsbj10LmluZGV4Kys7aWYoIWV8fG4+PWUubGVuZ3RoKXJldHVybiB0LnRhcmdldD1udWxsLHUodm9pZCAwLCEwKTtzd2l0Y2godC5raW5kKXtjYXNlImtleXMiOnJldHVybiB1KG4sITEpO2Nhc2UidmFsdWVzIjpyZXR1cm4gdShlW25dLCExKX1yZXR1cm4gdShbbixlW25dXSwhMSl9KSwidmFsdWVzIik7dmFyIHY9by5Bcmd1bWVudHM9by5BcnJheTtpZihpKCJrZXlzIiksaSgidmFsdWVzIiksaSgiZW50cmllcyIpLCFsJiZmJiYidmFsdWVzIiE9PXYubmFtZSl0cnl7cyh2LCJuYW1lIix7dmFsdWU6InZhbHVlcyJ9KX1jYXRjaChnKXt9fSxlMjY3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZTMzMCIpLGk9bigiZThiNSIpLG89bigiMTYyNiIpLGE9bigiYzZiNiIpLHM9bigiNTc3ZSIpLGM9cihbXS5wdXNoKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYobyh0KSlyZXR1cm4gdDtpZihpKHQpKXtmb3IodmFyIGU9dC5sZW5ndGgsbj1bXSxyPTA7cjxlO3IrKyl7dmFyIHU9dFtyXTsic3RyaW5nIj09dHlwZW9mIHU/YyhuLHUpOiJudW1iZXIiIT10eXBlb2YgdSYmIk51bWJlciIhPT1hKHUpJiYiU3RyaW5nIiE9PWEodSl8fGMobixzKHUpKX12YXIgbD1uLmxlbmd0aCxmPSEwO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKGYpcmV0dXJuIGY9ITEsZTtpZihpKHRoaXMpKXJldHVybiBlO2Zvcih2YXIgcj0wO3I8bDtyKyspaWYobltyXT09PXQpcmV0dXJuIGV9fX19LGUzMzA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI0MGQ1IiksaT1GdW5jdGlvbi5wcm90b3R5cGUsbz1pLmNhbGwsYT1yJiZpLmJpbmQuYmluZChvLG8pO3QuZXhwb3J0cz1yP2E6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG8uYXBwbHkodCxhcmd1bWVudHMpfX19LGUzOTE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI1NzdlIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PXQ/YXJndW1lbnRzLmxlbmd0aDwyPyIiOmU6cih0KX19LGU0Mzk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJkMDM5Iiksbz1uKCJmYzZhIiksYT1uKCIwNmNmIikuZixzPW4oIjgzYWIiKSxjPSFzfHxpKChmdW5jdGlvbigpe2EoMSl9KSk7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOmMsc2hhbTohc30se2dldE93blByb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbih0LGUpe3JldHVybiBhKG8odCksZSl9fSl9LGU1Mzg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJiNjIyIik7ZS5mPXJ9LGU1OGM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyYmE0IiksaT1uKCJmYzZhIiksbz1uKCI1OTI2IiksYT1uKCIwN2ZhIikscz1uKCJhNjQwIiksYz1NYXRoLm1pbix1PVtdLmxhc3RJbmRleE9mLGw9ISF1JiYxL1sxXS5sYXN0SW5kZXhPZigxLC0wKTwwLGY9cygibGFzdEluZGV4T2YiKSxkPWx8fCFmO3QuZXhwb3J0cz1kP2Z1bmN0aW9uKHQpe2lmKGwpcmV0dXJuIHIodSx0aGlzLGFyZ3VtZW50cyl8fDA7dmFyIGU9aSh0aGlzKSxuPWEoZSk7aWYoMD09PW4pcmV0dXJuLTE7dmFyIHM9bi0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJihzPWMocyxvKGFyZ3VtZW50c1sxXSkpKSxzPDAmJihzPW4rcyk7cz49MDtzLS0paWYocyBpbiBlJiZlW3NdPT09dClyZXR1cm4gc3x8MDtyZXR1cm4tMX06dX0sZTVjYjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImQwNjYiKSxpPW4oIjFhMmQiKSxvPW4oIjkxMTIiKSxhPW4oIjNhOWIiKSxzPW4oImQyYmIiKSxjPW4oImU4OTMiKSx1PW4oImFlYjAiKSxsPW4oIjcxNTYiKSxmPW4oImUzOTEiKSxkPW4oImFiMzYiKSxoPW4oIjZmMTkiKSxwPW4oIjgzYWIiKSx2PW4oImM0MzAiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sZyl7dmFyIG09InN0YWNrVHJhY2VMaW1pdCIsYj1nPzI6MSx5PXQuc3BsaXQoIi4iKSxfPXlbeS5sZW5ndGgtMV0sdz1yLmFwcGx5KG51bGwseSk7aWYodyl7dmFyIFM9dy5wcm90b3R5cGU7aWYoIXYmJmkoUywiY2F1c2UiKSYmZGVsZXRlIFMuY2F1c2UsIW4pcmV0dXJuIHc7dmFyIHg9cigiRXJyb3IiKSxrPWUoKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZihnP2U6dCx2b2lkIDApLHI9Zz9uZXcgdyh0KTpuZXcgdztyZXR1cm4gdm9pZCAwIT09biYmbyhyLCJtZXNzYWdlIixuKSxoKHIsayxyLnN0YWNrLDIpLHRoaXMmJmEoUyx0aGlzKSYmbChyLHRoaXMsayksYXJndW1lbnRzLmxlbmd0aD5iJiZkKHIsYXJndW1lbnRzW2JdKSxyfSkpO2lmKGsucHJvdG90eXBlPVMsIkVycm9yIiE9PV8/cz9zKGsseCk6YyhrLHgse25hbWU6ITB9KTpwJiZtIGluIHcmJih1KGssdyxtKSx1KGssdywicHJlcGFyZVN0YWNrVHJhY2UiKSksYyhrLHcpLCF2KXRyeXtTLm5hbWUhPT1fJiZvKFMsIm5hbWUiLF8pLFMuY29uc3RydWN0b3I9a31jYXRjaChDKXt9cmV0dXJuIGt9fX0sZTY2NzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJue2Vycm9yOiExLHZhbHVlOnQoKX19Y2F0Y2goZSl7cmV0dXJue2Vycm9yOiEwLHZhbHVlOmV9fX19LGU2Y2Y6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKCI1ZTdlIiksbigiMTRlNSIpLG4oImNjOTgiKSxuKCIzNTI5IiksbigiZjIyYiIpLG4oIjcxNDkiKX0sZTg5MzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjFhMmQiKSxpPW4oIjU2ZWYiKSxvPW4oIjA2Y2YiKSxhPW4oIjliZjIiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcz1pKGUpLGM9YS5mLHU9by5mLGw9MDtsPHMubGVuZ3RoO2wrKyl7dmFyIGY9c1tsXTtyKHQsZil8fG4mJnIobixmKXx8Yyh0LGYsdShlLGYpKX19fSxlOGI1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYzZiNiIpO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iQXJyYXkiPT09cih0KX19LGU5MWY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlYmI1IiksaT1uKCI0ZDY0IikuaW5kZXhPZixvPXIuYVR5cGVkQXJyYXksYT1yLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7YSgiaW5kZXhPZiIsKGZ1bmN0aW9uKHQpe3JldHVybiBpKG8odGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSl9LGU5NWE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJiNjIyIiksaT1uKCIzZjhjIiksbz1yKCJpdGVyYXRvciIpLGE9QXJyYXkucHJvdG90eXBlO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dCYmKGkuQXJyYXk9PT10fHxhW29dPT09dCl9fSxlOWJjOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZGMxOSIpLGk9bigiY2IyNyIpLmFkZCxvPW4oIjgzYjkiKSxhPW4oIjdmNjUiKSxzPW4oIjUzODgiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9cih0aGlzKSxuPWEodCkuZ2V0SXRlcmF0b3IoKSxjPW8oZSk7cmV0dXJuIHMobiwoZnVuY3Rpb24odCl7aShjLHQpfSkpLGN9fSxlOWM0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiZDA2NiIpLG89bigiMmJhNCIpLGE9bigiYzY1YiIpLHM9bigiZTMzMCIpLGM9bigiZDAzOSIpLHU9bigiMTYyNiIpLGw9bigiZDliNSIpLGY9bigiZjM2YSIpLGQ9bigiZTI2NyIpLGg9bigiMDRmOCIpLHA9U3RyaW5nLHY9aSgiSlNPTiIsInN0cmluZ2lmeSIpLGc9cygvLi8uZXhlYyksbT1zKCIiLmNoYXJBdCksYj1zKCIiLmNoYXJDb2RlQXQpLHk9cygiIi5yZXBsYWNlKSxfPXMoMS4xLnRvU3RyaW5nKSx3PS9bXHVEODAwLVx1REZGRl0vZyxTPS9eW1x1RDgwMC1cdURCRkZdJC8seD0vXltcdURDMDAtXHVERkZGXSQvLGs9IWh8fGMoKGZ1bmN0aW9uKCl7dmFyIHQ9aSgiU3ltYm9sIikoInN0cmluZ2lmeSBkZXRlY3Rpb24iKTtyZXR1cm4iW251bGxdIiE9PXYoW3RdKXx8Int9IiE9PXYoe2E6dH0pfHwie30iIT09dihPYmplY3QodCkpfSkpLEM9YygoZnVuY3Rpb24oKXtyZXR1cm4nIlxcdWRmMDZcXHVkODM0IichPT12KCJcdWRmMDZcdWQ4MzQiKXx8JyJcXHVkZWFkIichPT12KCJcdWRlYWQiKX0pKSxUPWZ1bmN0aW9uKHQsZSl7dmFyIG49Zihhcmd1bWVudHMpLHI9ZChlKTtpZih1KHIpfHx2b2lkIDAhPT10JiYhbCh0KSlyZXR1cm4gblsxXT1mdW5jdGlvbih0LGUpe2lmKHUocikmJihlPWEocix0aGlzLHAodCksZSkpLCFsKGUpKXJldHVybiBlfSxvKHYsbnVsbCxuKX0sTz1mdW5jdGlvbih0LGUsbil7dmFyIHI9bShuLGUtMSksaT1tKG4sZSsxKTtyZXR1cm4gZyhTLHQpJiYhZyh4LGkpfHxnKHgsdCkmJiFnKFMscik/IlxcdSIrXyhiKHQsMCksMTYpOnR9O3YmJnIoe3RhcmdldDoiSlNPTiIsc3RhdDohMCxhcml0eTozLGZvcmNlZDprfHxDfSx7c3RyaW5naWZ5OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1mKGFyZ3VtZW50cyksaT1vKGs/VDp2LG51bGwscik7cmV0dXJuIEMmJiJzdHJpbmciPT10eXBlb2YgaT95KGksdyxPKTppfX0pfSxlOWY1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMjNlNyIpLGk9bigiY2ZlOSIpLG89bigiMTlhYSIpLGE9bigiODI1YSIpLHM9bigiMTYyNiIpLGM9bigiZTE2MyIpLHU9bigiZWRkMCIpLGw9bigiODQxOCIpLGY9bigiZDAzOSIpLGQ9bigiMWEyZCIpLGg9bigiYjYyMiIpLHA9bigiYWU5MyIpLkl0ZXJhdG9yUHJvdG90eXBlLHY9bigiODNhYiIpLGc9bigiYzQzMCIpLG09ImNvbnN0cnVjdG9yIixiPSJJdGVyYXRvciIseT1oKCJ0b1N0cmluZ1RhZyIpLF89VHlwZUVycm9yLHc9aVtiXSxTPWd8fCFzKHcpfHx3LnByb3RvdHlwZSE9PXB8fCFmKChmdW5jdGlvbigpe3coe30pfSkpLHg9ZnVuY3Rpb24oKXtpZihvKHRoaXMscCksYyh0aGlzKT09PXApdGhyb3cgbmV3IF8oIkFic3RyYWN0IGNsYXNzIEl0ZXJhdG9yIG5vdCBkaXJlY3RseSBjb25zdHJ1Y3RhYmxlIil9LGs9ZnVuY3Rpb24odCxlKXt2P3UocCx0LHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV9LHNldDpmdW5jdGlvbihlKXtpZihhKHRoaXMpLHRoaXM9PT1wKXRocm93IG5ldyBfKCJZb3UgY2FuJ3QgcmVkZWZpbmUgdGhpcyBwcm9wZXJ0eSIpO2QodGhpcyx0KT90aGlzW3RdPWU6bCh0aGlzLHQsZSl9fSk6cFt0XT1lfTtkKHAseSl8fGsoeSxiKSwhUyYmZChwLG0pJiZwW21dIT09T2JqZWN0fHxrKG0seCkseC5wcm90b3R5cGU9cCxyKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOlN9LHtJdGVyYXRvcjp4fSl9LGVhODM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJiNWRiIiksaT1yLm1hdGNoKC9BcHBsZVdlYktpdFwvKFxkKylcLi8pO3QuZXhwb3J0cz0hIWkmJitpWzFdfSxlYWM1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiODYxZCIpLGk9TWF0aC5mbG9vcjt0LmV4cG9ydHM9TnVtYmVyLmlzSW50ZWdlcnx8ZnVuY3Rpb24odCl7cmV0dXJuIXIodCkmJmlzRmluaXRlKHQpJiZpKHQpPT09dH19LGViYjU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixpLG8sYT1uKCI0YjExIikscz1uKCI4M2FiIiksYz1uKCJjZmU5IiksdT1uKCIxNjI2IiksbD1uKCI4NjFkIiksZj1uKCIxYTJkIiksZD1uKCJmNWRmIiksaD1uKCIwZDUxIikscD1uKCI5MTEyIiksdj1uKCJjYjJkIiksZz1uKCJlZGQwIiksbT1uKCIzYTliIiksYj1uKCJlMTYzIikseT1uKCJkMmJiIiksXz1uKCJiNjIyIiksdz1uKCI5MGUzIiksUz1uKCI2OWYzIikseD1TLmVuZm9yY2Usaz1TLmdldCxDPWMuSW50OEFycmF5LFQ9QyYmQy5wcm90b3R5cGUsTz1jLlVpbnQ4Q2xhbXBlZEFycmF5LEE9TyYmTy5wcm90b3R5cGUsRT1DJiZiKEMpLGo9VCYmYihUKSxNPU9iamVjdC5wcm90b3R5cGUsST1jLlR5cGVFcnJvcixQPV8oInRvU3RyaW5nVGFnIiksJD13KCJUWVBFRF9BUlJBWV9UQUciKSxMPSJUeXBlZEFycmF5Q29uc3RydWN0b3IiLFI9YSYmISF5JiYiT3BlcmEiIT09ZChjLm9wZXJhKSxOPSExLEQ9e0ludDhBcnJheToxLFVpbnQ4QXJyYXk6MSxVaW50OENsYW1wZWRBcnJheToxLEludDE2QXJyYXk6MixVaW50MTZBcnJheToyLEludDMyQXJyYXk6NCxVaW50MzJBcnJheTo0LEZsb2F0MzJBcnJheTo0LEZsb2F0NjRBcnJheTo4fSxCPXtCaWdJbnQ2NEFycmF5OjgsQmlnVWludDY0QXJyYXk6OH0sRj1mdW5jdGlvbih0KXtpZighbCh0KSlyZXR1cm4hMTt2YXIgZT1kKHQpO3JldHVybiJEYXRhVmlldyI9PT1lfHxmKEQsZSl8fGYoQixlKX0sej1mdW5jdGlvbih0KXt2YXIgZT1iKHQpO2lmKGwoZSkpe3ZhciBuPWsoZSk7cmV0dXJuIG4mJmYobixMKT9uW0xdOnooZSl9fSxXPWZ1bmN0aW9uKHQpe2lmKCFsKHQpKXJldHVybiExO3ZhciBlPWQodCk7cmV0dXJuIGYoRCxlKXx8ZihCLGUpfSxIPWZ1bmN0aW9uKHQpe2lmKFcodCkpcmV0dXJuIHQ7dGhyb3cgbmV3IEkoIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSIpfSxVPWZ1bmN0aW9uKHQpe2lmKHUodCkmJigheXx8bShFLHQpKSlyZXR1cm4gdDt0aHJvdyBuZXcgSShoKHQpKyIgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IiKX0scT1mdW5jdGlvbih0LGUsbixyKXtpZihzKXtpZihuKWZvcih2YXIgaSBpbiBEKXt2YXIgbz1jW2ldO2lmKG8mJmYoby5wcm90b3R5cGUsdCkpdHJ5e2RlbGV0ZSBvLnByb3RvdHlwZVt0XX1jYXRjaChhKXt0cnl7by5wcm90b3R5cGVbdF09ZX1jYXRjaCh1KXt9fX1qW3RdJiYhbnx8dihqLHQsbj9lOlImJlRbdF18fGUscil9fSxWPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpO2lmKHMpe2lmKHkpe2lmKG4pZm9yKHIgaW4gRClpZihpPWNbcl0saSYmZihpLHQpKXRyeXtkZWxldGUgaVt0XX1jYXRjaChvKXt9aWYoRVt0XSYmIW4pcmV0dXJuO3RyeXtyZXR1cm4gdihFLHQsbj9lOlImJkVbdF18fGUpfWNhdGNoKG8pe319Zm9yKHIgaW4gRClpPWNbcl0sIWl8fGlbdF0mJiFufHx2KGksdCxlKX19O2ZvcihyIGluIEQpaT1jW3JdLG89aSYmaS5wcm90b3R5cGUsbz94KG8pW0xdPWk6Uj0hMTtmb3IociBpbiBCKWk9Y1tyXSxvPWkmJmkucHJvdG90eXBlLG8mJih4KG8pW0xdPWkpO2lmKCghUnx8IXUoRSl8fEU9PT1GdW5jdGlvbi5wcm90b3R5cGUpJiYoRT1mdW5jdGlvbigpe3Rocm93IG5ldyBJKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfSxSKSlmb3IociBpbiBEKWNbcl0mJnkoY1tyXSxFKTtpZigoIVJ8fCFqfHxqPT09TSkmJihqPUUucHJvdG90eXBlLFIpKWZvcihyIGluIEQpY1tyXSYmeShjW3JdLnByb3RvdHlwZSxqKTtpZihSJiZiKEEpIT09aiYmeShBLGopLHMmJiFmKGosUCkpZm9yKHIgaW4gTj0hMCxnKGosUCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBsKHRoaXMpP3RoaXNbJF06dm9pZCAwfX0pLEQpY1tyXSYmcChjW3JdLCQscik7dC5leHBvcnRzPXtOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTOlIsVFlQRURfQVJSQVlfVEFHOk4mJiQsYVR5cGVkQXJyYXk6SCxhVHlwZWRBcnJheUNvbnN0cnVjdG9yOlUsZXhwb3J0VHlwZWRBcnJheU1ldGhvZDpxLGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q6VixnZXRUeXBlZEFycmF5Q29uc3RydWN0b3I6eixpc1ZpZXc6Rixpc1R5cGVkQXJyYXk6VyxUeXBlZEFycmF5OkUsVHlwZWRBcnJheVByb3RvdHlwZTpqfX0sZWJjMTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImI1ZGIiKTt0LmV4cG9ydHM9L2lwYWR8aXBob25lfGlwb2QvaS50ZXN0KHIpJiYidW5kZWZpbmVkIiE9dHlwZW9mIFBlYmJsZX0sZWM4NzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImI1ZGIiKTt0LmV4cG9ydHM9L3dlYjBzKD8hLipjaHJvbWUpL2kudGVzdChyKX0sZWRkMDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjEzZDIiKSxpPW4oIjliZjIiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBuLmdldCYmcihuLmdldCxlLHtnZXR0ZXI6ITB9KSxuLnNldCYmcihuLnNldCxlLHtzZXR0ZXI6ITB9KSxpLmYodCxlLG4pfX0sZWZlYzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjFhMmQiKSxpPW4oImNiMmQiKSxvPW4oIjUxZWIiKSxhPW4oImI2MjIiKSxzPWEoInRvUHJpbWl0aXZlIiksYz1EYXRlLnByb3RvdHlwZTtyKGMscyl8fGkoYyxzLG8pfSxmMDI2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJ5eXl5LW1tLWRkIjt0fHwodD1OdW1iZXIobmV3IERhdGUpKSwxMD09dC50b1N0cmluZygpLmxlbmd0aCYmKHQqPTFlMyk7dmFyIG4scj1uZXcgRGF0ZSh0KSxpPXsieSsiOnIuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpLCJtKyI6KHIuZ2V0TW9udGgoKSsxKS50b1N0cmluZygpLCJkKyI6ci5nZXREYXRlKCkudG9TdHJpbmcoKSwiaCsiOnIuZ2V0SG91cnMoKS50b1N0cmluZygpLCJNKyI6ci5nZXRNaW51dGVzKCkudG9TdHJpbmcoKSwicysiOnIuZ2V0U2Vjb25kcygpLnRvU3RyaW5nKCl9O2Zvcih2YXIgbyBpbiBpKW49bmV3IFJlZ0V4cCgiKCIrbysiKSIpLmV4ZWMoZSksbiYmKGU9ZS5yZXBsYWNlKG5bMV0sMT09blsxXS5sZW5ndGg/aVtvXTppW29dLnBhZFN0YXJ0KG5bMV0ubGVuZ3RoLCIwIikpKTtyZXR1cm4gZX1uKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDAsbigiZDllMiIpLG4oImQ0MDEiKSxuKCJmYjZhIiksbigiYTllMyIpLG4oImQzYjciKSxuKCI0ZDYzIiksbigiYzYwNyIpLG4oImFjMWYiKSxuKCIyYzNlIiksbigiMjVmMCIpLG4oIjRkOTAiKSxuKCI1MzE5IiksU3RyaW5nLnByb3RvdHlwZS5wYWRTdGFydHx8KFN0cmluZy5wcm90b3R5cGUucGFkU3RhcnQ9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiIgIjtpZigiW29iamVjdCBTdHJpbmddIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJmaWxsU3RyaW5nIG11c3QgYmUgU3RyaW5nIik7dmFyIG49dGhpcztpZihuLmxlbmd0aD49dClyZXR1cm4gU3RyaW5nKG4pO3ZhciByPXQtbi5sZW5ndGgsaT1NYXRoLmNlaWwoci9lLmxlbmd0aCk7d2hpbGUoaT4+PTEpZSs9ZSwxPT09aSYmKGUrPWUpO3JldHVybiBlLnNsaWNlKDAscikrbn0pO2UuZGVmYXVsdD1yfSxmMDY5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNTllZCIpLGk9VHlwZUVycm9yLG89ZnVuY3Rpb24odCl7dmFyIGUsbjt0aGlzLnByb21pc2U9bmV3IHQoKGZ1bmN0aW9uKHQscil7aWYodm9pZCAwIT09ZXx8dm9pZCAwIT09bil0aHJvdyBuZXcgaSgiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTtlPXQsbj1yfSkpLHRoaXMucmVzb2x2ZT1yKGUpLHRoaXMucmVqZWN0PXIobil9O3QuZXhwb3J0cy5mPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbyh0KX19LGYwYzU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSxuLHIsaSxvLGEscyxjLHUpe3ZhciBsLGY9ImZ1bmN0aW9uIj09PXR5cGVvZiB0P3Qub3B0aW9uczp0O2lmKGMpe2YuY29tcG9uZW50c3x8KGYuY29tcG9uZW50cz17fSk7dmFyIGQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmb3IodmFyIGggaW4gYylkLmNhbGwoYyxoKSYmIWQuY2FsbChmLmNvbXBvbmVudHMsaCkmJihmLmNvbXBvbmVudHNbaF09Y1toXSl9aWYodSYmKCJmdW5jdGlvbiI9PT10eXBlb2YgdS5iZWZvcmVDcmVhdGUmJih1LmJlZm9yZUNyZWF0ZT1bdS5iZWZvcmVDcmVhdGVdKSwodS5iZWZvcmVDcmVhdGV8fCh1LmJlZm9yZUNyZWF0ZT1bXSkpLnVuc2hpZnQoKGZ1bmN0aW9uKCl7dGhpc1t1Ll9fbW9kdWxlXT10aGlzfSkpLChmLm1peGluc3x8KGYubWl4aW5zPVtdKSkucHVzaCh1KSksZSYmKGYucmVuZGVyPWUsZi5zdGF0aWNSZW5kZXJGbnM9bixmLl9jb21waWxlZD0hMCksciYmKGYuZnVuY3Rpb25hbD0hMCksbyYmKGYuX3Njb3BlSWQ9ImRhdGEtdi0iK28pLGE/KGw9ZnVuY3Rpb24odCl7dD10fHx0aGlzLiR2bm9kZSYmdGhpcy4kdm5vZGUuc3NyQ29udGV4dHx8dGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LiR2bm9kZSYmdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQsdHx8InVuZGVmaW5lZCI9PT10eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfX3x8KHQ9X19WVUVfU1NSX0NPTlRFWFRfXyksaSYmaS5jYWxsKHRoaXMsdCksdCYmdC5fcmVnaXN0ZXJlZENvbXBvbmVudHMmJnQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChhKX0sZi5fc3NyUmVnaXN0ZXI9bCk6aSYmKGw9cz9mdW5jdGlvbigpe2kuY2FsbCh0aGlzLHRoaXMuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdCl9OmkpLGwpaWYoZi5mdW5jdGlvbmFsKXtmLl9pbmplY3RTdHlsZXM9bDt2YXIgcD1mLnJlbmRlcjtmLnJlbmRlcj1mdW5jdGlvbih0LGUpe3JldHVybiBsLmNhbGwoZSkscCh0LGUpfX1lbHNle3ZhciB2PWYuYmVmb3JlQ3JlYXRlO2YuYmVmb3JlQ3JlYXRlPXY/W10uY29uY2F0KHYsbCk6W2xdfXJldHVybntleHBvcnRzOnQsb3B0aW9uczpmfX1uLmQoZSwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSl9LGYxODM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJlMzMwIiksbz1uKCJkMDEyIiksYT1uKCI4NjFkIikscz1uKCIxYTJkIiksYz1uKCI5YmYyIikuZix1PW4oIjI0MWMiKSxsPW4oIjA1N2YiKSxmPW4oIjRmYWQiKSxkPW4oIjkwZTMiKSxoPW4oImJiMmYiKSxwPSExLHY9ZCgibWV0YSIpLGc9MCxtPWZ1bmN0aW9uKHQpe2ModCx2LHt2YWx1ZTp7b2JqZWN0SUQ6Ik8iK2crKyx3ZWFrRGF0YTp7fX19KX0sYj1mdW5jdGlvbih0LGUpe2lmKCFhKHQpKXJldHVybiJzeW1ib2wiPT10eXBlb2YgdD90Oigic3RyaW5nIj09dHlwZW9mIHQ/IlMiOiJQIikrdDtpZighcyh0LHYpKXtpZighZih0KSlyZXR1cm4iRiI7aWYoIWUpcmV0dXJuIkUiO20odCl9cmV0dXJuIHRbdl0ub2JqZWN0SUR9LHk9ZnVuY3Rpb24odCxlKXtpZighcyh0LHYpKXtpZighZih0KSlyZXR1cm4hMDtpZighZSlyZXR1cm4hMTttKHQpfXJldHVybiB0W3ZdLndlYWtEYXRhfSxfPWZ1bmN0aW9uKHQpe3JldHVybiBoJiZwJiZmKHQpJiYhcyh0LHYpJiZtKHQpLHR9LHc9ZnVuY3Rpb24oKXtTLmVuYWJsZT1mdW5jdGlvbigpe30scD0hMDt2YXIgdD11LmYsZT1pKFtdLnNwbGljZSksbj17fTtuW3ZdPTEsdChuKS5sZW5ndGgmJih1LmY9ZnVuY3Rpb24obil7Zm9yKHZhciByPXQobiksaT0wLG89ci5sZW5ndGg7aTxvO2krKylpZihyW2ldPT09dil7ZShyLGksMSk7YnJlYWt9cmV0dXJuIHJ9LHIoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDohMH0se2dldE93blByb3BlcnR5TmFtZXM6bC5mfSkpfSxTPXQuZXhwb3J0cz17ZW5hYmxlOncsZmFzdEtleTpiLGdldFdlYWtEYXRhOnksb25GcmVlemU6X307b1t2XT0hMH0sZjIyYjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImYwNjkiKSxvPW4oIjQ3MzgiKS5DT05TVFJVQ1RPUjtyKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITAsZm9yY2VkOm99LHtyZWplY3Q6ZnVuY3Rpb24odCl7dmFyIGU9aS5mKHRoaXMpLG49ZS5yZWplY3Q7cmV0dXJuIG4odCksZS5wcm9taXNlfX0pfSxmMzU0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZDAzOSIpLGk9bigiYjYyMiIpLG89bigiODNhYiIpLGE9bigiYzQzMCIpLHM9aSgiaXRlcmF0b3IiKTt0LmV4cG9ydHM9IXIoKGZ1bmN0aW9uKCl7dmFyIHQ9bmV3IFVSTCgiYj9hPTEmYj0yJmM9MyIsImh0dHBzOi8vYSIpLGU9dC5zZWFyY2hQYXJhbXMsbj1uZXcgVVJMU2VhcmNoUGFyYW1zKCJhPTEmYT0yJmI9MyIpLHI9IiI7cmV0dXJuIHQucGF0aG5hbWU9ImMlMjBkIixlLmZvckVhY2goKGZ1bmN0aW9uKHQsbil7ZVsiZGVsZXRlIl0oImIiKSxyKz1uK3R9KSksblsiZGVsZXRlIl0oImEiLDIpLG5bImRlbGV0ZSJdKCJiIix2b2lkIDApLGEmJighdC50b0pTT058fCFuLmhhcygiYSIsMSl8fG4uaGFzKCJhIiwyKXx8IW4uaGFzKCJhIix2b2lkIDApfHxuLmhhcygiYiIpKXx8IWUuc2l6ZSYmKGF8fCFvKXx8IWUuc29ydHx8Imh0dHBzOi8vYS9jJTIwZD9hPTEmYz0zIiE9PXQuaHJlZnx8IjMiIT09ZS5nZXQoImMiKXx8ImE9MSIhPT1TdHJpbmcobmV3IFVSTFNlYXJjaFBhcmFtcygiP2E9MSIpKXx8IWVbc118fCJhIiE9PW5ldyBVUkwoImh0dHBzOi8vYUBiIikudXNlcm5hbWV8fCJiIiE9PW5ldyBVUkxTZWFyY2hQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcygiYT1iIikpLmdldCgiYSIpfHwieG4tLWUxYXliYyIhPT1uZXcgVVJMKCJodHRwczovL9GC0LXRgdGCIikuaG9zdHx8IiMlRDAlQjEiIT09bmV3IFVSTCgiaHR0cHM6Ly9hI9CxIikuaGFzaHx8ImExYzMiIT09cnx8IngiIT09bmV3IFVSTCgiaHR0cHM6Ly94Iix2b2lkIDApLmhvc3R9KSl9LGYzNmE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJlMzMwIik7dC5leHBvcnRzPXIoW10uc2xpY2UpfSxmNDk1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYzA0ZSIpLGk9VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1yKHQsIm51bWJlciIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl0aHJvdyBuZXcgaSgiQ2FuJ3QgY29udmVydCBudW1iZXIgdG8gYmlnaW50Iik7cmV0dXJuIEJpZ0ludChlKX19LGY0YjM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJkMDM5Iiksbz1uKCI3YjBiIiksYT1uKCJjMDRlIikscz1pKChmdW5jdGlvbigpe3JldHVybiBudWxsIT09bmV3IERhdGUoTmFOKS50b0pTT04oKXx8MSE9PURhdGUucHJvdG90eXBlLnRvSlNPTi5jYWxsKHt0b0lTT1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAxfX0pfSkpO3Ioe3RhcmdldDoiRGF0ZSIscHJvdG86ITAsYXJpdHk6MSxmb3JjZWQ6c30se3RvSlNPTjpmdW5jdGlvbih0KXt2YXIgZT1vKHRoaXMpLG49YShlLCJudW1iZXIiKTtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIG58fGlzRmluaXRlKG4pP2UudG9JU09TdHJpbmcoKTpudWxsfX0pfSxmNWRmOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMDBlZSIpLGk9bigiMTYyNiIpLG89bigiYzZiNiIpLGE9bigiYjYyMiIpLHM9YSgidG9TdHJpbmdUYWciKSxjPU9iamVjdCx1PSJBcmd1bWVudHMiPT09byhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpLGw9ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbZV19Y2F0Y2gobil7fX07dC5leHBvcnRzPXI/bzpmdW5jdGlvbih0KXt2YXIgZSxuLHI7cmV0dXJuIHZvaWQgMD09PXQ/IlVuZGVmaW5lZCI6bnVsbD09PXQ/Ik51bGwiOiJzdHJpbmciPT10eXBlb2Yobj1sKGU9Yyh0KSxzKSk/bjp1P28oZSk6Ik9iamVjdCI9PT0ocj1vKGUpKSYmaShlLmNhbGxlZSk/IkFyZ3VtZW50cyI6cn19LGY2NjU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJjNjViIiksbz1uKCIyMjY2IiksYT1uKCI1OWVkIikscz1uKCI4MjVhIiksYz1uKCI0NmM0IiksdT1uKCIyYTYyIiksbD1uKCJmOTlmIiksZj1sKCJmaW5kIixUeXBlRXJyb3IpO3Ioe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmZ9LHtmaW5kOmZ1bmN0aW9uKHQpe3ModGhpcyk7dHJ5e2EodCl9Y2F0Y2gocil7dSh0aGlzLCJ0aHJvdyIscil9aWYoZilyZXR1cm4gaShmLHRoaXMsdCk7dmFyIGU9Yyh0aGlzKSxuPTA7cmV0dXJuIG8oZSwoZnVuY3Rpb24oZSxyKXtpZih0KGUsbisrKSlyZXR1cm4gcihlKX0pLHtJU19SRUNPUkQ6ITAsSU5URVJSVVBURUQ6ITB9KS5yZXN1bHR9fSl9LGY2OWQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI4NjFkIiksaT1TdHJpbmcsbz1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXR8fHIodCkpcmV0dXJuIHQ7dGhyb3cgbmV3IG8oaSh0KSsiIGlzIG5vdCBhbiBvYmplY3Qgb3IgdW5kZWZpbmVkIil9fSxmNmE3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bigiN2E4MiIpO3ZhciByPW4oIjRlYTQiKS5kZWZhdWx0O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmRlZmF1bHQ9dm9pZCAwO3ZhciBpPXIobigiNTNjYSIpKTtmdW5jdGlvbiBvKHQpe3JldHVybi9bXHchIyQlJicqKy89P15fYHt8fX4tXSsoPzpcLltcdyEjJCUmJyorLz0/Xl9ge3x9fi1dKykqQCg/Oltcd10oPzpbXHctXSpbXHddKT9cLikrW1x3XSg/Oltcdy1dKltcd10pPy8udGVzdCh0KX1mdW5jdGlvbiBhKHQpe3JldHVybi9eMVszLTldXGR7OX0kLy50ZXN0KHQpfWZ1bmN0aW9uIHModCl7cmV0dXJuL2h0dHAocyk/OlwvXC8oW1x3LV0rXC4pK1tcdy1dKyhcL1tcdy0uXC8/JSY9XSopPy8udGVzdCh0KX1mdW5jdGlvbiBjKHQpe3JldHVybiEvSW52YWxpZHxOYU4vLnRlc3QobmV3IERhdGUodCkudG9TdHJpbmcoKSl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4vXlxkezR9W1wvXC1dKDA/WzEtOV18MVswMTJdKVtcL1wtXSgwP1sxLTldfFsxMl1bMC05XXwzWzAxXSkkLy50ZXN0KHQpfWZ1bmN0aW9uIGwodCl7cmV0dXJuL15bXCstXT8oXGQrXC4/XGQqfFwuXGQrfFxkXC5cZCtlXCtcZCspJC8udGVzdCh0KX1mdW5jdGlvbiBmKHQpe3JldHVybi9eXGQrJC8udGVzdCh0KX1mdW5jdGlvbiBkKHQpe3JldHVybi9eWzEtOV1cZHs1fVsxLTldXGR7M30oKDBcZCl8KDFbMC0yXSkpKChbMHwxfDJdXGQpfDNbMC0xXSlcZHszfShbMC05XXxYKSQvLnRlc3QodCl9ZnVuY3Rpb24gaCh0KXt2YXIgZT0vXlvkuqzmtKXmsqrmuJ3lhoDosavkupHovr3pu5HmuZjnmpbpsoHmlrDoi4/mtZnotaPphILmoYLnlJjmmYvokpnpmZXlkInpl73otLXnsqTpnZLol4/lt53lroHnkLzkvb/pooZBLVpdezF9W0EtWl17MX0oKFswLTldezV9W0RGXSQpfChbREZdW0EtSEotTlAtWjAtOV1bMC05XXs0fSQpKS8sbj0vXlvkuqzmtKXmsqrmuJ3lhoDosavkupHovr3pu5HmuZjnmpbpsoHmlrDoi4/mtZnotaPphILmoYLnlJjmmYvokpnpmZXlkInpl73otLXnsqTpnZLol4/lt53lroHnkLzkvb/pooZBLVpdezF9W0EtWl17MX1bQS1ISi1OUC1aMC05XXs0fVtBLUhKLU5QLVowLTnmjILlraborabmuK/mvrNdezF9JC87cmV0dXJuIDc9PT10Lmxlbmd0aD9uLnRlc3QodCk6OD09PXQubGVuZ3RoJiZlLnRlc3QodCl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4vXlsxLTldXGQqKCxcZHszfSkqKFwuXGR7MSwyfSk/JHxeMFwuXGR7MSwyfSQvLnRlc3QodCl9ZnVuY3Rpb24gdih0KXt2YXIgZT0vXltcdTRlMDAtXHU5ZmE1XSskL2dpO3JldHVybiBlLnRlc3QodCl9ZnVuY3Rpb24gZyh0KXtyZXR1cm4vXlthLXpBLVpdKiQvLnRlc3QodCl9ZnVuY3Rpb24gbSh0KXt2YXIgZT0vXlswLTlhLXpBLVpdKiQvZztyZXR1cm4gZS50ZXN0KHQpfWZ1bmN0aW9uIGIodCxlKXtyZXR1cm4gdC5pbmRleE9mKGUpPj0wfWZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gdD49ZVswXSYmdDw9ZVsxXX1mdW5jdGlvbiBfKHQsZSl7cmV0dXJuIHQubGVuZ3RoPj1lWzBdJiZ0Lmxlbmd0aDw9ZVsxXX1mdW5jdGlvbiB3KHQpe3ZhciBlPS9eXGR7Myw0fS1cZHs3LDh9KC1cZHszLDR9KT8kLztyZXR1cm4gZS50ZXN0KHQpfWZ1bmN0aW9uIFModCl7c3dpdGNoKCgwLGkuZGVmYXVsdCkodCkpe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4hMDtjYXNlInN0cmluZyI6aWYoMD09dC5yZXBsYWNlKC8oXlsgXHRcblxyXSopfChbIFx0XG5ccl0qJCkvZywiIikubGVuZ3RoKXJldHVybiEwO2JyZWFrO2Nhc2UiYm9vbGVhbiI6aWYoIXQpcmV0dXJuITA7YnJlYWs7Y2FzZSJudW1iZXIiOmlmKDA9PT10fHxpc05hTih0KSlyZXR1cm4hMDticmVhaztjYXNlIm9iamVjdCI6aWYobnVsbD09PXR8fDA9PT10Lmxlbmd0aClyZXR1cm4hMDtmb3IodmFyIGUgaW4gdClyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiB4KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl0cnl7dmFyIGU9SlNPTi5wYXJzZSh0KTtyZXR1cm4hKCJvYmplY3QiIT0oMCxpLmRlZmF1bHQpKGUpfHwhZSl9Y2F0Y2gobil7cmV0dXJuITF9cmV0dXJuITF9ZnVuY3Rpb24gayh0KXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIEFycmF5LmlzQXJyYXk/QXJyYXkuaXNBcnJheSh0KToiW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIEModCl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gVCh0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NjtyZXR1cm4gbmV3IFJlZ0V4cCgiXlxcZHsiLmNvbmNhdChlLCJ9JCIpKS50ZXN0KHQpfW4oImQ0MDEiKSxuKCJjOTc1IiksbigiYjY0YiIpLG4oImQzYjciKSxuKCI0ZDYzIiksbigiYzYwNyIpLG4oImFjMWYiKSxuKCIyYzNlIiksbigiMDBiNCIpLG4oIjI1ZjAiKSxuKCI1MzE5Iik7ZS5kZWZhdWx0PXtlbWFpbDpvLG1vYmlsZTphLHVybDpzLGRhdGU6YyxkYXRlSVNPOnUsbnVtYmVyOmwsZGlnaXRzOmYsaWRDYXJkOmQsY2FyTm86aCxhbW91bnQ6cCxjaGluZXNlOnYsbGV0dGVyOmcsZW5Pck51bTptLGNvbnRhaW5zOmIscmFuZ2U6eSxyYW5nZUxlbmd0aDpfLGVtcHR5OlMsaXNFbXB0eTpTLGpzb25TdHJpbmc6eCxsYW5kbGluZTp3LG9iamVjdDpDLGFycmF5OmssY29kZTpUfX0sZjZkNjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImUzMzAiKSxvPW4oIjIzY2IiKSxhPVJhbmdlRXJyb3Iscz1TdHJpbmcuZnJvbUNoYXJDb2RlLGM9U3RyaW5nLmZyb21Db2RlUG9pbnQsdT1pKFtdLmpvaW4pLGw9ISFjJiYxIT09Yy5sZW5ndGg7cih7dGFyZ2V0OiJTdHJpbmciLHN0YXQ6ITAsYXJpdHk6MSxmb3JjZWQ6bH0se2Zyb21Db2RlUG9pbnQ6ZnVuY3Rpb24odCl7dmFyIGUsbj1bXSxyPWFyZ3VtZW50cy5sZW5ndGgsaT0wO3doaWxlKHI+aSl7aWYoZT0rYXJndW1lbnRzW2krK10sbyhlLDExMTQxMTEpIT09ZSl0aHJvdyBuZXcgYShlKyIgaXMgbm90IGEgdmFsaWQgY29kZSBwb2ludCIpO25baV09ZTw2NTUzNj9zKGUpOnMoNTUyOTYrKChlLT02NTUzNik+PjEwKSxlJTEwMjQrNTYzMjApfXJldHVybiB1KG4sIiIpfX0pfSxmNzQ4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPU1hdGguc2lnbnx8ZnVuY3Rpb24odCl7dmFyIGU9K3Q7cmV0dXJuIDA9PT1lfHxlIT09ZT9lOmU8MD8tMToxfX0sZjc3MjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjU2OTIiKSxpPW4oIjkwZTMiKSxvPXIoImtleXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG9bdF18fChvW3RdPWkodCkpfX0sZjgwOTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlKXtpZih0Pj0wJiZlPjAmJmU+PXQpe3ZhciBuPWUtdCsxO3JldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbit0KX1yZXR1cm4gMH1uKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDA7ZS5kZWZhdWx0PXJ9LGY4Yzk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyM2U3IiksaT1uKCJjZmU5Iiksbz1uKCJkNDRlIik7cih7Z2xvYmFsOiEwfSx7UmVmbGVjdDp7fX0pLG8oaS5SZWZsZWN0LCJSZWZsZWN0IiwhMCl9LGY4Y2Q6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI1OTI2IiksaT1SYW5nZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1yKHQpO2lmKGU8MCl0aHJvdyBuZXcgaSgiVGhlIGFyZ3VtZW50IGNhbid0IGJlIGxlc3MgdGhhbiAwIik7cmV0dXJuIGV9fSxmOThmOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MTUwMDt1bmkuc2hvd1RvYXN0KHt0aXRsZTp0LGljb246Im5vbmUiLGR1cmF0aW9uOmV9KX1uKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD12b2lkIDA7ZS5kZWZhdWx0PXJ9LGY5OWY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJjZmU5Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49ci5JdGVyYXRvcixpPW4mJm4ucHJvdG90eXBlLG89aSYmaVt0XSxhPSExO2lmKG8pdHJ5e28uY2FsbCh7bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOiEwfX0scmV0dXJuOmZ1bmN0aW9uKCl7YT0hMH19LC0xKX1jYXRjaChzKXtzIGluc3RhbmNlb2YgZXx8KGE9ITEpfWlmKCFhKXJldHVybiBvfX0sZmI2YTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjIzZTciKSxpPW4oImU4YjUiKSxvPW4oIjY4ZWUiKSxhPW4oIjg2MWQiKSxzPW4oIjIzY2IiKSxjPW4oIjA3ZmEiKSx1PW4oImZjNmEiKSxsPW4oIjg0MTgiKSxmPW4oImI2MjIiKSxkPW4oIjFkZGUiKSxoPW4oImYzNmEiKSxwPWQoInNsaWNlIiksdj1mKCJzcGVjaWVzIiksZz1BcnJheSxtPU1hdGgubWF4O3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohcH0se3NsaWNlOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixmLGQ9dSh0aGlzKSxwPWMoZCksYj1zKHQscCkseT1zKHZvaWQgMD09PWU/cDplLHApO2lmKGkoZCkmJihuPWQuY29uc3RydWN0b3IsbyhuKSYmKG49PT1nfHxpKG4ucHJvdG90eXBlKSk/bj12b2lkIDA6YShuKSYmKG49blt2XSxudWxsPT09biYmKG49dm9pZCAwKSksbj09PWd8fHZvaWQgMD09PW4pKXJldHVybiBoKGQsYix5KTtmb3Iocj1uZXcodm9pZCAwPT09bj9nOm4pKG0oeS1iLDApKSxmPTA7Yjx5O2IrKyxmKyspYiBpbiBkJiZsKHIsZixkW2JdKTtyZXR1cm4gci5sZW5ndGg9ZixyfX0pfSxmYzFiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZjc0OCIpLGk9bigiODJlMyIpLG89TWF0aC5hYnMsYT0yMjIwNDQ2MDQ5MjUwMzEzZS0zMTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4scyl7dmFyIGM9K3QsdT1vKGMpLGw9cihjKTtpZih1PHMpcmV0dXJuIGwqaSh1L3MvZSkqcyplO3ZhciBmPSgxK2UvYSkqdSxkPWYtKGYtdSk7cmV0dXJuIGQ+bnx8ZCE9PWQ/bCooMS8wKTpsKmR9fSxmYzZhOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNDRhZCIpLGk9bigiMWQ4MCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcihpKHQpKX19LGZjZTM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkMDM5IiksaT1uKCJjZmU5Iiksbz1pLlJlZ0V4cDt0LmV4cG9ydHM9cigoZnVuY3Rpb24oKXt2YXIgdD1vKCIuIiwicyIpO3JldHVybiEodC5kb3RBbGwmJnQudGVzdCgiXG4iKSYmInMiPT09dC5mbGFncyl9KSl9LGZkN2Y6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnZvaWQgMCxlPXRoaXMuJHBhcmVudDt3aGlsZShlKXtpZighZS4kb3B0aW9uc3x8ZS4kb3B0aW9ucy5uYW1lPT09dClyZXR1cm4gZTtlPWUuJHBhcmVudH1yZXR1cm4hMX1uKCI3YTgyIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD1yfSxmZGJjOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPXtDU1NSdWxlTGlzdDowLENTU1N0eWxlRGVjbGFyYXRpb246MCxDU1NWYWx1ZUxpc3Q6MCxDbGllbnRSZWN0TGlzdDowLERPTVJlY3RMaXN0OjAsRE9NU3RyaW5nTGlzdDowLERPTVRva2VuTGlzdDoxLERhdGFUcmFuc2Zlckl0ZW1MaXN0OjAsRmlsZUxpc3Q6MCxIVE1MQWxsQ29sbGVjdGlvbjowLEhUTUxDb2xsZWN0aW9uOjAsSFRNTEZvcm1FbGVtZW50OjAsSFRNTFNlbGVjdEVsZW1lbnQ6MCxNZWRpYUxpc3Q6MCxNaW1lVHlwZUFycmF5OjAsTmFtZWROb2RlTWFwOjAsTm9kZUxpc3Q6MSxQYWludFJlcXVlc3RMaXN0OjAsUGx1Z2luOjAsUGx1Z2luQXJyYXk6MCxTVkdMZW5ndGhMaXN0OjAsU1ZHTnVtYmVyTGlzdDowLFNWR1BhdGhTZWdMaXN0OjAsU1ZHUG9pbnRMaXN0OjAsU1ZHU3RyaW5nTGlzdDowLFNWR1RyYW5zZm9ybUxpc3Q6MCxTb3VyY2VCdWZmZXJMaXN0OjAsU3R5bGVTaGVldExpc3Q6MCxUZXh0VHJhY2tDdWVMaXN0OjAsVGV4dFRyYWNrTGlzdDowLFRvdWNoTGlzdDowfX0sZmRiZjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjA0ZjgiKTt0LmV4cG9ydHM9ciYmIVN5bWJvbC5zaGFtJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcn19XSk7"}},"time_used":1320,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":578,"receive":742,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"ultradns","sensor_type":"DNS","title":"DigiCert UltraDNS","description":"DigiCert UltraDNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://vercara.digicert.com/ultra-dns-public","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null},{"sensor_name":"cira_dns","sensor_type":"DNS","title":"CIRA Canadian Shield DNS","description":"CIRA Canadian Shield DNS","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"conversemy.today","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cira.ca/en/canadian-shield/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2026-07-27","alert":"Phishing Block","trigger":"conversemy.today","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null}],"urlquery":null}}]}
